Запуск MSIL на GPU

Может быть, сумасшедший вопрос, но можно ли запускать потоки на GPU?

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

О, и я хотел бы сделать это в С# или F #:)

Спасибо

Ответы

Ответ 1

Здесь есть реферат по теме:

http://microsoft.cs.msu.su/Projects/Documents/ILShaders/ilshaders.pdf - [[dead link]]

Но мне еще не найти ссылку на источник. Вот страница с переводом Google:

http://translate.google.co.uk/translate?hl=en&sl=ru&u=http://microsoft.cs.msu.su/Projects/Pages/ILShaders.aspx&ei=QuieTu_tGsTD8QPk-tmmCQ&sa=X&oi=translate&ct=result&resnum=2&ved=0CCYQ7gEwAQ&prev=/search%3Fq%3DILShaders%26hl%3Den%26prmd%3Dimvns - [[deak link]]

Я уже рассмотрел этот вопрос и не нашел ничего ранее, что фактически взял совместимый язык и скомпилировал его на GPU.

Существует множество библиотек, которые предоставляют детали графического процессора, но вам нужно понять, как выразить свою проблему в виде параллельной структуры данных. Эти библиотеки затем могут ссылаться на С#.

Некоторые библиотеки:

CUDA.NET - мертвая ссылка

Microsoft Accelerator - мертвая ссылка

Различные другие источники Q/A:

Использование GPU с С#

http://social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/239fd75b-05c3-4e4b-9835-6807940dc492

Обновление: SK-логика прокомментировала tidepowerd, я связал раздел "Как это работает":

http://www.tidepowerd.com/product/howitworks - [[dead link]]

Это выглядит хорошей отправной точкой для меня. Не уверен, что если он обрабатывает MSIL напрямую, он сначала выглядит как шаг пост-сборки для создания настраиваемого кода под капотом.

Ответ 2

Если вы используете новейший графический процессор NVidia, вы можете посмотреть CUDAfy.

Не использовал его, но я долго смотрел на них раньше, когда писал программу .NET для гипотезы Биле. Удачи.

Ответ 3

Alea GPU компилирует MSIL во время выполнения в LLVM IR, а затем в CUBIN, чтобы он мог выполнять на GPU. В отличие от CUDAFy, это настоящий полноценный компилятор, а не только генератор кода CUDA C, который опирается на компилятор NVIDIA CUDA С++ в задней части.

Их технология также позволяет скомпилировать делегата во время выполнения для кода графического процессора и выполнить его на графическом процессоре.

Они также реализовали автоматическое управление памятью с помощью инструментария IL-кода, так что программисту не нужно копировать и возвращать данные между CPU и графическим процессором. Более подробная информация о функциях находится на странице .

Ответ 4

Наверное, лучше всего использовать С++ AMP, а затем вызывать этот код из .NET обычным способом. Для получения доступа к С++ AMP вам понадобится Visual Studio 11 Developer Preview (Ultimate или Express). (Никогда не слышал о С++ AMP? У меня сообщение в блоге, полное ссылок.)