gpt4 book ai didi

c++ - 如何将其他 .wo、.so、.a 文件链接到当前 cuda 编译

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:47:23 24 4
gpt4 key购买 nike

我想将 libcudart.so 链接到我的 cuda 代码,以便可以引用这些函数。当我在 .so 文件或 .o 文件上触发 readelf -Ws 时,它显示多个 UND(未定义)条目。请帮忙。

nvcc -c cuda/spmv/dispatch-float-float.cu -o cuda/spmv/dispatch-float-float.o -O2 -v -I. -gencode arch=compute_30,code=sm_30 -DCUDA_ARCH=30 --ptxas-options -v --cudafe-options --diag_suppress=code_is_unreachable --compiler-options -fPIC --compiler-options -fpermissive

这是我的编译代码。它不从 libcudart.so 文件和 CUDA 函数链接 CUDA 函数保持未定义。


这是我的 Makefile,请提出更改建议。

NVCC = nvcc
CUDA_PATH = $(shell which $(NVCC) | sed s@/bin/nvcc@@)

CUDA_ARCH = 35

CUDA_INCLUDE := -I$(CUDA_PATH)/include/

CXXWARN := -Wall -Wno-sign-compare
CXXOPT := -O2
CXXFLAGS := $(CXXOPT) -g $(CXXWARN) -fPIC -I. $(CUDA_INCLUDE)

NVCCFLAGS := -O2 -v -I. -gencode arch=compute_$(CUDA_ARCH),code=sm_$(CUDA_ARCH) \
-DCUDA_ARCH=$(CUDA_ARCH) \
--ptxas-options -v \
--cudafe-options --diag_suppress=code_is_unreachable \
--compiler-options -fPIC

LIB = libispm0-pic.a
all: $(LIB)

SPMV_OBJS = cuda/spmv/dispatch-float-float.o cuda/spmv/dispatch-double-float.o cuda/spmv/dispatch-double-double.o
EXTRA_OBJS = util/cuda/sblas.o fastainv/fastainv.o util/cuda/initialize.o
OBJS = $(SPMV_OBJS) $(EXTRA_OBJS)

$(LIB): $(OBJS)
ar cr $@ $^

cuda/spmv/dispatch-%.o: cuda/spmv/dispatch-%.cu
$(NVCC) -c $< -o $@ $(NVCCFLAGS) --compiler-options -fpermissive
objcopy --localize-hidden $@

util/cuda/%.o: util/cuda/%.cu
$(NVCC) -c $< -o $@ $(NVCCFLAGS)

fastainv/fastainv.o: fastainv/fastainv.cpp
$(CXX) -c $< -o $@ $(CXXFLAGS)

clean:
-rm $(OBJS) $(LIB)

最佳答案

所以你的意思是你想针对 -lcudart 进行静态链接,以便这些引用始终由操作系统加载程序解析。

在最近的 CUDA 工具包中,nvcc 接受标志

--cudart{none|shared|static} (-cudart)
shared/dynamic CUDA runtime library, or static CUDA runtime library. Allowed values for this option: 'none','shared','static'.

所以也许您可以尝试将 --cudart static 添加到您的 make 规则中。

关于c++ - 如何将其他 .wo、.so、.a 文件链接到当前 cuda 编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35597121/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com