Программирование CUDA с использованием Delphi или FreePascal

могу ли я создавать приложения CUDA/OpenCL с помощью Delphi или FreePascal?
Или я вынужден использовать C++ и Visual Studio?

быстрый поиск: cuda + pascal

появляется несколько перспективных версий, но ни одна из них, похоже, не работает, какие варианты у меня есть, если я хочу запустить все эти неиспользуемые ядра с помощью Pascal?

4 ответов


GLScene имеет преобразования заголовков CUDA + OpenCL в it's ComputeAPIs папка, но, к сожалению, нет Паскаля для CUDA / OpenCL, поэтому фактические ядра должны быть написаны на C для OpenCL / CUDA.

можно использовать clEnqueueNativeKernel для использования чисто всего кода Delphi, но собственные ядра будут работать только на CPU, а не на любом существующем GPU на данный момент. В последних версиях Delphi можно объединить собственные ядра с анонимными методы, чтобы получить довольно хорошее решение.

например. Вы можете написать функцию-оболочку, которая принимает анонимный метод в качестве параметра и передает его OpenCL как собственное ядро, функция-оболочка может работать примерно так:

var
  input1, input2, output: array[0..1023] of integer;
begin
  Parallel.For(0, 1023,
         procedure(i: Integer)
         begin
           output[i] := SomeFunc(input1[i]) + AnotherFunc(input2[i]);
         end);

попробуй DELPHI CUDA В delphi вы должны использовать API драйвера для запуска ядра, эта реализация поможет вам. Есть примеры в исходном коде http://code.google.com/p/pascuda/


вам нужно будет написать фактические ядра CUDA в C / C++. Другого пути нет. Если Pascal не может быть расширен с помощью C или может ссылаться на библиотеки C/C++ (что я asusme это делает из ссылки, которую вы упомянули), я не думаю, что есть какой-либо другой способ.


пример / демо (включая источник) о том, как использовать OpenCL в Delphi можно найти здесь: https://plus.google.com/110131086673878874356/posts/eWcipK16MV7 Однако вам нужно написать C / C++ для самого OpenCL.