我想使用 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
输入 make
我明白了
make: *** No rule to make target `marix_cuda.cu', needed by `matrix_cuda.o'. Stop.
我以前从未写过 Makefile。我哪里出错了?
最佳答案
我认为你的 CUDA 文件名有错字
matrix_cuda.o: marix_cuda.cu
$(NVCC) $(CUDAFLAGS) matrix_cuda.cu
恕我直言应该是
matrix_cuda.o: matrix_cuda.cu
$(NVCC) $(CUDAFLAGS) matrix_cuda.cu
关于makefile - 为 CUDA 程序创建 makefile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34108372/