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 раза быстрее?

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

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


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

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

anonymous ()

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

Параллелится не тачка, а алгоритм.

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

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

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

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

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

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

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

gene ()

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

Просто на 8-ми головой IBM-ке у нас параллелилось на некоторых матрицах аж больше 8-ми из-за огромного кэша, а теперь надо будет под эту тачку как-то подстраиваться... Хотя бы понять, чего ждать. Всё равно будем тестировать по полной...

yz ()

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

щас придёт ленин и предложит запустить unreal tournament, fear и quake4 :)

ip ★★★★ ()

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

Самому тестировать -- самое правильное. И только на _реальной_ матрице из прикладной задачи, а не "абстрактные" тесты, они очень мало что скажут. На "некоторых" матрицах --- тут это ключевое слово :)

gene ()

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

Как опробуешь - напиши pls что получилось. Imho если 4 будет - считай что звезды тебе благоволят, т.к. в данном случае идет скан всей матрицы и кэш почти ни как не поможет, все упрется в шину, а она узкая.

YesSSS ★★★ ()

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

Возьми NPB тесты и потести. В твоём случае самое близкое это CG тест.

sS ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.