Main Content

GPU 配列のサポート

CUDA® MEX、ソース コード、スタティック ライブラリ、ダイナミック ライブラリおよび実行可能ファイルを生成するときに、GPU 配列をエントリポイント関数への入力引数および出力引数として使用できます。GPU Coder™ は、入力の型と MATLAB® 設計での変数の使用法に基づいて CPU-GPU 間のコピーを自動的に処理します。GPU 配列の機能は、次を試す場合に CPU-GPU 間のコピーを最小限にするのに役立ちます。

  • 生成コードを、GPU メモリへの出力を行う既存の実装と統合する。

  • 生成された MEX 関数に MATLAB gpuArray 入力を渡す。

エントリポイント関数への入力を GPU 型としてマークするには、次のいずれかの方法を使用します。

  • coder.typeof を使用してエントリポイント関数の入力の gpuArray 型を表します。次に例を示します。

    coder.typeof(rand(20),'Gpu',true);
    

  • 関数 gpuArray を使用します。次に例を示します。

    in = gpuArray(rand(1,10)); 
    codegen -config cfg -args {in} test
    

考慮事項

  • GPU Coder は、gpuArray でサポートされているすべてのデータ型をサポートします。

  • 可変次元配列を使用する場合、制限された型のみがサポートされます。

  • 'lib''dll' および 'exe' ターゲットの場合、main 関数の例でエントリポイント関数に対応するポインターを渡さなければなりません。たとえば、入力が 'Gpu' としてマークされている場合、エントリポイントが main 関数から呼び出されるときに GPU ポインターを渡さなければなりません。

  • コード構成オブジェクトの MemoryMode (メモリ割り当てモード) プロパティは 'discrete' に設定しなければなりません。次に例を示します。

    cfg.GpuConfig.MallocMode = 'discrete';
    

  • コード生成時、エントリポイント関数への 1 つの入力が GPU 配列で構成されている場合、GPU Coder はすべての出力変数を GPU 配列型にしようとします。ただし、それらが gpuArray でサポートされていなければなりません。たとえば、エントリポイント関数が struct を返す場合、structgpuArray でサポートされていないため、生成コードは CPU 出力を返します。ただし、サポートされる行列タイプが返される場合、生成されるコードは GPU 出力を返します。

    メモ

    gpuArray 入力を渡すことは、出力も gpuArray になることを保証するものではありません。

制限

  • GPU Coder は次の型をサポートしていません。

    • char

    • half

    • スカラー GPU 配列

    • 構造

    • cell 配列

    • クラス

    • 列挙型

    • 固定小数点データ型

  • GPU Coder は、GPU 配列の 'unified' メモリ モードをサポートしていません。

参考

| | | |

関連するトピック