gpt4 book ai didi

opencl - OpenCL 的 select 运算符有什么用?

转载 作者:行者123 更新时间:2023-12-03 08:44:22 25 4
gpt4 key购买 nike

我注意到 OpenCL 有一个 select() 函数/内置/运算符,它似乎类似于 C 和 C++ 中的三元运算符,但又不完全一样。 select()?: 之间有什么区别,如果我们有后者,为什么还需要前者?

最佳答案

select 运算符必要/有用的原因是为了处理 OpenCL 向量类型,例如 int2float4 等。与 C++ 不同,在 C++ 中您可以重载各种运算符以赋予它们自定义语义 - 在 C(和 OpenCL C)中只有默认行为。对于三元运算符,这意味着对于

x ? expression_for_true : expression_for_false

将执行单个检查,并且将使用单个适当的值 - 即使所有三个操作数都是 OpenCL 向量类型。

相反,使用select():

  • 所有元素必须具有与向量类型相同的维度,例如int4float4float4
  • 对向量类型中的每个位置执行不同的检查。
  • 对于向量类型中的每个位置,在真假表达式的元素之间做出不同的选择

此外,让我们有点困惑的是,select() 的参数顺序与三元运算符不同:x ? y : z 对应于 select(z, y, x)

因此如果

x = (int4) ( 1, 0 );
y = (float4) ( 1.2, 3.4 );
z = (float4) ( 5.6, 7.8 );

然后

select(z, y, x) == (float4) ( 1.2, 7.8 );

另请参阅 Khronos OpenCL 文档 herehere .

关于opencl - OpenCL 的 select 运算符有什么用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62038191/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com