4

私はCUDAをboost::spiritを使用する既存のアプリケーションに統合しようとしています。

問題を特定すると、次のコードがnvccとコピーされないことがわかりました。

main.cu

#include <boost/spirit/include/qi.hpp>
int main(){
    exit(0);
}

でコンパイルすると、ここnvcc -o cudaTest main.cuで確認できる多くのエラーが発生します。

しかし、ファイル名をに変更し、main.cppを使用して再度コンパイルするとnvcc、機能します。ここで何が起こっているのですか、どうすれば修正できますか?

4

1 に答える 1

5

nvccコードが関数でのみ使用されている場合でも、Boostにあるような複雑なテンプレートコードのコンパイルで問題が発生することがあり__host__ます。

ファイルの拡張子が.cppである場合、nvccそれ自体は解析を実行せず、代わりにコードをホストコンパイラに転送します。そのため、ファイル拡張子に応じて異なる動作が見られます。

可能であれば、Boostに依存するコードを。.cppで解析する必要のないファイルに隔離してみてくださいnvcc

また、最近のCUDA4.1nvccに同梱されているものも試してみます。のテンプレートサポートは、リリースごとに向上します。nvcc

于 2011-11-15T15:43:20.483 に答える