1

私はCudaを統合してmatlab mexコードを書こうとしていますが、コンパイルしてデバッグするのは難しいです。コードとテストへのより良いアプローチはありますか? 私はMatlab 2012bを使用しています。

現在、私は崇高なコードを書いてからmatlabでコンパイルしていますが、CUDAの初心者でもあるため、結果をすぐに確認せずにコーディングするのは難しいです。

4

2 に答える 2

2

ロバート・クロヴェラのコメントは興味深い。

CUDA命令を使用してmexファイルをコンパイルするために使用された方法(およびMATLABの異なるバージョンでも機能する)について言及したかっただけです。

1)nvccコマンドで C++ コードのソース コードをコンパイルおよび変換する

 system(sprintf('nvcc -I"%s/extern/include" -cuda "mex-fun.cu" -output-file "mexfun.cpp"', matlabroot));

2)それをMatlabにリンクします

mex -I/opt/cuda/include -L/opt/cuda/lib -lcudart mex-fun.cpp

これは、MATLAB Newsreader ページで最初に提案されたものです。

于 2013-01-18T20:04:51.197 に答える
1

matlab エントリ ポイント (つまり、関数 "mexFunction" を含むファイル) と C++ エントリ ポイント ("main" を含むファイル) の両方があり、実際の CUDA コードの残りの部分は、使用されたエントリ ポイントに依存しません。このようにして、MEX ファイルを処理することなく、CUDA ツールの標準セット (つまり、nvprof、cuda-memcheck など) を使用して MEX ファイルに使用されるコードをデバッグできます。次に、バグやメモリ リークがないことを確認したら、それを MEX ファイルにコンパイルします。別の方法として、常に cuda-gdb を MEX ファイルにアタッチすることもできますが、マイレージはこれによって異なる場合があります。

于 2013-01-19T01:29:54.333 に答える