Main Content

このページの翻訳は最新ではありません。ここをクリックして、英語の最新版を参照してください。

mexcuda

GPU 計算用の MEX 関数のコンパイル

説明

mexcuda filenames は、ソース ファイルをコンパイルして、MATLAB® 内から実行可能な MEX ファイルと呼ばれる共有ライブラリにリンクします。この関数は CUDA® C++ フレームワークを使用して作成された MEX ファイルを NVIDIA®nvcc コンパイラでコンパイルすることで、これらのファイルでの GPU カーネルの定義と起動が可能になります。また、関数 mexcuda は GPU MEX API を表示し、MEX ファイルによる gpuArray の読み取りと書き込みを可能にします。

mexcuda は MATLAB 関数 mex の拡張です。mexcuda は、mex によってサポートされるコンパイラの一部のみをサポートします。サポートされるコンパイラは、MATLAB がサポートする CUDA ツールキットのバージョンに依存します。

mexcuda option1 ... optionN filenames は、指定されたビルド オプションを使用してビルドします。option1 ... optionN 引数は、既定の mexcuda ビルド構成を補足するかオーバーライドします。mexcuda では、mex で使用できるほとんどのオプションを使用できます。

すべて折りたたむ

単純な MEX 関数をコンパイルして、CUDA C++ のソース ファイルから関数 myMexFunction を作成します。

mexcuda myMexFunction.cu

ソース ファイルの例は、matlabroot/toolbox/parallel/gpu/extern/src/mex/mexGPUExample.cu で入手できます。

コンパイルやリンクのコマンドおよびトラブルシューティングに役立つその他の情報を表示するには、詳細モードを使用します。

mexcuda -v myMexFunction.cu

1 つのコマンドで複数のソース ファイルをコンパイルしてリンクします。

mexcuda myMexFunction.cu otherSource1.cpp otherSource2.cpp

はじめにコンパイルを行い、次にリンクして関数を作成します。

mexcuda -c myMexFunction.cu
mexcuda myMexFunction.obj

1 行目で myMexFunction.obj (Windows®) または myMexFunction.o (UNIX®) にコンパイルし、2 行目でリンクして関数 myMexFunction を作成します。

動的パラレル化を使用するコードをコンパイルして、他のカーネルを起動するカーネルを定義します。

mexcuda -dynamic myMexFunction.cu

CUDA イメージ プリミティブ ライブラリ npp を使用する MEX 関数をコンパイルします。このライブラリは、C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\lib\x64\nppi.lib にインストールされています。

mexcuda '-LC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5\lib\x64' -lnppi myMexFunction.cu 

入力引数

すべて折りたたむ

名前とファイル拡張子を含む 1 つ以上のファイル名。文字ベクトルとして指定します。ファイルが現在のフォルダーにない場合は、ファイルへの絶対パスを指定します。ファイル名には、以下を任意に組み合わせることができます。

  • C または C++ 言語のソース ファイル

  • オブジェクト ファイル

  • ライブラリ ファイル

filenames のリストに最初に現れるソース コード ファイルが、バイナリ MEX ファイルの名前になります。この命名規則をオーバーライドするには、'-output' オプションを使用します。

データ型: char

1 つ以上のビルド オプション。以下のいずれかの値として指定します。オプションは、指示がある場合を除き、任意のプラットフォームで任意の順序で指定できます。

関数 mex で使用できるほとんどのオプションがサポートされています。これに加えて、以下のオプションも使用できます。

オプション説明

-dynamic

動的パラレル化: 他のカーネルを起動するカーネルを定義する MEX ファイルをコンパイルします。

-G

デバイス コードのデバッグ情報を生成します。これにより、NVIDIA のデバッグ アプリケーションのいずれか (NSight または cuda-gdb) で、カーネル コードを行単位でステップ実行できるようになります。ホスト コードのデバッグを有効にするには、-g を使用します。

関数 mex の以下のオプションはサポートされていません。

オプション理由

-compatibleArrayDims

MATLAB の大規模配列ハンドリング API の使用は暗黙的であり、オーバーライドできません。

mex の他のすべてのオプションは、mexcuda でサポートされています。詳細については、mex のドキュメンテーションを参照してください。

ヒント

  • CUDA ツールキットが検出されないか、サポートされているバージョンでない場合、MATLAB は MATLAB と共にインストールされる NVIDIA nvcc コンパイラを使用して CUDA コードをコンパイルします。mexcuda が使用しているコンパイラを確認するには、mexcuda コマンドで詳細出力を得るための -v フラグを使用します。

  • MATLAB と共にインストールされる CUDA ツールキットには、CUDA ツールキットで使用可能なすべてのライブラリが含まれているわけではありません。MATLAB と共にインストールされていない特定のライブラリにリンクするには、CUDA ツールキットをインストールします。gpuDevice を使用して、MATLAB に必要な CUDA ツールキットのバージョンをチェックできます。CUDA ツールキットの詳細については、CUDA ツールキットを参照してください。

  • mexcuda で、インストール済みの CUDA ツールキット内に NVIDIA コンパイラ (nvcc) が見つからない場合は、既定以外の場所にインストールされている可能性があります。システム上の nvcc の場所を環境変数 MW_NVCC_PATH に保存して指定することができます。この変数を設定するには、MATLAB コマンド setenv を使用します。以下に例を示します。

    setenv('MW_NVCC_PATH','/usr/local/CUDA/bin')
R2015b で導入