为 CUDA 程序创建 makefile

pat*_*heo 3 makefile nvcc

我想使用 CUDA 和 C++ 自动编译玩具库。然后我写了一个Makefile如下

CC=g++
NVCC=nvcc
CXXFLAGS= -fopenmp -O3 -Wextra -std=c++11
CUDAFLAGS= -std=c++11 -c -arch=sm_20
LIBS= -lopenblas -lpthread -lcudart -lcublas
LIBDIRS=-L/usr/local/cuda-7.5/lib64
INCDIRS=-I/usr/local/cuda-7.5/include
matrix_cuda.o: marix_cuda.cu
     $(NVCC) $(CUDAFLAGS)   matrix_cuda.cu
all: matrix_cuda.o
        $(CC) -o test matrix_blas.cpp alg.cpp test.cpp matrix_cuda.o $(LIBDIRS) $(INCDIRS) $(LIBS) $(CXXFLAGS)
clean:
    rm -rf test *.o
Run Code Online (Sandbox Code Playgroud)

打字make我得到

make: *** No rule to make target `marix_cuda.cu', needed by `matrix_cuda.o'.  Stop.
Run Code Online (Sandbox Code Playgroud)

我以前从未写过Makefile。我哪里做错了?

Qui*_*cky 8

我认为你的 CUDA 文件名有拼写错误

matrix_cuda.o: marix_cuda.cu
     $(NVCC) $(CUDAFLAGS)   matrix_cuda.cu
Run Code Online (Sandbox Code Playgroud)

恕我直言,应该是

matrix_cuda.o: matrix_cuda.cu
     $(NVCC) $(CUDAFLAGS)   matrix_cuda.cu
Run Code Online (Sandbox Code Playgroud)