7

現在、MATLAB で使用する CUDA 機能を備えた mex ファイルを開発しています。何か間違ったことをしている場合 (たとえば、間違ったポインターなど)、MATLAB は常にクラッシュします (Windows は、終了するか、mathworks にレポートを送信するか、続行しようとするかを尋ねます)。これを防ぐ方法はありますか?そのような開発は本当に面倒ですが、おそらくご存じのとおり、「試行錯誤」なしに完璧なコードを書ける人はほとんどいません...今までありがとう!

4

3 に答える 3

4

私の知る限り、MEX バグで Matlab がクラッシュするのを防ぐ方法はありません。ただし、デバッガーを Matlab プロセスにアタッチして、コードをステップ実行できる場合があります。

コードがMatlabにロードする外部dllにある場合、これが機能することを私は知っています。これが mex ファイルで機能するかどうかはわかりません。

于 2011-05-12T19:41:56.360 に答える
3

Matlab MEX ファイル ページから、

mex -g yourmexfile.c

まだこれを行っていない場合。

于 2011-05-12T22:44:58.583 に答える
2

次の手順で、Visual Studio および NVIDIA Nsight for Visual Studio を使用して、CUDA コードを含む Matlab mexfile をデバッグできます。

  1. システム環境変数NSIGHT_CUDA_DEBUGGERを定義し、 1に設定します。
  2. Matlabを起動します。
  3. NVIDIA Nsightを起動します。タスクバーの Nsight Monitor アイコンを右クリックし、[オプション] を選択します。[CUDA] タブを選択します。Use this Monitor for CUDA attachのオプションで、ドロップダウン メニューをクリックしてTrueを選択します。
  4. プロジェクトを Visual Studio で開き、ブレークポイントを設定してコンパイルします。
  5. Tools -> Attach to Processに移動します。
  6. Transportフィールドの横にあるドロップダウン メニューをクリックし、Nsight GPU Debuggerを選択します。
  7. ホスト マシン名が [修飾子]フィールドに表示されていることを確認します。このフィールドはデフォルトで空白になっていることに注意してください。このダイアログを初めて開いたときに、マシン名を手動で選択する必要があります。
  8. [Qualifier] フィールドにコンピュータのホスト名を入力すると、使用可能なプロセスのリストがダイアログ ボックスに表示されます。CUDA の使用法に関連付けられている可能性があるプロセスは、[タイプ] 列に CUDA がリストされて表示されます。プロセスがグレー表示されていて、[タイプ] 列にCUDAが表示されている場合、そのプロセスは既にデバッグされているため、アタッチできません。[タイプ] 列にCUDAがなくグレー表示されているプロセスは、デバッグ対象のプロセスでCUDAが使用されていないことを示します。アタッチできるプロセスが正常に表示され、[アタッチ] ボタンが有効になります。
  9. Matlabの [タイプ] 列にCUDAあることを確認し、それを選択します。
  10. Matlab コマンド ラインから、CUDA mexfile で定義されている関数を呼び出します。実行は最初のブレークポイントで停止し、デバッグを開始できます。
于 2013-10-07T20:33:51.600 に答える