float3データ型を取り、bool4データ型を返すカーネルを作成したいと思います。私はブール値、仕様に見えたn個の下にリストされていない組み込みベクターデータ型フロートのようなnは、むしろそれが下にリストされた予約データタイプので、私はこのようにそれを使用しようとしました:
( __global const float3 *vectors , __global bool4 *booleans)
ただし、エラーが返されますUnknown type name 'bool4'
。では、予約済みデータ型とは何ですか?また、それらをどのように使用できますか?
予約済みのデータ型は、アプリケーションでユーザー定義の型名として使用することはできません。
float3
floatn
nは2の累乗ではないので、と同様に予約されています。したがってfloat4
、最後のコンポーネントを使用することをお勧めします。
bool4
booln
すべてのnと同様に、予約されています。char4
ただし、引き続き使用できます。
メモリ内のサイズが本当に重要な場合は、次を使用できます。
union {
char raw;
struct st {
unsigned int i : 1; // bit field to use only one bit
} c[4];
} my_bool4;
次にmy_bool4.c[i]
、[0,3]のすべてのi、またはmy_bool4.raw
ビットマスクを使用して各コンポーネントにアクセスします。
このようにmy_bool4
すると、の長さは4バイトではなく1バイトになりますchar4
(コンパイラによって異なりますが、1バイトを要求しました)。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加