OpenGL和CUDA互操作的显卡驱动问题

  使用OpenGL进行图形渲染并显示出来,然后使用CUDA进行计算,将计算结果传输到OpenGL的渲染管线中。在这里可能会遇到一个问题,代码执行到cudaGraphicsGLRegisterBuffer()函数会出错,CUDA的API接口会抛出一个错误代码999,这表示是未知的错误。
  然后试着,添加一段代码

    cudaDeviceProp prop;
    int dev;

    memset( &prop, 0, sizeof( cudaDeviceProp ) );
    prop.major = 1;
    prop.minor = 0;
    HANDLE_ERROR( cudaChooseDevice( &dev, &prop ) );
    HANDLE_ERROR( cudaGLSetGLDevice( dev ) );				

CUDA会抛出一个错误信息,表示没有找到可使用的独立显卡GPU,或者是独立显卡GPU正忙。

all CUDA-capable devices are busy or unavailable

  但是独立显卡GPU是没有正忙的,是空闲可用的。所以怀疑是调用显卡时出问题,一般有集成显卡,核心显卡和独立显卡,如果系统调用显卡的时候有问题,导致跑CUDA的时候用到了集显或者核显,就会给出错误信息表示找不到可运行CUDA的设备device。

lspci | grep -i vga

  执行以上的代码,系统会列出两块显卡的信息,第一块是英特尔核显,第二块是英伟达独显。于是尝试让系统只调用独显,关于ubuntu切换显卡,可以在这篇文章中找到参考资料
Ubuntu如何正确地切换Intel和Nvidia显卡
Ubuntu能不能核显处理桌面,独显跑CUDA和OpenGL?
Ubuntu16.04 CUDA与OpenGL分离的环境配置
CUDA with OpenGL: all CUDA-capable devices are busy or unavailable
  主要就是打开Nvidia X Server Settings的界面,然后进行设置
在这里插入图片描述  当然也有可能是驱动程序有问题,最开始的驱动是ubuntu的软件源中自动安装的,但是这个驱动不太好,还是需要去官网上去下载更新版本的nvidia显卡驱动,然后运行安装这个.run文件。
  安装nvidia驱动的时候,因为ubuntu上有个开源驱动需要禁用,搞不好会导致开机的时候,屏幕会循环登陆不了。对于这个问题,网上有一大堆资料来解决。但是笔者最近发现了一个,别人没有想到过的全新的安装方式,更加的简单和方便。首先是卸载已有的nvidia驱动,

sudo apt-get remove --purge nvidia*
# 或者是
sudo ./NVIDIA.run --uninstall

然后重启电脑打开BIOS设置图形显卡,其中有三个选项,iGPU,dGPU和mshybrid三种模式,分别表示核显,独显和混合模式。将其设置为iGPU模式,然后进入ubuntu系统直接安装nvidia驱动,然后重启电脑再设置为dGPU模式。

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值