有可能吗?我知道 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()或联合重新解释它以获得long64 位的 a 。
将 64 位标量重新解释为 achar[8]或 achar8是合法的(分别使用联合和as_char8()),但结果是实现定义的。可能会发生字节顺序转换之类的事情,因此您可能需要注意您的 GPU 在这方面的行为是否与您的 CPU 不同。
对 a 进行位操作的唯一可移植方法double是在 64 位标量整数类型上使用位运算符,long即 或ulong.
是的,有可能。在 64 位整数上使用二元运算符,不确定 64 位整数是否有效,因此只需创建一个具有 2 个整数的结构并根据需要进行掩码和移位。
我建议你调查运营商& | ^ ~