我编写了一个简单的内核,它使用了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]);
}
我正在将输入数组的每个元素传递给阻塞,并将其乘以某个常量,如您在代码中看到的那样。
这是我的配置。
根据调试,应用程序挂起clBuildProgram
,应用程序崩溃而没有任何返回代码。我已将所有正确的参数传递给clBuildProgram
,包括编译选项"-cl-std=CL2.0"
。
答案 0 :(得分:0)
Clang块被引入OpenCL 2.0以获取设备端入队功能,但它们无法用于其他情况。
如果您打算使用设备端入队,则需要在主机上创建设备端队列并修改内核 - 请参阅AMD tutorial。