You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编译exafmm-alpha项目CUDA代码出现未定义引用错误如何解决

错误原因

你遇到的__cudaPopCallConfiguration、__cudaPushCallConfiguration等符号未定义报错,本质是最终链接阶段没有正确加载完整的CUDA依赖库,也未指定CUDA库文件的搜索路径,你当前使用mpif90作为最终链接器,它不会自动搜索CUDA的库路径。

修复步骤
  • 第一步:补充CUDA库路径与依赖库
    修改Makefile.include中GPU模式的LFLAGS配置,添加CUDA库搜索路径与缺失的依赖库:
ifeq ($(DEVICE),gpu)
LFLAGS  += -L$(CUDA_INSTALL_PATH)/lib64 -lcudart -lcuda
endif

如果上述路径不存在,可替换为你本地实际的CUDA库路径,比如-L/usr/lib/cuda/lib64,你可以执行ls /usr/local/cuda/lib64/libcudart.so验证路径是否有效。

  • 第二步:修正编译规则的参数传递
    你当前把链接参数(LFLAGS)传给了仅编译不链接的阶段(带-c参数的编译命令),属于多余配置,可能引发额外问题,修改Makefile.include中的编译规则:
.cxx.o:
        $(CXX) -c $? -o $@
.cu.o:
        $(NVCC) -c $? -o $@
.f90.o:
        $(FC) -c $? -o $@
  • 第三步:清理缓存后重新编译
    删除之前编译生成的所有.o文件与libfmm.a静态库,再重新执行编译命令即可。
    如果修改后依然报错,可以在NVCC编译参数中添加你当前GPU对应的架构标识,比如安培架构GPU添加-arch=sm_80、图灵架构添加-arch=sm_75,避免跨架构编译导致的符号缺失。

内容的提问来源于stack exchange,提问作者BideshSengupta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 11:06:03