1

有可能吗?我知道 OpenCL 现在不支持普通位域。

有没有办法从 bool myBool[64] 或类似的东西中获得明确的 64 位

union newType{
    double value;
    bool bit[64];
};

或任何可能有帮助的远程相关的东西?我希望有一些静态位模式来与值进行比较,并能够快速操作模式的单个位。

4

2 回答 2

2

OpenCL 规范保证 adouble将是 64 位,并且您可以使用as_long()或联合重新解释它以获得long64 位的 a 。

将 64 位标量重新解释为 achar[8]或 achar8是合法的(分别使用联合和as_char8()),但结果是实现定义的。可能会发生字节顺序转换之类的事情,因此您可能需要注意您的 GPU 在这方面的行为是否与您的 CPU 不同。

对 a 进行位操作的唯一可移植方法double是在 64 位标量整数类型上使用位运算符,long即 或ulong.

于 2011-01-17T06:01:38.350 回答
1

是的,有可能。在 64 位整数上使用二元运算符,不确定 64 位整数是否有效,因此只需创建一个具有 2 个整数的结构并根据需要进行掩码和移位。

我建议你调查运营商& | ^ ~

于 2011-01-17T04:39:31.183 回答