All CUDA devices are used for display and cannot be used while debugging.

        运行环境:Ubuntu 16.04

                            NVIDIA GeForce 960

                            CUDA 8.0

        在学习《CUDA高性能并行计算》第二、三章的过程中,编写了    dist_v1_cuda    和    dist_v2_cuda    两个程序。按照书上的运行步骤,在源文件的目录下运行

make
cuda-gdb main.exe
run

执行命令run以后,终端报错

All CUDA devices are used for display and cannot be used while debugging. (error code = CUDBG_ERROR_ALL_DEVICES_WATCHDOGGED(0x18)

本文的解决方法依据Stack Overflow上的回答给出:All CUDA devices are used for display: Can not debug my CUDA-code from within desktop environment


解决方法1:

        因为本人所用的计算机只有一块独立显卡,且显卡被X-server占用(即All CUDA devices are used for display),所以显卡无法被用于程序的调试。X-server是Linux里面图形接口服务器的简称。所以最“简单”的解决方案应该是再多装一块显卡(doge)。



解决方法2:

        依据上述链接中的第一条回答

在运行

cuda-gdb main.exe

这句命令之前,运行以下命令

export CUDA_DEBUGGER_SOFTWARE_PREEMPTION=1

对环境变量进行修改,这样可以使得程序正常运行及退出,但终端不会显示任何调试信息



解决方法3:

        根据上述链接中给出的问题描述

 Somehow it seems that my X-Server is blocking my NVIDIA GPU because if I switch to another virtual console (CTRL+ALT+F1) I am able to run my code using cuda-gdb.
         在Ubuntu图形界面下,按下Ctrl+Alt+F1,进入虚拟控制台,解除Linux系统对GPU的占用。在虚拟控制台下对CUDA程序进行调试,可以正常输出调试结果。



解决方法4(推荐):

        使用Qt编译和运行程序,针对dist_v1_cuda,本人所使用的CMakeLists如下        

cmake_minimum_required(VERSION 2.8)

project(dist_v1_cuda)

FIND_PACKAGE(CUDA REQUIRED)
cuda_add_executable(${PROJECT_NAME} "kernel.cu")

        针对书中的flashlight程序(使用OpenGL进行显示),本人所使用的CMakeLists如下

cmake_minimum_required(VERSION 2.8)

project(dist_v2_cuda)

find_package(CUDA REQUIRED)

find_package(OpenGL REQUIRED)
find_package(GLUT REQUIRED)
find_package(GLEW REQUIRED)
include_directories( ${OPENGL_INCLUDE_DIRS}  ${GLUT_INCLUDE_DIRS} ${GLEW_INCLUDE_DIRS})

file(GLOB_RECURSE CURRENT_HEADERS  *.h *.hpp *.cuh)
file(GLOB CURRENT_SOURCES  *.cpp *.cu)
source_group("Include" FILES ${CURRENT_HEADERS}) 
source_group("Source" FILES ${CURRENT_SOURCES}) 

cuda_add_executable(dist_v2_cuda ${CURRENT_HEADERS} ${CURRENT_SOURCES})
target_link_libraries(dist_v2_cuda ${OPENGL_LIBRARIES} ${GLUT_LIBRARY} ${GLEW_LIBRARY} )


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值