0x00:前传 去年底又入了一台DELL,这次是因为需要GPU训模型,正好Nvidia出了基于Turing核心的GTX-1660Ti用于笔记本,比2060少了Tensor Core,但显存一样是6G,想想Tensor Core的意义在于FP16加速训练,但半精度训练配置比较繁琐,暂时不折腾也罢,于是6799入了这台Dell-G3-3590游戏本,被我装上Ubuntu训模型,训练速度比CPU快了20~30倍,大概有V100单卡的50%,而价格只及V100的1/10,非常适合用来学习。 第一次折腾CUDA,实现了CUDA9和CUDA10共存,能同时支持下面两个环境,把安装过程记录一下。 tensorflow-gpu 1.9:CUDA9 + cuDNN 7.0 darknet:CUDA10 + cuDNN 7.5 0x01:理论 CUDA分为两个部分,内核态的驱动(.ko)和用户态的动态链接库(.so)。CUDA的内核态驱动是高版本兼容低版本。而一般说的CUDA9或者CUDA10是指用户态动态链接库的版本,跨版本不兼容,因此,理论上只需要安装一个高版本的内核态驱动,然后通过将CUDA的用户态库安装到不同目录中来达到多版本共存目的。 内核态的驱动版本号一般是3xx.mm或4xx.mm,例如,现在最新的是440.64,在Ubuntu下,由nvidia-driver-4xx和它的依赖包提供。 用户态的动态链接库,其实是一系列的功能库组成的集合,例如cudart, cublas, curand, cufft等,由cuda-libraries-10-0和它的依赖包提供。 还有一个部分,是CUDA内核函数编译器(此内核并非操作系统内核,应该是源于filer的kernel概念,这里指运行在GPU中的算子),由cuda-compiler-10-0和它的依赖包提供。如果需要运行自定义的CUDA kernel函数,就需要安装这个包,例如编译darknet就需要它。 0x02:现状 Ubuntu有两个源提供CUDA驱动和库,一个是Ubuntu的官方源,另一个是Nvidia提供的源。Nvidia源比较新,并且提供了CUDA各个版本共存的机制,所以经过一番尝试后,最终选择了Nvidia源。 0x03:安装CUDA内核态的驱动和CUDA10 在新立得包管理器(synaptic)中,打开“设置”->“软件库”->“其他软件”,点击“添加”,分别添加下面两个Nvidia源,然后关闭并自动刷新: 12deb http://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64 / deb http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64 / 如果是手动编辑/etc/apt/source.list并遇到如下错误: 1W: GPG error: https://developer.download.nvidia.cn/compute/machine-learning/repos/ubuntu1804/x86_64 Release: The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY F60F4B3D7FA2AF80 可通过命令自动添加证书:… Read More »