示例一:
all: program
program: cudacode.o
g++ -o program -L/usr/local/cuda/lib64 -lcuda -lcudart main.cpp cudacode.o
cudacode.o:
nvcc -c -arch=sm_20 cudacode.cu
clean: rm -f *.o program
示例二:
SM := 35
CC := gcc
NVCC := nvcc
CFLAGS = -std=c99
NVCCFLAGS = -O3
GENCODE_FLAGS = -gencode arch=compute_$(SM),code=sm_$(SM)
LIB_FLAGS = -lcudadevrt -lcudart
BUILDDIR = build
TARGET = stencil
all: $(TARGET)
$(TARGET): $(BUILDDIR)/dlink.o $(BUILDDIR)/main.o $(BUILDDIR)/$(TARGET).o
$(CC) $(CFLAGS) $^ -o $@ $(LIB_FLAGS)
$(BUILDDIR)/dlink.o: $(BUILDDIR)/$(TARGET).o
$(NVCC) $(NVCCFLAGS) $^ -o $@ $(GENCODE_FLAGS) -dlink
$(BUILDDIR)/main.o: main.c
$(CC) $(CFLAGS) -c $< -o $@
$(BUILDDIR)/$(TARGET).o: kernal.cu
$(NVCC) $(NVCCFLAGS) $< -o $@ $(GENCODE_FLAGS)
clean:
rm -f $(BUILDDIR)/*.o $(TARGET)
示例三:
nvcc --shared --compiler-options -fPIC -shared lib_cuda_blas_backend.cu -o libcuda_blas_backend.so -L/usr/local/cuda/lib -lcublas
gcc -o main main.c -ladd
参考资料: