消えたCUDA関連の旧ブログ記事を復元するひとり Advent Calendar 2024の記事です。
最近CUDAのテンプレートを整備し直していたのでその備忘録を.
やりたいこと
コンパイル時間が長引くのが嫌なので分割コンパイル.
オブジェクトファイルがソースコードと同じディレクトリにできるのは嫌なのでobjディレクトリに出力.
- cppやcuを別々にobj/~.oにコンパイルする
- obj/~.oをまとめる
このような書き方ではオブジェクトファイルはできるもののobjディレクトリに作る事はできませんでした...
どう書いたか
nvccコマンドには--cudaというオプションがあり,
cuコードをcppコードに変換する.
これを使えば
- nvcc --cudaでcuをcppに変換する
- g++等でcppをobj/~.oにコンパイル
のようにしてやりたかったことができた.
普段使っているMakefile
これを使うとSRCDIRディレクトリ内のcpp,cuファイルをobjファイル(OBJDIR下に作られる)にし,TARGETという名の実行ファイルが作られる.