有可能吗?我知道 OpenCL 现在不支持普通位域。
有没有办法从 bool myBool[64] 或类似的东西中获得明确的 64 位
union newType{
double value;
bool bit[64];
};
或任何可能有帮助的远程相关的东西?我希望有一些静态位模式来与值进行比较,并能够快速操作模式的单个位。
有可能吗?我知道 OpenCL 现在不支持普通位域。
有没有办法从 bool myBool[64] 或类似的东西中获得明确的 64 位
union newType{
double value;
bool bit[64];
};
或任何可能有帮助的远程相关的东西?我希望有一些静态位模式来与值进行比较,并能够快速操作模式的单个位。
OpenCL 规范保证 adouble
将是 64 位,并且您可以使用as_long()
或联合重新解释它以获得long
64 位的 a 。
将 64 位标量重新解释为 achar[8]
或 achar8
是合法的(分别使用联合和as_char8()
),但结果是实现定义的。可能会发生字节顺序转换之类的事情,因此您可能需要注意您的 GPU 在这方面的行为是否与您的 CPU 不同。
对 a 进行位操作的唯一可移植方法double
是在 64 位标量整数类型上使用位运算符,long
即 或ulong
.
是的,有可能。在 64 位整数上使用二元运算符,不确定 64 位整数是否有效,因此只需创建一个具有 2 个整数的结构并根据需要进行掩码和移位。
我建议你调查运营商&
|
^
~