有没有办法防止OpenCL编译器在遇到内核代码中的x = 3 / 0;
或x = sqrt(INFINITY / NAN);
等非法代码时抛出错误?
如果x
中存储的答案是无意义的数字,我很好。只是想知道,是否有可能(可能通过编辑编译器)让所有OpenCL函数和操作忽略类型 - 如果传递正确数量的字节,则输出某些?
答案 0 :(得分:2)
您应该尝试其中一些: http://www.khronos.org/registry/cl/sdk/1.0/docs/man/xhtml/clBuildProgram.html
我会专注于:
<强> -Cl-不安全-数学优化:强>
允许优化浮点运算,(a)假设参数和结果有效,(b)可能违反IEEE 754标准,(c)可能违反第7.4节中针对单精度定义的OpenCL数值符合性要求浮点,第9.3.9节用于双精度浮点,以及第7.5节中的边缘情况行为。此选项包括-cl-no-signed-zeros和-cl-mad-enable选项。
<强> -Cl-有限数学仅强>
允许优化浮点运算,假设参数和结果不是NaN或±∞。此选项可能违反第7.4节中针对单精度浮点定义的OpenCL数值符合性要求,第9.3.9节中针对双精度浮点和第7.5节中的边缘情况行为。