更改OpenCL编译器规则

更改OpenCL编译器规则,opencl,Opencl,有没有办法防止OpenCL编译器在遇到非法代码时抛出错误,如x=3/0或x=sqrt(无穷大/NAN)在内核代码中 如果存储在x中的答案是一个无意义的数字,我就可以了。只是想知道,是否有可能(可能通过编辑编译器)让所有OpenCL函数和操作忽略类型,并在传递了正确数量的字节后输出一些内容?您应该尝试以下方法: 我将着重于: -cl不安全的数学优化: 允许对浮点运算进行优化,即(a)假设参数和结果有效,(b)可能违反IEEE 754标准,(c)可能违反第7.4节单精度浮点和第9.3.9节双精度浮

有没有办法防止OpenCL编译器在遇到非法代码时抛出错误,如
x=3/0
x=sqrt(无穷大/NAN)在内核代码中


如果存储在
x
中的答案是一个无意义的数字,我就可以了。只是想知道,是否有可能(可能通过编辑编译器)让所有OpenCL函数和操作忽略类型,并在传递了正确数量的字节后输出一些内容?

您应该尝试以下方法:

我将着重于:

-cl不安全的数学优化:

允许对浮点运算进行优化,即(a)假设参数和结果有效,(b)可能违反IEEE 754标准,(c)可能违反第7.4节单精度浮点和第9.3.9节双精度浮点定义的OpenCL数值符合性要求,以及第7.5节中的边缘情况行为。此选项包括-cl无符号零和-cl mad启用选项

-仅限cl有限数学:

允许对假定参数和结果不是NaN或±的浮点运算进行优化∞. 此选项可能违反第7.4节中定义的单精度浮点、第9.3.9节中定义的双精度浮点OpenCL数值符合性要求,以及第7.5节中定义的边缘情况行为


您可能应该命名您正在使用的编译器/SDK我正在OSX上使用PyOpenCL-因此我猜这意味着gcc就是编译器。您可以尝试为clBuildProgram调用(或PyOpenCL等效调用)的选项参数传递“-w”。说明书上说,这将禁止所有警告信息。但是,编译器可能会看到这些错误而不是警告。@benshope Sry但您错了,内核编译器不是GCC,而是您正在使用的OpenCL平台编译器(nVIDIA,AMD,…)。