私はCudaを統合してmatlab mexコードを書こうとしていますが、コンパイルしてデバッグするのは難しいです。コードとテストへのより良いアプローチはありますか? 私はMatlab 2012bを使用しています。
現在、私は崇高なコードを書いてからmatlabでコンパイルしていますが、CUDAの初心者でもあるため、結果をすぐに確認せずにコーディングするのは難しいです。
私はCudaを統合してmatlab mexコードを書こうとしていますが、コンパイルしてデバッグするのは難しいです。コードとテストへのより良いアプローチはありますか? 私はMatlab 2012bを使用しています。
現在、私は崇高なコードを書いてからmatlabでコンパイルしていますが、CUDAの初心者でもあるため、結果をすぐに確認せずにコーディングするのは難しいです。
ロバート・クロヴェラのコメントは興味深い。
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 ページで最初に提案されたものです。
matlab エントリ ポイント (つまり、関数 "mexFunction" を含むファイル) と C++ エントリ ポイント ("main" を含むファイル) の両方があり、実際の CUDA コードの残りの部分は、使用されたエントリ ポイントに依存しません。このようにして、MEX ファイルを処理することなく、CUDA ツールの標準セット (つまり、nvprof、cuda-memcheck など) を使用して MEX ファイルに使用されるコードをデバッグできます。次に、バグやメモリ リークがないことを確認したら、それを MEX ファイルにコンパイルします。別の方法として、常に cuda-gdb を MEX ファイルにアタッチすることもできますが、マイレージはこれによって異なる場合があります。