メインの cpp ファイルでテンプレート化された CUDA (Thrust ライブラリ) 関数を使用するため、CUDA NVCC でコンパイルする必要があります。
NVCC がホスト コードをどのように扱うかが心配です。ホスト コードの最適化はどのように行われますか? NVCC はホスト コードを MSVC コンパイラに渡し、CUDA 関連のコードのみを処理しますか?
メインの cpp ファイルでテンプレート化された CUDA (Thrust ライブラリ) 関数を使用するため、CUDA NVCC でコンパイルする必要があります。
NVCC がホスト コードをどのように扱うかが心配です。ホスト コードの最適化はどのように行われますか? NVCC はホスト コードを MSVC コンパイラに渡し、CUDA 関連のコードのみを処理しますか?
はい、nvcc
ホスト コードとデバイス コードを分離するコンパイラ ドライバです。ホスト コードはホスト コンパイラ (Microsoft Windows の場合) に直接渡され、cl.exe
ホスト コードの最適化はホスト コンパイラによって処理されます。
nvcc のドキュメントでは、このコンパイル フローについて説明し、フラグをホスト コンパイラに渡す方法も示しています。