Как заставить уже написанную параллельную программу работать на массиве GPU? - PullRequest
22 голосов
/ 17 октября 2008

У меня есть нейронная сеть, написанная на Erlang, и я только что купил карту GeForce GTX 260 с 240-ядерным GPU на ней. Является ли тривиальным использование CUDA в качестве клея для запуска на видеокарте?

Ответы [ 2 ]

16 голосов
/ 17 октября 2008

Нет, использование CUDA не является тривиальным вопросом.

Модель программирования CUDA в основном использует C (с некоторыми дополнениями), но для того, чтобы максимально использовать возможности GPGPU, вам необходимо убедиться, что ваши алгоритмы следуют рекомендациям CUDA. (см. Руководство по программированию NVidia CUDA )

Например, чтобы получить лучшую производительность памяти (где-то около 70 Гбит / с), вам необходим доступ к памяти в потоковом режиме с объединением, также ветвления на GPU очень дороги, поэтому вам следует избегать как можно больше условных выражений. Посмотрите руководство и образцы, поставляемые с SDK, они послужат отличной отправной точкой

3 голосов
/ 17 октября 2008

Хотел бы я рассказать вам, как это сделать с Эрлангом ... ;-), но по крайней мере Сатнам Сингх из MS Research проделал очень интересную работу с Haskell (Lava) и F #. Возможно, эта статья может дать вам некоторую интуицию о том, как это можно сделать :

http://research.microsoft.com/en-us/people/satnams/

...