Я создаю приложение на основе распределенной линейной алгебры с использованием Трилино , основная проблема заключается в том, что потребление памяти намного выше, чем ожидалось.
Я создал простой тестовый пример для создания Epetra :: VbrMatrix с 1,5 миллионами пар, сгруппированных в 5 миллионов блоков по 3 пары, что должно быть около 115 МБ.
После построения матрицы на 2 процессорах, по половине данных каждый, я получаю потребление памяти 500 МБ на каждом процессоре, что примерно в 7,5 раз больше данных, для меня это выглядит неоправданно, матрица должна просто иметь несколько целочисленных массивов для определения местоположения. ненулевые блоки.
Я спросил в списке рассылки trilinos-users, они говорят, что использование памяти выглядит слишком высоким, но надеюсь, что здесь вам помогут.
Я тестировал как на своем ноутбуке с Ubuntu + gcc 4.4.5 + Trilinos 10.0, так и на кластере с компилятором PGI и Trilinos 10.4.0, результат примерно одинаков.
Мой тестовый код находится в gist https://gist.github.com/848310,, где я также записал потребление памяти на разных этапах моего тестирования с 2 процессами MPI на моем ноутбуке.
Если у кого-нибудь есть предложения, которые были бы действительно полезны. Также, если бы вы могли просто создавать, запускать и сообщать о потреблении памяти, это было бы здорово.