我可以使用Delphi或FreePascal创建CUDA / OpenCL应用程序吗?
或者我被迫使用C和Visual Studio?
或者我被迫使用C和Visual Studio?
打开了一些有希望的领先优势,但是如果我想用Pascal启动所有未使用的内核,我有什么选择呢?
解决方法
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);