1

AT ALLは可能ですか?私はOpenCLが通常のビットフィールドを現在サポートしていないことを知っています。OpenCL偽のビットフィールド

はブールmyBoolのうち、明確な64ビットを取得する方法[64]または

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

や役に立つことができ、全く遠隔操作関連のもののようなものがあるだろうか?私は値と比較するためにいくつかの静的なビットパターンを持ち、パターンの単一のビットを素早く操作できるようにしたいと思います。

答えて

2

OpenCLの仕様保証を調べ示唆しています。 char[8]又はchar8のように64ビットのスカラーを再解釈

(それぞれ組合とas_char8()を使用して)合法であるが、結果は実装定義です。エンディアン変換のようなことが起こる可能性があるので、その点でGPUがCPUと異なる動作をするかどうか注意する必要があります。

doubleにビット操作を行うための唯一のポータブル方法はlong又はulongをmeaining、64ビットのスカラ整数タイプにビット演算子を使用することです。

+0

移植性++ 多くの感謝=) –

1

はい、可能です。 64ビットintでバイナリ演算子を使用してください.64ビットintが有効かどうかは分かりませんので、2 intで構造体を作成し、必要に応じてマスクしてシフトしてください。

私はあなたがdoubleは、64ビットとあなたが64ビットであるlongを取得するためにas_long()または共用体を使用して、それを再解釈することができていることになることを事業者&|^~

+0

ありがとうございます! a 構造体myStruct { char [8]; } も同様ですか? –

+1

はい、しかしendnessの問題と彼/彼女の答えで@ user57368状態に注意してください – EnabrenTane

+0

多分私はリトルエンディアンカーネルとビッグエンディアンカーネルのバージョンをアプリケーションの初期化フェーズや何かに基づいている可能性があります、もう一度ありがとう! –