2

Windows XP 64 ビット、MATLAB R2012a (R2010a もここで入手できますが、インストールされていません)、VS 2010 (VS 2008/VS 2012 も入手可能ですが、インストールされていません)、および CUDA 5.0 がインストールされています。

MATLAB でこれらを使用して CUDA コードをコンパイルして mex ファイルを作成することは可能ですか? 誰でも必要な手順や、さらにインストールする必要があるものを手伝ってもらえますか??

前もって感謝します

4

3 に答える 3

3

MATLAB 2013 の使用

2013 にアップグレードできる場合は読み進めてください。それ以外の場合は、ページの下部に移動して 2012 バージョンの提案を参照してください。アップグレードする予定がない場合でも、最初のセクションを読んでおけば、いくつかの手がかりが得られるかもしれません。

MATLAB 2012 を使用して MEX 関数をコンパイルする際に常に問題がありました。2013 にアップグレードしたことで、CUDA MEX ファイルを非常に簡単にコンパイルできるようになりました。MATLAB 内ですべてのクレイジーなフラグを使用して NVCC を呼び出すことを心配する必要はありません。

必要なのはmexopts.bat、MATLAB インストールからファイルをコピーすることだけです。

matlabroot\toolbox\distcomp\gpu\extern\src\mex\win64\mexopts.bat2 (ここで、matlabroot は MATLAB インストール フォルダーで、次のようなものですC:\Program Files\MATLAB\Matlab2013a。)

エントリ ポイント関数を含む.cuファイルを含むプロジェクト フォルダーに移動します。mexさらに、2 つの CUDA ライブラリを追加する必要があります:cuda.libcudart.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

于 2013-07-29T19:45:34.407 に答える
1

Compiling CUDA mex files with Visual Studioの手順を使用することをお勧めします。

構成: Matlab 2010a、Visual Studio 2010、Intel 64 ビット マシン。

  1. ファイル→新規プロジェクト

  2. MFC DLL を選択し、プロジェクトの名前と場所を
    選択します [OK ] を選択します

  3. 次を選択

  4. [完了] を選択します (選択を変更しないでください)。

  5. ソリューション エクスプローラー → プロジェクト名を右クリック → Build Customizations → CUDA 5.0 → OK

  6. プロジェクト→新しいアイテムを追加; C++ ファイル (.cpp) を選択します。ファイルの名前を選択してください

  7. 行 #include "stdafx.h"; を追加します。もちろん、必要に応じて「mex.h」と<cuda.h>、<cuda_runtime.h>などを含めます

  8. 上記の include 行の下に mexFunction を含むコードを記述します。この .cpp ファイルには、CPU 側のコード、つまり mex 関数とその他の C++ 関数のみを含める必要があります。mex 関数と C++ 関数には、カーネル関数の呼び出しを含めないでください (<<< >>> 構文は許可されません)。カーネル呼び出しは、この .cpp ファイルで extern "C" として宣言され、.cu ファイルで定義される "ラッパー関数" に含まれている必要があります (次のポイントを参照)。

  9. プロジェクト→新しいアイテムを追加; C++ ファイル (.cpp) を選択します。ファイルの名前を選択しますが、.cu 拡張子を使用します。この .cu ファイルには、必要なグローバル機能とデバイス機能が含まれている必要があります。

  10. 次の行を .def ファイルに追加します。

ライブラリ "TestMex" EXPORTS mexFunction

TestMex を .cpp ファイルの名前に置き換えます

  1. プロジェクト → プロパティ → 構成プロパティ → C/C++ &rarr 一般 → 追加のインクルード ディレクトリ → C:\Program Files\MATLAB\R2010a\extern\include を追加

  2. プロジェクト → プロパティ → 構成プロパティ → リンカー &rarr 一般 → 出力ファイル → $(OutDir)$(ProjectName).mexw64

  3. プロジェクト → プロパティ → 構成プロパティ → リンカー &rarr 入力 → 追加の依存関係 → C:\Program Files\MATLAB\R2010a\extern\lib\win64\microsoft\libmex.lib; C:\Program Files\MATLAB\R2010a\extern\lib\win64\microsoft\libmx.lib

  4. プロジェクト → プロパティ → 構成プロパティ → CUDA C/C++ &rarr デバイス → コンピューティング機能を選択

  5. プロジェクト → プロパティ → 構成プロパティ → 構成マネージャー → アクティブ ソリューション プラットフォーム → 新規 → x64 → Win32 から設定をコピー

  6. プロジェクト → プロパティ → 構成プロパティ → リンカー &rarr 入力 → 追加の依存関係 → cudart.lib を追加

  7. コンパイルされた mex ライブラリを含むディレクトリは ..\x64\Debug です。

添付の Visual Studio 2010 プロジェクトで実際の例を見つけることができます。

この手順は、CUDA 5.0、Visual Studio 2010、および Matlab 2010a/2012b でテストされていますが、上記の製品の他のバージョンを使用しているユーザーにも興味深いかもしれません。

于 2013-08-08T07:21:05.177 に答える
0

Matlab2015b では、以下のように .cu ファイルをコンパイルできることに気付きました。

mexcuda XXX.cu

これは私がしばらく使用してきたもので、はるかに簡単です! 2015b を使用していないため、あまり役に立たないかもしれませんが、これが役に立てば幸いです。

于 2015-11-12T18:28:22.237 に答える