LINUX.ORG.RU

Насколько хорошо параллелится такая тачка?


0

0
HP ProLiant DL580 G5 4 Quad-Core Intel® Xeon® X7350 Processor (2.93 GHz, 2x4M cache ), т.е. в общей сложности 16 ядер. 128Gb памяти.

Интересует, например, разреженное матрично-векторное умножение. Скажем, матрица порезана в памяти на 16 кусков с примерно одинаковым количеством ненулевых элементов (выделенных (new double[Z]) каждый в своём потоке), вектор порезан аналогично на соответсвующие 16 кусков. Размер матрицы: 10^6 строк, 50*10^6 ненулевых элементов.

Вот получится ли это умножить в 16 раз быстрее, чем на одном ядре? Подозреваю, что нет... Или всего в 4 раза быстрее?

Может кто-то уже пробовал что-то подобное на похожей конфигурации (может с меньшим числом процессоров)?

Заранее спасибо за помощь.


Посмотри на результаты LINPACK на интеловских библиотеках под эту железку. Вообще до всего лишь 16 процессоров рост производительности на таких задачах близок к линейному, там далеко не память является узким местом.
anonymous
()
Параллелится не тачка, а алгоритм.

На счет скалярных произведений, умножений матрица/вектор, матрица/матрица --- все очень сильно будет зависеть от размерности и и ширины ленты.

10^6 --- параллелиться будет, линейно до 16 процессоров --- скорее всего нет, до 4-8, -- скорее всего да.

Вообще, это очень сильно зависит от от размерности, ширины ленты и так далее, так что нужно просто пробовать.

Когда то пробовал тестировать скалярное произведение, 8 ядер, 16 ГБ, заполненный вектор размерности 5E+6, получилось следующее: на 2 ядра -- линейно, потом никакого ускорения. Для матриц ситуацию лучше.

Перемножались STL вектора, циклы параллелились через OpenMP, Интеловский компилятор.

Линпак вряд ли даст нужную информацию, так как, если не ошибаюсь, там операции только с заполненными векторами и матрицами, --- а не разреженными.

С заполненными матрицами умножение матрица/вектор и при размерности ~10^4 масштабируется до 4 ядер. Опять же, по собственным тестам.

gene
()
Ответ на: комментарий от gene
Просто на 8-ми головой IBM-ке у нас параллелилось на некоторых матрицах аж больше 8-ми из-за огромного кэша, а теперь надо будет под эту тачку как-то подстраиваться... Хотя бы понять, чего ждать. Всё равно будем тестировать по полной...
yz
() автор топика
щас придёт ленин и предложит запустить unreal tournament, fear и quake4 :)
ip ★★★★
()
Ответ на: комментарий от yz
Самому тестировать -- самое правильное. И только на _реальной_ матрице из прикладной задачи, а не "абстрактные" тесты, они очень мало что скажут. На "некоторых" матрицах --- тут это ключевое слово :)
gene
()
Как опробуешь - напиши pls что получилось. Imho если 4 будет - считай что звезды тебе благоволят, т.к. в данном случае идет скан всей матрицы и кэш почти ни как не поможет, все упрется в шину, а она узкая.
YesSSS ★★★
()
Ответ на: комментарий от YesSSS
Не уверен, что смогу озвучить результаты... Коммерческая тайна, причём, не моя.
yz
() автор топика
Возьми NPB тесты и потести. В твоём случае самое близкое это CG тест.
sS ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.