Супер линейное ускорение - Python - Кластер - Несколько процессов - PullRequest
1 голос
/ 01 апреля 2012

Я распараллелил программу, которая использует довольно большие матрицы. Программа изображает модель Изинга из статистической механики. На моем ноутбуке все работает нормально - даже визуализация показывает поведение, которое я ожидаю. Теперь я хотел посмотреть, как он масштабируется с использованием многих процессоров, поэтому я использовал кластерный компьютер, который у меня под рукой. Ну, я получаю супер линейное ускорение. Сначала я подумал, что это не имеет большого значения, поскольку возможно, что при использовании нескольких процессов размер проблемы уменьшается и, следовательно, может помещаться в кэш. Таким образом, копирование из кэша в оперативную память и обратно не замедлит работу. Тем не менее, я даже получаю супер линейное ускорение для одного процессора. Я бы не ожидал этого. Если вся система (матрица) не помещается в кэш для последовательной версии, то она также не должна вписываться в нее, используя параллельную версию только с одним процессором, верно?

Я проверил свой ноутбук. В среднем за 5 запусков параллельная версия с одним ЦП чуть медленнее, чем последовательная. Я думаю, это нормально, поскольку в параллельной версии есть некоторые утверждения, которых нет в последовательной.

Есть идеи, о чем это может быть? Разумно ли супер линейное ускорение?

Примечание: я программирую на python, используя numpy и для параллельной версии, процессов и shmarray.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...