2017-07-21 6 views
0

float3データ型を取り、bool4データ型を返すカーネルを作成します。私は仕様に見えた、ブールNは内蔵ベクタデータ型ではなく、それが予約データ型の下に表示され、 nはフロートのようなをの下に表示されていないので、私はこのようにそれを使用しようとしました:OpenCLの予約データタイプとは何ですか?

(__global const float3 *vectors , __global bool4 *booleans) 

しかし、それはエラーUnknown type name 'bool4'を返します。予約データ型とはどのようなものですか?

+0

Google、最初の結果:アプリケーションではユーザー定義の型名として使用できません。(https://www.khronos.org/registry/OpenCL/sdk/1.0/docs/man/xhtml/reservedDataTypes。 html) – Lovy

+0

私はそれを読んでいますが、私はまだ理解していません。なぜ使用できないのなら仕様書に書かれていますか? bool4を使用するための代替手段は何ですか? –

+0

'bool4'は予約されていません。 nが2の累乗でない場合、 'typen'のように見えます。したがって、float3は予約されていますが、単にfloat4を使用することもできます。 – Lovy

答えて

1

予約データ型cannot be used by applications as user-defined type names

  • float3

    だから私も、float4を使用してrecommandなり、予約されている最後のコンポーネント

  • bool4については問題ないようにnは2のべき乗でないと、floatnとしてだけでなく、予約されていますすべてのnに対してboolnとなります。あなたはまだchar4を使用することができます。 、またはmy_bool4.rawとビットマスクで

    union { 
        char raw; 
        struct st { 
         unsigned int i : 1; // bit field to use only one bit 
        } c[4]; 
    } my_bool4; 
    

    をし、[0,3]内のすべてのiについてmy_bool4.c[i]と各コンポーネントにアクセス:メモリ内のサイズは本当に重要ならば

は、次のものを使用することができます。

この方法では、my_bool4は(まあ、それはコンパイラに依存しますが、あなたはは、1バイトのためを頼ん)char4のために長い1バイト長の代わりに、4バイトになります。

関連する問題