MATLAB 2013 の使用
2013 にアップグレードできる場合は読み進めてください。それ以外の場合は、ページの下部に移動して 2012 バージョンの提案を参照してください。アップグレードする予定がない場合でも、最初のセクションを読んでおけば、いくつかの手がかりが得られるかもしれません。
MATLAB 2012 を使用して MEX 関数をコンパイルする際に常に問題がありました。2013 にアップグレードしたことで、CUDA MEX ファイルを非常に簡単にコンパイルできるようになりました。MATLAB 内ですべてのクレイジーなフラグを使用して NVCC を呼び出すことを心配する必要はありません。
必要なのはmexopts.bat
、MATLAB インストールからファイルをコピーすることだけです。
matlabroot\toolbox\distcomp\gpu\extern\src\mex\win64\mexopts.bat
2 (ここで、matlabroot は MATLAB インストール フォルダーで、次のようなものですC:\Program Files\MATLAB\Matlab2013a
。)
エントリ ポイント関数を含む.cu
ファイルを含むプロジェクト フォルダーに移動します。mex
さらに、2 つの CUDA ライブラリを追加する必要があります:cuda.lib
とcudart.lib
を CUDA インストール フォルダーから同じフォルダーに追加します。これら 2 つのライブラリをプロジェクトに含めました。これらは、CUDA ツールキット インストール フォルダーのどこかでも利用できるはずです。
次に、MATLAB に移動して実行mex -setup
し、コンパイラを選択します。Visual Studio 2010 がインストールされているので、一覧に表示されます。画面の指示に従って、コンパイラを選択してください -詳細. コンパイラが表示されない場合や問題が発生する場合は、Windows SDKのインストールを試すことができます。また、コンパイラと Visual Studio のバージョンに関するこの投稿も参照してください。
MEX コンパイルを確認したい場合は、 my projectをチェックアウトしてください。コンテンツをダウンロードしてコンピューターのどこかにあるフォルダーに配置し、MATLAB を開きます。次に、そのディレクトリに移動し、MATLAB でpwd
コマンド ウィンドウで を使用して、実際にそのディレクトリにいることを確認します。そのディレクトリにいる場合は通知されますが、フォルダーとサブフォルダーがファイル パスに追加されていることを確認してください (MATLAB でフォルダーを右クリックし、[パスの追加] > [フォルダーとサブフォルダー] を選択します)。
次に、実行しmex f.cu
ます。これにより、CUDA MEX ファイルがコンパイルされ、ライブラリが同じフォルダーに配置されますf
。MATLAB で関数として呼び出すことができ、MATLAB はそれがどこから来たかを気にしません。実際に機能するかどうかを確認するには、 を作成して関数gpuArray
を呼び出します。f
このような:
input = gpuArray.ones(100,100); % makes an array of ones (100x100) on the gpu.
y = f(input) % will perform the operation defined in f.cu
次のようなものが得られます。
MATLAB 2012 で MEX ファイルをコンパイルするための提案:
Visual Studio 2010 Professional を使用しても、64 ビット Windows の MATLAB 2012 で MEX ファイルのコンパイルに成功したことはありません。しかし、まず、 MEX ファイルと CUDA については、このドキュメントページを参照してください。MATLAB での MEX ファイルのコンパイルに関する一般的な情報については、このページも参照してください。これらのページを読んだら、NVCC コンパイラと、MATLAB で適切に呼び出す方法を確認してください。私はいつも自分に合うようにするのが難しく、成功したことはありませんでした. しかし、がっかりしないでください。重要なのは、MATLAB のコンパイラを使用して基本的な C または C++ ファイルをコンパイルできるかどうかを確認することです。それが成功したら、CUDA のコンパイルに進みます。何も機能しない場合は、Visual Studio で直接コンパイルする方法に関するこの投稿を確認してください。幸運を !
参考文献:
2: http://www.mathworks.com/help/distcomp/create-and-run-mex-files-containing-cuda-code.html