OpenCL内置函数'select'

Vol*_*myr 4 opencl

我不清楚内置OpenCL功能的目的是什么select.请有人澄清一下吗?

从OpenCL规范:

函数选择(gentype a,gentype b,igentype c)

返回:对于矢量类型的每个分量,result [i] =如果设置了c [i]的MSB?b [i]:a [i].

在这种情况下,什么是MSB?我知道MSB代表最重要的一点,但我不知道它与这种情况有什么关系.

grr*_*sel 7

OpenCL select(a, b)根据条件向量(c)的真值选择一对向量中的元素,返回由向量a和元素组成的新向量b.

这里提到了MSB(最高有效位),因为向量元素的真值被定义为-1,因此应该设置MSB(作为符号位):

a = {1 , 2}  // Pseudocode for select operands
b = {3 , 4}
c = {0 ,-1}
r = {1 , 4}  // The result r contains some of a and b
Run Code Online (Sandbox Code Playgroud)

  • 请注意,参数顺序是*完全*向后的。如果你想做类似`a > b 的事情?a : b`,然后你写`select(b, a, a > b);`。非常愚蠢。他们在想什么?! (2认同)