nvccのコンパイル時の一時ファイルを残す方法

何の話か

PTXをinline assemblerで書いている場合など,nvcc (ptxas)でアセンブル時に

ptxas /tmp/tmpxft_00005f3d_00000000-5_main.ptx, line 76; fatal   : Parsing error near '%r10': syntax error
のように一時ファイルのptxの行番号などが表示されることがありますが,nvccは終了時に一時ファイルを自動で消すためエラーの追跡ができません.
そこで一時ファイルを消さないようにするにはどうすればいいのかという話.

--keepオプション

nvccに--keepオプションを渡すと中間のファイルがCurrect directoryに展開され,かつ自動では消されません.

ptxas main.ptx, line 76; fatal   : Parsing error near '%r10': syntax error
するとエラーメッセージもそのディレクトリのものとなりエラーを追えるようになります.
中間ファイルはptxやiiなどいくつかあり,Current directoryが散らかるのですが,これを避けるためには--keep-dirオプションで中間ファイルの置き場を指定してあげるといいようです.
nvcc main.cu -std=c++14 -arch=sm_75 --keep --keep-dir=tmp

カテゴリー:CUDA
記事作成日:2020-04-08