从矢量类型到布尔值的OpenCL类型转换

时间:2011-03-05 18:43:02

标签: opencl

对于我的OpenCL内核中的语句

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(或标量)值的最简单方法是什么?

1 个答案:

答案 0 :(得分: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 ) ) { ... }