メインコンテンツ

coder.gpuConfig

GPU Coder を使用した MATLAB コードからの CUDA コード生成用の構成パラメーター

説明

coder.GpuCodeConfig オブジェクトまたは coder.gpuConfig オブジェクトには、GPU Coder™ を使って CUDA® MEX、スタティック ライブラリ、ダイナミック リンク ライブラリ、または実行可能プログラムを生成するために codegen で使用される構成パラメーターが含まれています。-config オプションを使用してこのオブジェクトを関数 codegen に渡します。

作成

説明

cfg = coder.gpuConfig(build_type) は、指定したビルド タイプのコード生成構成オブジェクトを作成します。このビルド タイプには、CUDA MEX、スタティック ライブラリ、ダイナミック リンク ライブラリ、または実行可能プログラムを指定できます。Embedded Coder® 製品がインストールされている場合、スタティック ライブラリ、ダイナミック リンク ライブラリ、または実行可能ファイルのビルド タイプ用の coder.EmbeddedCodeConfig オブジェクトを作成します。

cfg = coder.gpuConfig(build_type,'ecoder',false) は、Embedded Coder 製品がインストールされている場合でも CUDA 'lib''dll'、または 'exe' 出力を生成するためのコード生成構成オブジェクトを作成します。

cfg = coder.gpuConfig(build_type,'ecoder',true) は、Embedded Coder 製品がインストールされていない場合でも coder.EmbeddedCodeConfig 構成オブジェクトを作成します。ただし、coder.EmbeddedCodeConfig オブジェクトを使用したコード生成には、Embedded Coder のライセンスが必要です。

入力引数

すべて展開する

生成された CUDA コードからビルドする出力。次の表のいずれかの値を指定します。

説明
'MEX'CUDA MEX
'LIB'スタティック ライブラリ
'DLL'ダイナミック リンク ライブラリ
'EXE'実行可能プログラム

プロパティ

すべて展開する

coder.GpuConfig には、コード構成オブジェクトの GPU 固有の構成パラメーターのみが含まれます。コード構成オブジェクトのプロパティを表示するには、coder.CodeConfig および coder.EmbeddedCodeConfig を参照してください。

GPU コード生成の制御。true または false として指定します。詳細については、「GPU コードの生成」を参照してください。

例: cfg.GpuConfig.Enabled = true

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

例: cfg.GpuConfig.MallocMode = 'discrete'

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

例: cfg.GpuConfig.KernelNamePrefix = 'myKernel'

数学関数の呼び出しと NVIDIA® cuBLAS ライブラリの呼び出しの置換。true または false として指定します。詳細については、cuBLAS の有効化を参照してください。

例: cfg.GpuConfig.EnableCUBLAS = true

数学関数の呼び出しと NVIDIA cuSOLVER ライブラリの呼び出しの置換。true または false として指定します。詳細については、cuSOLVER の有効化を参照してください。

例: cfg.GpuConfig.EnableCUSOLVER = true

fft 関数の呼び出しと NVIDIA cuFFT ライブラリの呼び出しの置換。true または false として指定します。詳細については、cuFFT の有効化を参照してください。

例: cfg.GpuConfig.EnableCUFFT = true

生成された CUDA コードへのベンチマーク コードの追加。true または false として指定します。詳細については、ベンチマークを参照してください。

例: cfg.GpuConfig.Benchmarking = true

CUDA API 呼び出しとカーネルの起動におけるエラーのチェック。true または false として指定します。詳細については、セーフ ビルドを参照してください。

例: cfg.GpuConfig.SafeBuild = true

CUDA コードが生成される NVIDIA GPU デバイスの最低 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 アーキテクチャの名前。文字ベクトルとして指定します。詳細については、カスタム Compute Capability を参照してください。

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

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

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

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

例: cfg.GpuConfig.StackLimitPerThread = 1024

それを超えるとプライベート変数がスタックではなくヒープに割り当てられるようになるしきい値 (バイト単位)。整数として指定します。詳細については、Malloc しきい値を参照してください。

例: cfg.GpuConfig.MallocThreshold = 256

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

例: cfg.GpuConfig.MaximumBlocksPerKernel = 1024

GPU メモリ マネージャーを使用するかどうか。true または false として指定します。詳細については、GPU メモリ マネージャーを有効にするを参照してください。

例: cfg.GpuConfig.EnableMemoryManager = true

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

例: cfg.GpuConfig.SelectCudaDevice = <DeviceID>

すべて折りたたむ

GPU コード生成に適した MATLAB® 関数から CUDA MEX 関数を生成します。また、コード生成レポートも有効にします。

MATLAB 関数 VecAdd を書き込みます。この関数は、入力 A および B のベクトル加算を実行します。

function [C] = VecAdd(A,B) %#codegen
    C = coder.nullcopy(zeros(size(A)));
    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.GpuConfig.CompilerFlags = '-Xcompiler /MD';
    

  • nvcc コンパイラには、入力ファイルのサフィックスに制限があります。たとえば、オブジェクト ファイルにバージョン番号が含まれている場合、コンパイルが失敗する可能性があります。このような場合は、シンボリック リンクを作成するか、'-Xlinker'CompilerFlags に渡します。

バージョン履歴

R2017b で導入

すべて展開する