プロジェクト内で cuda カーネル コードと他の cpp コードを分離するにはどうすればよいですか? 必要なときにそれらを呼び出す他の cpp ファイルとして、単一のファイル内のすべてのカーネル定義を収集したいと考えています。kernel.cu 内にすべてのカーネルを記述し、kernel.cu ファイルをインクルードしてカーネルを呼び出そうとしましたが、コンパイル時に次のエラーが発生します。
/usr/bin/ld: error: ./vector_summation.o: multiple definition of
'perform_summation_method1(int*, int)'
/usr/bin/ld: ./kernels.o: previous definition here
/usr/bin/ld: error: ./vector_summation.o: multiple definition of '__device_stub__Z25perform_summation_method1Pii(int*, int)'
/usr/bin/ld: ./kernels.o: previous definition here
/usr/bin/ld: error: ./vector_summation.o: multiple definition of '__device_stub__Z25perform_summation_method2PiS_i(int*, int*, int)'
/usr/bin/ld: ./kernels.o: previous definition here
/usr/bin/ld: error: ./vector_summation.o: multiple definition of 'perform_summation_method2(int*, int*, int)'
/usr/bin/ld: ./kernels.o: previous definition here
/usr/bin/ld: error: ./vector_summation.o: multiple definition of '__device_stub__Z25perform_summation_method3PiS_i(int*, int*, int)'
/usr/bin/ld: ./kernels.o: previous definition here
/usr/bin/ld: error: ./vector_summation.o: multiple definition of 'perform_summation_method3(int*, int*, int)'
/usr/bin/ld: ./kernels.o: previous definition here