一个强大的工具nvprof

https://www.microway.com/hpc-tech-tips/cuda-host-to-device-transfers-and-data-movement/

Advertisements

CUDA “helper_functions.h no such file or directory” 的错误和解决方法

今天在开发一个简单的CUDA程序的时候,使用了checkCudaErrors这个函数,因此我在程序的源代码中include了定义这个函数的头文件helper_functions.h

然而,在编译的时候,nvcc却出现了如下的错误:
fatal error: helper_cuda.h: No such file or directory

经过一番谷歌,我发现helper_functions.h其是实在/usr/local/cuda-8.0/samples/common/inc (cuda-8.0这个地方因cuda的版本而异)文件夹下面,所以在用nvcc编译程序的时候,需要加上编译选项-I /usr/local/cuda-8.0/samples/common/inc才可以找到helper_cuda.h这个文件。

CUDA 8.0在Linux上的安装流程

1. 系统要求

根据参考资料1,在计算机上使用CUDA,我们需要如下的基本组件:

2. 安装前的准备工作

  • 首先,我们要验证机器上是否装有支持CUDA的GPU。具体命令如下:
    $ lspci | grep -i nvidia
    grep -i表示忽略大小写。如果输入这个命令没有任何的显示,那么很可能你的机器上没有支持CUDA的GPU。
  • 其次,我们用如下命令来查看系统发行版本:
    $ uname -m && cat /etc/*release
    请注意CUDA目前只支持一部分Linux发行版本,具体可以参见参考资料1。我的机器目前装的是x86_64的CentOS 7.3系统。正在属于CUDA所支持的Linux发行版本。
  • 用如下命令来验证系统是否安装了gcc:
    $ gcc --version
  • 安装内核头文件和开发包(Kernel Headers and Development Packages)。对于CentOS来说,命令是:
    $ sudo yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r)
    对于Ubuntu来说,命令是:
    $ sudo apt-get install linux-headers-$(uname -r)

3. 在CentOS上使用Package Manger来安装CUDA

  • 首先,我们需要去https://developer.nvidia.com/cuda-downloads下载CUDA,这里要选择操作系统(例如Linux和Windows)、架构(例如x86_64)、发行版本(例如CentOS)、系统版本以及安装类型来生成特定的base installer供我们下载。网页上同时还会提供相应的安装指令,对用户非常友好。
  • 在CentOS上,NVIDIA驱动的RPM包依赖于一些外在的包(external packages),比如DKMS和libvdpau。这些包只能在一些第三方的repositories里面才有,比如EPEL。如果我们不安装这些外在的包就直接安装CUDA,可能会出现如下的错误:
    Error: Package: 1:nvidia-kmod-375.51-2.el7.x86_64 (cuda)
    Requires: dkms
    根据参考资料2,我们可以用如下命令从EPEL上面来安装dkms:
    $ sudo yum install epel-release
    $ sudo yum install dkms
  • 下面,我们来安装repository的meta-data:
    $ sudo rpm -i cuda-repo-<distro>-<version>.<architecture>.rpm
    注意<distro>、<version>和<architecture>不同系统略有不同。比如我的rpm名字是cuda-repo-rhel7-8.0.61-1.x86_64.rpm
  • 然后,我们要清理Yum repository cache
    $ sudo yum clean all
  • 现在,我们可以“真正”地安装CUDA了,命令如下:
    $ sudo yum install cuda

4. 安装后的工作

  • 我们需要在系统的PATH变量中加入/usr/local/cuda-8.0/bin, 否则系统没法找到nvcc的位置。为此,我们需要在文件~/.bashrc的末尾加入export PATH=$PATH:/usr/local/cuda-8.0/bin
    然后用如下命令使得配置立刻生效:
    $ sudo source ~/.bashrc
  • 运行/usr/local/cuda-8.0/samples/1_Utilities/deviceQuery里的程序来验证CUDA是否成功安装。如果安装成功,你应该可以看到类似于参考文献1里面图1的结果。

参考资料:

  1. http://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html
  2. https://devtalk.nvidia.com/default/topic/983078/dkms-problem-while-installing-cuda-8-on-rhel-7-3-ppc64le/