CUDA安装、排错

2 篇文章 0 订阅

为什么/usr/local下有多个前缀为cuda的目录?

/usr/local目录下拥有多个 CUDA 目录的原因是为了在同一系统中支持不同版本的 CUDA 工具包。CUDA 是 NVIDIA 开发的并行计算平台和编程模型,用于 GPU 加速计算。它提供一组库、工具和 API,使得开发人员能够创建高性能应用程序并在 NVIDIA GPU 上运行。每个 CUDA 工具包版本都可能需要不同的库、头文件和二进制文件等文件。因此,在同一系统上安装多个 CUDA 工具包版本是很常见的,以支持不同的应用程序或使用场景。
默认情况下,CUDA 工具包安装在/usr/local/cuda目录中。然而,为了支持多个版本,可以使用不同的目录,例如/usr/local/cuda-11.0用于版本 11.0,/usr/local/cuda-10.2用于版本 10.2。这允许单独安装不同版本的 CUDA,并确保每个应用程序可以找到所需的特定 CUDA 版本的适当库和二进制文件。
总之,/usr/local 目录下拥有多个 CUDA 目录可以更方便地管理不同的 CUDA 安装,并确保每个应用程序都可以访问其所需的正确版本的工具包。

安装/更新CUDA

安装Nvidia驱动

在正式安装CUDA之前,需要先安装Nvidia驱动,也可以直接下载对应驱动。
打开,选择Latest Production Branch Version即可,下载后sudo sh NVIDIA-Linux-x86_64-$DRIVER_VERSION.run即可。

安装CUDA

以 X86_64 的 Ubuntu 18.04 系统为例,要安装 CUDA Toolkit,可以按照以下步骤进行操作:

  1. 访问 CUDA Toolkit Downloads 网页。
  2. 选择相应的操作系统、体系结构和发行版本。在此示例中,选择 Linux 操作系统、X86_64 架构和 Ubuntu 18.04 发行版本。
  3. 在页面下方,找到 “Installation Instructions” 部分,并复制提供的安装命令。
  4. 在终端窗口中粘贴复制的安装命令,并按照命令行提示进行操作。
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda-repo-ubuntu1804-12-1-local_12.1.0-530.30.02-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1804-12-1-local_12.1.0-530.30.02-1_amd64.deb
sudo cp /var/cuda-repo-ubuntu1804-12-1-local/cuda-*-keyring.gpg /usr/share/keyrings/
sudo apt-get update
sudo apt-get -y install cuda

务必记得重新启动设备。

如何维护多版本CUDA?

您可以使用以下命令来查看/usr/local目录下所有以 cuda 为前缀的目录:

ls -d /usr/local/cuda*
# /usr/local/cuda  /usr/local/cuda-12.1

通常情况下,在/usr/local目录下可能会存在多个以 cuda 为前缀的目录,这是由于在安装或更新 CUDA 工具包时,可能会创建不同版本的目录。在/usr/local目录下,有多个以cuda为前缀的目录。其中,**/usr/local/cuda**目录是当前版本的软链接,它指向包含当前正在使用的 CUDA 工具包的文件和目录的cuda目录,也称为cuda-。

ls -dla $(readlink -f /usr/local/cuda)

其他以cuda为前缀的目录可能是旧版本或备份,根据实际需求可以选择是否删除这些目录。您也可以使用nvidia-smi命令来确认当前 CUDA 版本,以便确定是否存在其他旧版本的 CUDA 目录。
如果需要删除旧版本的 CUDA,可以按照以下步骤进行操作:

  1. 确认当前 CUDA 版本:使用nvidia-smi命令查看当前 CUDA 版本,以便确定需要删除哪些旧版本的 CUDA 目录。
  2. 使用命令ls -d /usr/local/cuda*列出所有 CUDA 目录。这将显示当前在 /usr/local 中存在的所有 CUDA 目录。
  3. 确定要删除的 CUDA 目录(切记不能删除cuda和cuda-目录)。
  4. 使用命令sudo rm -rf <cuda-directory-name>删除该目录。例如,如果要删除 CUDA 10.0 目录,可以使用命令 sudo rm -rf cuda-10.0。
  5. 对于您要删除的任何其他旧 CUDA 目录,请重复步骤 4。

使用 rm 命令时需要谨慎,因为它会永久删除文件和目录,无法恢复。因此,在使用该命令删除目录之前,请确保已确定正确的目录。
如果误删了CUDA目录或者文件,可能会导致系统无法正常使用CUDA功能,此时可以通过重新安装CUDA来解决问题。

排错

Failed to initialize NVML: Driver/library version mismatch

在运行nvidia-smi命令时,出现了"Failed to initialize NVML: Driver/library version mismatch"错误。而在运行程序时,出现了"kernel version 520.61.5 does not match DSO version 530.30.2 – cannot find working devices in this configuration"的错误提示。通常情况下,这种错误发生在cuda更新后未重新启动系统时调用程序。解决这个问题的方法很简单,只需要重启系统即可。

