cudaの分割コンパイルが滅茶苦茶面倒くさい件について

 nvccでC++にしてからコンパイルしてobjファイル作ってリンクする?らしい。面倒くさい。
 Makefile作るの面倒だから、適当にやった。ファイルが、

test.cuh
test.cu
util.cuh
util.cu

みたいになってるとして、最初にnvccの--cudaオプションで*.cuを*.cppにする。

$ nvcc --cuda test.cu -o test.cpp
$ nvcc --cuda util.cu -o util.cpp

g++でcppにしたやつをコンパイルしてobjファイルをつくる。

$ g++ -c test.o
$ g++ -c util.o

これをnvccでリンクする。

$ nvcc test.o util.o -o test

で、普通にtestができてるので、

$ ./test

すればいい。
 が、単一ファイルでコンパイルしたやつより1.5倍くらい時間がかかる。なんかコンパイルとかリンクのオプション付けると速くならないかな。別に一つのファイルでやってもいいんだけどな。

 Makefileを使ったきちんとしたやりかたは下記を参照。

x.momo86.net

gist.github.com