Есть ли возможность писать GPU-приложения с использованием CUDA под F sharp? - PullRequest
9 голосов
/ 28 октября 2010

Я заинтересован в использовании F # для численных расчетов.Как я могу получить доступ к графическому процессору, используя стандарт NVIDIA CUDA под F #?

Ответы [ 5 ]

7 голосов
/ 28 октября 2010

Я согласен с Джаспером, что в настоящее время проще всего использовать Accelerator от Microsoft Research.Я написал серию статей об использовании из F #. Простое и прямое введение , Пример игры , более расширенный пример с использованием цитат и пример с использованием расширенных функций цитат . Блог Satnam Singh также является отличным ресурсом с некоторыми демонстрационными примерами F #.

Одна из проблем современных видеокарт заключается в том, что они не поддерживают целые числа (в результате Accelerator поддерживает их только при запуске с использованиемоптимизированный параллельный движок x64).Кроме того, современные видеокарты не реализуют числа с плавающей запятой в соответствии со стандартами IEEE - они стараются быть быстрее, выполняя некоторые «догадки», что не имеет значения при расчете положения треугольника, но может быть проблемой, если выЗанимаемся финансовыми расчетами.(Ускоритель может использовать различные цели, поэтому вы в безопасности, если используете параллельный движок x64).

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

6 голосов
/ 29 октября 2010

Наверное, только хардкорные фанаты GPU вроде меня слышали об этом. Tidepowerd - мертвая ссылка сделала возможным использование GPGPU для языков на основе CIL (таких как F #, C #, VB.NET и т. Д.).С другой стороны, вы можете сделать то же самое для единственного языка F # с помощью среды исполнения / API Quotation-to-GPU (с нетерпением ждем, чтобы кто-то реализовал это).Это то, о чем агент Смит написал о или это также упоминается в книге F # expert 1.0 (глава «Языковое программирование») AFAIK.

Агент Смит (хорошо, извините за это) говорит оNVIDIA Cg.Но вы можете сделать то же самое, используя шейдеры HLSL DirectCompute или OpenCL C99 .. PTX (низкий уровень NVIDIA IL), CAL-IL (низкий уровень AMD / ATI IL) ...

5 голосов
/ 28 октября 2010

В качестве альтернативы вы можете рассмотреть возможность использования DirectCompute.Три больших API для GPU: CUDA, OpenCL и DirectCompute очень похожи.Доступ к DirectCompute можно легко получить из F # через SlimDX, оболочку .NET для DirectX.

3 голосов
/ 28 октября 2010

Accelerator от MS позволяет использовать графические процессоры, поэтому можно делать что-то подобное, хотя вы не можете использовать CUDA.

1 голос
/ 28 октября 2010

Вы можете заглянуть в CUDA.NET. Это позволит вам использовать CUDA прямо из F #. Это можно найти здесь: http://www.hoopoe -cloud.com / Решения / CUDA.NET / Default.aspx

Другая обычная альтернатива для использования CUDA из управляемого кода - это инкапсулировать функциональность CUDA в нативную DLL, а затем либо P / Invoke, либо написать обертку C ++ / CLI вокруг нее, которую вы затем используете, например, из, например. ваша программа F #.

...