openCL2.0内核在clBuildProgram

时间:2016-01-04 15:05:13

标签: opencl amd

我编写了一个简单的内核,它使用了OpenCL2.0 clang块的新功能。

int multiplier = 7;

__kernel void clang_blocks_ocl(__global int* input_array, __global int* output_array)

{
    int global_id = get_global_id(0);   
    int ^MultiplayByConstant(int) = ^int (int num) {return multiplier*num;} ;
    output_array[global_id] = MultiplayByConstant(input_array[global_id]);

}

我正在将输入数组的每个元素传递给阻塞,并将其乘以某个常量,如您在代码中看到的那样。

这是我的配置。

  • OS:Win7 64bit
  • 显卡:AMD
  • 驱动程序版本:Crimson 15.30

根据调试,应用程序挂起clBuildProgram,应用程序崩溃而没有任何返回代码。我已将所有正确的参数传递给clBuildProgram,包括编译选项"-cl-std=CL2.0"

1 个答案:

答案 0 :(得分:0)

Clang块被引入OpenCL 2.0以获取设备端入队功能,但它们无法用于其他情况。

如果您打算使用设备端入队,则需要在主机上创建设备端队列并修改内核 - 请参阅AMD tutorial