メインコンテンツ

coder.GpuCodeConfig

MATLAB コードから CUDA コードを生成するための構成パラメーター

説明

coder.GpuCodeConfig オブジェクトは、MATLAB® コードから NVIDIA® CUDA® コードを生成するためのコード構成パラメーターを指定します。coder.GpuCodeConfig オブジェクトのプロパティを使用して、カーネル起動パラメーター、NVIDIA コード ライブラリ、CUDA Compute Capability など、CUDA の機能をカスタマイズします。

作成

coder.GpuCodeConfig オブジェクトを作成するには、まず coder.gpuConfig 関数を使用して、次のいずれかのコード構成オブジェクトを作成します。

構成オブジェクトの GpuConfig プロパティには、coder.GpuCodeConfig オブジェクトが含まれています。

プロパティ

すべて展開する

GPU コードを生成するオプション。数値として指定するか、1 (true) または 0 (false) として指定します。詳細については、「GPU コードの生成」を参照してください。

例: cfg.GpuConfig.Enabled = true

生成される CUDA コードで使用するメモリ割り当てモード。"discrete" または "unified" として指定します。詳細については、Malloc モードを参照してください。

例: cfg.GpuConfig.MallocMode = "discrete"

カスタムのカーネル名の接頭辞。文字ベクトルまたは string スカラーとして指定します。詳細については、カーネル名の接頭辞を参照してください。

例: cfg.GpuConfig.KernelNamePrefix = "myKernel"

数学関数の呼び出しを NVIDIA cuBLAS ライブラリ呼び出しに置き換えるオプション。数値として指定するか、1 (true) または 0 (false) として指定します。詳細については、cuBLAS の有効化を参照してください。

例: cfg.GpuConfig.EnableCUBLAS = true

数学関数の呼び出しを NVIDIA cuSOLVER ライブラリ呼び出しに置き換えるオプション。数値または logical の 1 (true) または 0 (false) として指定します。詳細については、cuSOLVER の有効化を参照してください。

例: cfg.GpuConfig.EnableCUSOLVER = true

fft 関数呼び出しを NVIDIA cuFFT ライブラリ呼び出しに置き換えるオプション。数値または logical の 1 (true) または 0 (false) として指定します。詳細については、cuFFT の有効化を参照してください。

例: cfg.GpuConfig.EnableCUFFT = true

生成された CUDA コードのエラーをチェックするオプション。数値または logical の 1 (true) または 0 (false) として指定します。このプロパティを使用して、CUDA API 呼び出しおよびカーネル起動におけるエラーをチェックします。詳細については、セーフ ビルドを参照してください。

例: cfg.GpuConfig.SafeBuild = true

生成された CUDA コードを実行するために必要な最低 Compute Capability。以下のいずれかの値で指定します。

  • "Auto"

  • "3.2"

  • "3.5"

  • "3.7"

  • "5.0"

  • "5.2"

  • "5.3"

  • "6.0"

  • "6.1"

  • "6.2"

  • "7.0"

  • "7.2"

  • "7.5"

  • "8.0"

  • "8.6"

  • "8.7"

  • "8.9"

  • "9.0"

詳細については、最低 Compute Capability を参照してください。

例: cfg.GpuConfig.ComputeCapability = "6.1"

CUDA 入力ファイルをコンパイルする NVIDIA 仮想 GPU アーキテクチャの名前。文字または string スカラーとして指定します。詳細については、カスタム Compute Capability を参照してください。

例: cfg.GpuConfig.CustomComputeCapability = "-arch=compute_50"

GPU コンパイラに渡す追加フラグ。文字ベクトルまたは string スカラーとして指定します。詳細については、コンパイラ フラグを参照してください。

例: cfg.GpuConfig.CompilerFlags = "--fmad=false"

GPU スレッドあたりのスタックの制限 (バイト単位)。整数として指定します。詳細については、スタック制限を参照してください。

例: cfg.GpuConfig.StackLimitPerThread = 1024

カーネルの起動中に作成されるブロックの最大数。整数として指定します。詳細については、カーネルあたりの最大ブロック数を参照してください。

例: cfg.GpuConfig.MaximumBlocksPerKernel = 1024

GPU メモリ マネージャーを使用するオプション。数値または logical の 1 (true) または 0 (false) として指定します。詳細については、GPU メモリ マネージャーを有効にするを参照してください。

例: cfg.GpuConfig.EnableMemoryManager = true

CUDA デバイスの選択。デバイス ID の数値として指定します。詳細については、GPU デバイス ID を参照してください。

例: cfg.GpuConfig.SelectCudaDevice = 0

すべて折りたたむ

MATLAB 関数から CUDA MEX 関数を生成するための構成オブジェクトを作成します。次に、構成オブジェクトの GpuConfig プロパティを使用して、coder.GpuCodeConfig オブジェクトを変更します。この例では、数学関数を NVIDIA cuBLAS ライブラリ呼び出しに置き換えるオプションを有効にします。

2 つの入力値を加算する MATLAB 関数 vecAdd を作成します。

function [C] = VecAdd(A,B) %#codegen
coder.gpu.kernelfun(); 
C = A + B;
end

MEX 関数を生成するために、コード生成構成オブジェクトを作成します。

cfg = coder.gpuConfig("mex");

コード生成レポートを有効にします。

cfg.GpuConfig.EnableCUBLAS = true;
cfg.GenerateReport = true;

-config オプションと構成オブジェクトを使用して、現在のフォルダーに MEX 関数を生成します。

% Generate a MEX function and code generation report
codegen -config cfg -args {zeros(512,512,"double"),zeros(512,512,"double")} VecAdd

制限

  • Windows® プラットフォームでは、ダイナミック ライブラリ、スタティック ライブラリ、実行可能ファイルなどのスタンドアロン ターゲット用に生成される makefile において、/MT または /MD コンパイラ フラグは設定されません。これらのフラグは、Visual Studio® コンパイラにマルチスレッド ライブラリを使用するように指示します。既定では、Visual Studio はコンパイル時に /MT フラグを使用します。その他のコンパイラ固有のフラグを渡すには、CompilerFlags プロパティを使用します。たとえば、構成オブジェクト cfg/MD フラグを指定するには、次のコードを入力します。

    cfg.GpuConfig.CompilerFlags = "-Xcompiler /MD";
    

  • nvcc コンパイラがサポートするファイル拡張子の種類は限られています。たとえば、オブジェクト ファイルにバージョン番号が含まれている場合、コンパイルが失敗する可能性があります。このような場合は、シンボリック リンクを作成するか、CompilerFlags プロパティに "-Xlinker" を指定してください。

代替機能

アプリ

GPU Coder アプリを使用すると、コード ジェネレーターを構成して CUDA コードを生成できます。詳細については、GPU Coder アプリを使用したコード生成を参照してください。

バージョン履歴

R2017b で導入

すべて展開する