我有一个 .cu 文件,其中包含我的 cuda 内核,以及一个调用内核的包装函数。我也有一堆 .c 文件,其中一个包含主要功能。这些 .c 文件之一从 .cu 调用包装函数来调用内核。
我编译这些文件如下:
LIBS=-lcuda -lcudart
LIBDIR=-L/usr/local/cuda/lib64
CFLAGS = -g -c -Wall -Iinclude -Ioflib
NVCCFLAGS =-g -c -Iinclude -Ioflib
CFLAGSEXE =-g -O2 -Wall -Iinclude -Ioflib
CC=gcc
NVCC=nvcc
objects := $(patsubst oflib/%.c,oflib/%.o,$(wildcard oflib/*.c))
table-hash-gpu.o: table-hash.cu table-hash.h
$(NVCC) $(NVCCFLAGS) table-hash.cu -o table-hash-gpu.o
main: main.c $(objects) table-hash-gpu.o
$(CC) $(CFLAGSEXE) $(objects) table-hash-gpu.o -o udatapath udatapath.c $(LIBS) $(LIBDIR)
到目前为止一切都很好。table-hash-gpu.cu 从 .c 文件之一调用函数。为 main 链接时,我收到该函数不存在的错误。有人可以告诉我发生了什么吗?