Как заставить уже написанную параллельную программу работать на массиве GPU?
-
03-07-2019 - |
Вопрос
У меня есть нейронная сеть, написанная на Erlang, и я только что купил карту GeForce GTX 260 с 240-ядерным GPU на ней. Является ли тривиально использовать CUDA в качестве клея для запуска этого на видеокарте?
Решение
Нет, использование CUDA не является тривиальным вопросом. Р>
Модель программирования CUDA в основном использует C (с некоторыми дополнениями), но для того, чтобы максимально использовать возможности GPGPU, вам необходимо убедиться, что ваши алгоритмы соответствуют рекомендациям CUDA. (см. Руководство по программированию NVidia CUDA )
Например, чтобы получить наилучшую производительность памяти (где-то около 70 Гбит / с), вам необходим доступ к памяти в потоковом режиме с объединением, также ветвления на GPU очень дороги, поэтому вам следует избегать как можно больше условных выражений. Ознакомьтесь с руководством и примерами, поставляемыми с SDK, они послужат отличной отправной точкой
Другие советы
Я бы хотел рассказать вам, как это сделать с Эрлангом ... ;-), но по крайней мере Сатнам Сингх из MS Research проделал очень интересную работу с Haskell (Lava) и F #. Возможно, эта статья поможет вам понять, как это можно сделать :