sudo reboot

现在,我们可以分析一下错误提示所提供的信息,以"kernel version 520.61.5 does not match DSO version 530.30.2 – cannot find working devices in this configuration"为例。这个错误提示表明,内核版本和DSO(动态共享对象)版本之间存在版本不匹配,导致设备配置方面出现了问题。
内核版本是指操作系统的核心,它负责管理系统的硬件资源并为所有其他部分提供基本服务,我们可以通过cat /proc/driver/nvidia/version查看。而DSO是一个共享库,在运行时加载,并由多个应用程序使用。
在此情况下,内核版本为520.61.5(即cat /proc/driver/nvidia/version结果),而DSO版本为530.30.2,是一个较新的版本。这种版本不匹配可能会导致内核和DSO之间的兼容性问题,进而影响设备的配置。要解决这个问题,尝试重启,通常能够解决该问题。

cat /proc/driver/nvidia/version的用处

cat /proc/driver/nvidia/version命令的作用是显示当前系统上安装的 NVIDIA 图形驱动程序的版本。
执行该命令时,会读取 “/proc/driver/nvidia” 目录中的 “version” 文件,其中包含 NVIDIA 内核模块版本、NVIDIA 驱动程序版本和 NVIDIA CUDA 版本等信息。命令的输出通常类似于以下内容:

NVRM version: NVIDIA UNIX x86_64 Kernel Module  530.30.02  Wed Feb 22 04:11:39 UTC 2023
GCC version:  gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1) 

第一行显示当前加载到 Linux 内核中的 NVIDIA 内核模块版本。第二行显示用于构建内核模块的 GCC 编译器版本,第三行显示当前系统安装的 CUDA 工具包版本。
总体而言,cat /proc/driver/nvidia/version命令是一个有用的工具,可以快速检查 Linux 系统上安装的 NVIDIA 图形驱动程序的版本。

Loaded runtime cuDNN library: 8.1 but source was compiled with: 8.6

这个错误提示表示系统加载了 CuDNN 8.1 的运行时库,但是代码是使用 CuDNN 8.6 编译的。由于版本不匹配,所以出现了错误。
为了解决这个问题,可以尝试以下方法:

  • 更新运行时库:可以将系统中的 cuDNN 运行时库更新到 8.6 版本,以便与源代码版本匹配。如果无法解决问题,可以尝试更新 CUDA。
  • 重新编译源代码:如果不方便更新运行时库,可以尝试重新编译使用了 cuDNN 的源代码,以便使用 8.1 运行时库进行编译,以便与当前加载的运行时库版本匹配。
  • 回退到使用 8.1 版本的 cuDNN:如果更新运行时库或重新编译源代码不可行,可以考虑回退到使用 8.1 版本的 cuDNN,以便与当前加载的运行时库版本匹配。

需要注意的是,为了确保不会出现版本不匹配的问题,建议在开发环境中使用相同版本的运行时库和源代码进行开发和测试。这可以避免由版本不匹配引起的问题。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Linux安装FTP服务器并进行排错,您可以按照以下步骤进行操作: 1. 安装FTP服务器软件: 常用的FTP服务器软件包括vsftpd、ProFTPD和Pure-FTPd。根据您的需求选择其中一个并进行安装。 例如,在Ubuntu安装vsftpd,可以使用以下命令: ``` sudo apt-get update sudo apt-get install vsftpd ``` 2. 配置FTP服务器: 配置文件通常位于`/etc/vsftpd.conf`,您可以使用任何文本编辑器打开并按需进行相应的配置。 一些常见的配置项包括: - `anonymous_enable`:启用匿名访问。 - `local_enable`:启用本地用户访问。 - `write_enable`:允许用户写入内容。 - `chroot_local_user`:限制用户在其主目录下操作。 - `pasv_enable`:启用被动模式。 在进行任何更改后,保存配置文件并重新启动FTP服务器以使更改生效。 3. 设置防火墙规则: 如果您的系统上运行着防火墙,确保允许FTP流量通过。根据您使用的防火墙软件,您可能需要配置适当的规则。 4. 连接到FTP服务器: 使用支持FTP协议的客户端工具(如FileZilla或命令行工具`ftp`)连接到您的FTP服务器。提供服务器地址、端口、用户名和密码进行连接。 如果您遇到连接问题,请继续下面的排除步骤。 5. 排除故障: - 检查FTP服务器是否正在运行:使用`ps`命令检查FTP服务器进程是否正在运行。 - 检查FTP服务器配置:确保配置文件中的设置正确,并且没有语法错误。 - 检查防火墙设置:确保防火墙允许FTP流量通过。 - 检查网络连接:确保您的网络连接正常,尝试通过ping服务器地址来测试连接。 - 检查端口监听:使用`netstat`命令检查FTP服务器是否正在监听正确的端口。 请注意,这只是一个基本的指南,实际安装排错过程可能因系统和软件的不同而有所差异。如果您遇到特定问题,请提供更多详细信息以便我能够帮助您解决。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值