带有标量参数的 Opencl select 方法
Opencl select method with scalar argument
我有以下代码行,如果标量不为零,我希望 a4 的每个分量等于 c4 的相应分量,否则将其设置为 b4 的相应分量:
uint4 a4 = select(b4, c4, (uint4)(scalar != 0));
但是,阅读 select 文档,似乎必须为要选择的 c4 组件设置 MSB。
上面这行是正确的吗?我感觉不是。
原来我只需要将第三个参数调整为:
(uint4) 标量 != 0
它会是正确的。
这是一只讨厌的小家伙。标量的真值与向量的真值不匹配。这是尝试有效支持 altivec/SSE-style 掩码比较的结果。这是 OpenCL 的一个已知但未广泛宣传的怪癖。
我有以下代码行,如果标量不为零,我希望 a4 的每个分量等于 c4 的相应分量,否则将其设置为 b4 的相应分量:
uint4 a4 = select(b4, c4, (uint4)(scalar != 0));
但是,阅读 select 文档,似乎必须为要选择的 c4 组件设置 MSB。
上面这行是正确的吗?我感觉不是。
原来我只需要将第三个参数调整为: (uint4) 标量 != 0
它会是正确的。
这是一只讨厌的小家伙。标量的真值与向量的真值不匹配。这是尝试有效支持 altivec/SSE-style 掩码比较的结果。这是 OpenCL 的一个已知但未广泛宣传的怪癖。