Ubuntu18 error: invalid device function

本文介绍如何在CMakeLists.txt中针对CUDA设备进行设置,包括检查CUDA可用性、设置编译选项、链接库路径,以确保程序能利用CUDA进行高性能计算,特别关注了GPU算力参数的调整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

遇到这个问题可能存在的解决方案,在CmakeLists下面添加对应的显卡:

if(${CUDA_FOUND})
    set(CUDA_SOURCE_PROPERTY_FORMAT OBJ)
    set(CUDA_SEPARABLE_COMPILATION ON)
    include_directories(${CUDA_INCLUDE_DIRS})
    set(CUDA_PROPAGATE_HOST_FLAGS OFF)
    set(CUDA_NVCC_FLAGS -arch=sm_86;-O3;-G;-g;-std=c++11)#根据具体GPU性能更改算力参数
    #SET(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS};-gencode arch=compute_61,code=sm_61;-std=c++11;-O3;-G;-g)
    link_directories($ENV{CUDA_PATH}/lib/x64)
else(${CUDA_FOUND})
    MESSAGE(STATUS "cuda not found!")
endif(${CUDA_FOUND})

了解更多关于《计算机视觉与图形学》相关知识,请关注公众号:

在这里插入图片描述
下载我们视频中代码和相关讲义,请在公众号回复:计算机视觉课程资料

### YoloV5 运行时遇到的 CUDA 错误解决方案 当遇到 `RuntimeError: CUDA error: invalid device function` 或者类似的 `invalid device ordinal` 的错误提示时,这通常意味着 GPU 设备配置不正确或者是使用的 CUDA 函数对于当前设备不合适。 #### 1. 验证环境设置 确保只有一块GPU被识别并可用。可以通过设置环境变量来指定可见的GPU设备: ```bash export CUDA_VISIBLE_DEVICES=0 ``` 这条命令会使得只有编号为0的GPU对程序可见[^4]。 #### 2. 检查CUDA版本兼容性 确认安装的PyTorch版本与NVIDIA驱动以及CUDA工具包之间的匹配情况。不同版本之间可能存在兼容性问题,查阅官方文档获取支持矩阵有助于找到合适的组合[^1]。 #### 3. 调试模式启用 为了更精确地定位引发异常的具体操作,在启动脚本前可以开启同步执行模式以便更好地追踪到实际发生错误的位置: ```bash export CUDA_LAUNCH_BLOCKING=1 ``` 此方法可以让每一个CUDA调用都等待完成后再继续下一个,从而帮助开发者更容易发现具体哪个部分出现了问题[^3]。 #### 4. 修改模型加载方式 如果上述措施未能解决问题,则尝试调整模型初始化过程中的参数设定,比如更改预训练权重文件路径或是改变输入图像尺寸等,有时这些细微的变化也会影响到能否成功部署至GPU上运行[^2]。 通过以上几个方面的排查应该能够有效减少乃至彻底消除此类CUDA相关的运行期报错现象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值