首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么OpenCL的洗牌示例无效?

为什么OpenCL的洗牌示例无效?
EN

Stack Overflow用户
提问于 2018-09-12 15:07:26
回答 1查看 392关注 0票数 2

有一个shuffle of OpenCL在文档中的例子。

代码语言:javascript
运行
复制
//Examples that are not valid are:
uint8 mask;
short16 a;
short8 b;
b = shuffle(a, mask); // invalid

但我不明白为什么。我用AndroidStudio在Android上测试了这一点,结果显示:构建程序失败了:BC代码:9:9:{9:9-9:16}:错误:没有匹配的内置函数调用‘洗牌’。然后,我将short改为int,如下所示:

代码语言:javascript
运行
复制
uint8 mask;
int16 a;
int8 b;
b = shuffle(a, mask);

没什么大不了的。我从文件中找不到任何原因,有人能帮我吗?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-14 18:15:42

我认为规范中描述的关键部分是:

掩码中每个元素的大小必须与结果中每个元素的大小匹配。

我认为这意味着如果您想要洗牌shorts的向量,则您的掩码必须是ushort的向量;uint8的掩码只适用于对元素为4个字节的向量进行洗牌--换句话说,intuintfloat

因此,以下内容应再次有效:

代码语言:javascript
运行
复制
ushort8 mask; // <-- changed
short16 a;
short8 b;
b = shuffle(a, mask); // now valid
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52298334

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档