ThrustとかをVisualStudioでコンパイルすると、C4819警告が大量に出てめんどくさい、とかいう状況になりますよね。
で、普通にVisualStudioのコンパイラ(cl)でやるときは、/wd 4819
とオプションに付け加える(「プロジェクトのプロパティ>構成プロパティ>C/C++>詳細設定>指定の警告を無効にする」で4819と指定する)だけで無視できるんですが、CUDAのコンパイラ(nvcc)にはそんなオプションがありません。
といっても、nvccはホストとデバイスを分離した後、ホスト側のコードはclでコンパイルするはずなので、どうにかcl用のコンパイラオプションを直接渡せばいいわけです。
でも簡単に見つからなかったので聞いてみました。そしたら、nvccには-Xcompiler
という、ホストコンパイラ(clなど)に直接オプションを渡すことの出来るオプションがあるというじゃないですか!調べたら確かにありました(なんで気づかなかった・・・)。
というわけで、例えばC4819警告を無視するには、「構成プロパティ>CUDA C/C++>Command Line>追加オプション」に
-Xcompiler "/wd 4819"
と入れればできました。やったね200個ぐらい出てた警告がなくなったよ!
ちなみにこれ別に警告を無視する以外にもclに渡したいオプションがあればできるっぽいので、必要なときは使っていこうと思いました。