使用Delphi或FreePascal编程CUDA

时间:2011-05-06 23:30:35

标签: delphi cuda pascal

我可以使用Delphi或FreePascal创建CUDA / OpenCL应用程序吗? 还是我被迫使用C ++和Visual Studio?

快速搜索:cuda + pascal

提出了一些有希望的潜在客户,但是如果我想使用Pascal启动所有未使用的核心,那么它们似乎都没有用,我有什么选择?

4 个答案:

答案 0 :(得分:5)

试一试DELPHI CUDA 在delphi中,您应该使用DRIVER API来运行内核,这个实现可以帮助您。 源代码中有一些例子 http://code.google.com/p/pascuda/

答案 1 :(得分:4)

GLScene在其ComputeAPIs文件夹中有CUDA + OpenCL标头转换,但遗憾的是CUDA / OpenCL没有Pascal,因此实际的内核需要用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);

答案 2 :(得分:1)

您需要在C / C ++中编写实际的CUDA内核。没有其他办法。除非Pascal可以用C扩展或者可以链接到C / C ++库(我从你提到的链接中得到它),我认为没有其他方法。

答案 3 :(得分:0)

有关如何在Delphi中使用OpenCL的示例/演示(包括源代码),请访问: https://plus.google.com/110131086673878874356/posts/eWcipK16MV7 但是,您需要为OpenCL本身编写C / C ++。