それはまったく可能ですか?現在、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 仕様では、a が 64 ビットであり、または共用体をdouble
使用して再解釈して、64 ビットの a を取得できることが保証されています。as_long()
long
64 ビット スカラーを achar[8]
または a のようなものに再解釈することchar8
は (union およびas_char8()
それぞれを使用して) 正当ですが、結果は実装定義です。エンディアン変換などが発生する可能性があるため、その点で GPU が CPU と異なる動作をするかどうかに注意する必要がある場合があります。
a でビット操作を行う唯一の移植可能な方法はdouble
、64 ビットのスカラー整数型でビット単位の演算子を使用することlong
ですulong
。
はい、可能です。64 ビット int で二項演算子を使用します。64 ビット int が有効かどうかわからないため、2 つの int を持つ構造体を作成し、必要に応じてマスクとシフトを行います。
オペレーターを調査することをお勧めします&
|
^
~