Cuda kernel failed. Error: invalid device function
出现这种错误是由于makefile.config中的问题,cuda计算能力设置错误(即-arch=sm_35)。
#-gencode=arch=compute_35,code=sm_35
#-gencode=arch=compute_52,code=sm_52 -gencode=arch=compute_52,code=compute_52
all:
nvcc -O3 -m64 -arch=sm_35 -c bhsparse_cuda.cu -o bhsparse_cuda.o $(INCLUDES)
nvcc -O3 -m64 -arch=sm_35 -c ref.cu -o ref.o $(INCLUDES)
$(CC) -m64 -O3 main.cpp bhsparse.cpp bhsparse_cuda.o ref.o -o spgemm $(INCLUDES) $(LIBS)
需要根据GPU的计算能力设置其参数,不同GPU对应的计算能力如下图所示。