2011-03-05 40 views
4

对于本声明我的OpenCL内核OpenCL的类型转换为Boolean

uint4 checkCoord; // assign some value 
if(checkCoord==(uint4)(0,0,0,0)){ 
    ; // do something 
} 

我收到以下错误OpenCL编译

statement requires expression of scalar type ('int __attribute__((ext_vector_type(4,4)))' invalid) 

什么是一个变量转换的最简单方法的uint4类型为bool(或标量)值?

回答

5

您应该使用all来测试条件已在矢量的所有组件上进行验证。 checkCoord == (uint4)(0,0,0,0)是一个int4,其组件为0(false)或(uint)-1(true)。

if (all(checkCoord == (uint4)(0,0,0,0))) { ... } 

根据OpenCL的规格(6.3.e),你也可以写

if (all(checkCoord == 0)) { ... } 
相关问题