0

4 つの異なる cpp ファイルを使用し、1 つの cuda ファイルを含む 3 つの個別のプログラムをコンパイルする必要があります。

ファイルは次のとおりです。

final_serial.cpp
final_mpi.cpp
final_mpicuda.cpp and final_cuda.cu

final_mpicuda.cpp と final_cuda.cu は一緒にリンクする必要があります。

私の現在の Makefile は、最初の 2 つのファイル、serial と mpi をコンパイルするだけで、次のようになります。

MPIDIR=/usr/lib64/mpich2/
CC=$(MPIDIR)/bin/mpic++
LIBS=-L$(MPIDIR)/lib -lmpl -lopa

all: serial mpi

mpi: final_mpi.cpp
    $(CC) $(LIBS) -o $@ $^

serial: final_serial.cpp
    g++ -o serial final_serial.cpp

リンクfinal_mpicuda.cppしてfinal_cuda.cu一緒にするには、次のコマンドを実行する必要があります。

/usr/local/cuda-5.0/bin/nvcc --compiler-bindir /usr/local/gcc/bin -c final_cuda.cu -o cudacode.o
/usr/lib64/mpich2/bin/mpic++ -lmpl -lopa -c final_mpicuda.cpp -o mpicode.o
/usr/lib64/mpich2/bin/mpic++ -lmpl -lopa mpicode.o cudacode.o -L/usr/local/cuda-5.0/lib64 -lcudart -o cuda

という名前の実行可能ファイルを生成しますcudacudaしたがって、私の質問は、上記の Makefile を使用して withというファイルを作成するにはどうすればよいかということです。これらのファイルをリンクするための 3 つのコマンドを Makefile に組み込む方法がわかりません。

ありがとう

4

1 に答える 1

3

これを試して:

mpicode.o: final_mpicuda.cpp
    $(CC) -lmpl -lopa -c $< -o $@

cudacode.o: final_cuda.cu
    /usr/local/cuda-5.0/bin/nvcc --compiler-bindir /usr/local/gcc/bin -c $< -o $@

cuda: mpicode.o cudacode.o
    $(CC) -lmpl -lopa $^ -L/usr/local/cuda-5.0/lib64 -lcudart -o $@
于 2013-03-21T04:59:35.940 に答える