我可以使用Delphi或FreePascal创建CUDA / OpenCL应用程序吗? 还是我被迫使用C ++和Visual Studio?
快速搜索:cuda + pascal
提出了一些有希望的潜在客户,但是如果我想使用Pascal启动所有未使用的核心,那么它们似乎都没有用,我有什么选择?
答案 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 ++。