OpenCL:在内核中手动抛出异常

OpenCL:在内核中手动抛出异常,opencl,Opencl,是否可以在OpenCL中手动抛出异常,仅用于调试目的?我的代码中出现了一个非常奇怪的错误:当我计算两个双精度值并将它们相加时,主机报告“CLOUT OUT OF_RESOURCE”。但是,如果不添加这两个值,主机不会报告任何错误。OpenCL不支持异常-它基于C99语言 在AMD GPU上,您可以在内核内部使用printf——请参阅cl\u AMD\u printf扩展。要使用,请将其放在.cl文件的顶部: #pragma OPENCL EXTENSION cl_amd_printf : ena

是否可以在OpenCL中手动抛出异常,仅用于调试目的?我的代码中出现了一个非常奇怪的错误:当我计算两个双精度值并将它们相加时,主机报告“CLOUT OUT OF_RESOURCE”。但是,如果不添加这两个值,主机不会报告任何错误。

OpenCL不支持异常-它基于C99语言

在AMD GPU上,您可以在内核内部使用
printf
——请参阅
cl\u AMD\u printf
扩展。要使用,请将其放在.cl文件的顶部:

#pragma OPENCL EXTENSION cl_amd_printf : enable

不能在内核中写入异常或try/catch块。由于许多原因,可能会导致资源丢失,您是否可以发布您的主机和内核代码?另外,请告诉我您正在运行的硬件配置,AMD、Intel、NVIDIA?@ocluser感谢您的帮助,但我正在编写的代码基于一篇尚未发表的论文中的算法。在那篇论文发表之前,我不能公开任何东西。在我从NVIDIA平台(GTX460M)切换到AMD平台(Radeon HD5850)后,问题似乎消失了。我刚刚发现,默认情况下,英特尔OpenCL SDK支持printf。@仅适用于英特尔CPU OpenCL设备的Polymorpherprintf'是由编译器(通过驱动程序)提供的,而不是通过SDK提供的。使用哪个SDK并不重要,重要的是设备(和驱动程序)。