ubuntu安装libtorch

news2024/11/20 19:44:19

Ubuntu20.04安装libtorch

  • 〇、前期准备
    • 1、查看NVIDIA显卡算力和CUDA版本支持的算力
    • 2、查看CUDA与显卡驱动的版本对应
  • 一、NVIDIA显卡驱动安装
    • 1、下载显卡驱动
    • 2、安装驱动
      • A. 安装依赖
      • B. 禁用nouveau驱动
      • C. 显卡驱动安装
    • 3、参考
  • 二、CUDA安装
    • 1、下载安装CUDA
    • 2、测试CUDA是否安装成功
    • 3、卸载CUDA
  • 三、CUDNN安装
    • 1、查看CUDNN支持的CUDA版本
    • 2、安装
    • 3、测试
    • 4、卸载CUDNN
    • 5、参考
  • 四、libtorch安装
    • 1、下载libtorch
    • 2、安装
    • 3、测试
    • 4、参考

〇、前期准备

1、查看NVIDIA显卡算力和CUDA版本支持的算力

这一步很重要,一定要确定好安装的CUDA版本是否支持显卡的算力,否则安装成功也无法使用GPU加速。如果显卡比较新,通常低版本的CUDA是不支持 的。

  • 查看NVIDIA显卡算力:https://developer.nvidia.com/cuda-gpus

在这里插入图片描述

这里以GeForce RTX 3090为例,对应的算力是8.6。

  • 不同版本CUDA支持的算力:https://en.wikipedia.org/wiki/CUDA#GPUs_supported

在这里插入图片描述
GeForce RTX 3090的算力是8.6,因此只能安装高于11.1的CUDA版本。这里选择安装CUDA 12.1。

2、查看CUDA与显卡驱动的版本对应

确定了CUDA版本后,需要确定支持该版本的最低显卡驱动版本。

  • 查看CUDA版本与显卡驱动版本对应:https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html

在这里插入图片描述
因为选择了CUDA 12.1,因此显卡驱动必须要大于525.60.13。

一、NVIDIA显卡驱动安装

1、下载显卡驱动

进入NVIDIA显卡驱动官网:https://www.nvidia.cn/drivers/results/
输入显卡型号和操作系统,查找可以安装的驱动版本,这里选择550.107.02

2、安装驱动

下载完成后,使用命令进行安装

A. 安装依赖

sudo apt update
sudo apt install gcc
sudo apt install g++
sudo apt install make

B. 禁用nouveau驱动

nouveau是由第三方为NVIDIA显卡开发的一个开源3D驱动,ubuntu默认集成了nouveau驱动,安装NVIDIA驱动前必须禁用系统自带的显卡驱动nouveau,否则安装NVIDIA驱动时会报错。

  • 查看nouveau是否启用
lsmod | grep nouveau

如果有输出,说明已启用。

  • 打开blacklist.conf文件
sudo gedit /etc/modprobe.d/blacklist.conf
  • 在文件最后添加以下内容,禁用nouveau
blacklist nouveau
options nouveau modeset=0
  • 修改后更新并重启
sudo update-initramfs -u
# 重启
sudo reboot
  • 重启后再次执行以下命令,如果没有输出表示已经成功禁用nouveau
lsmod | grep nouveau

C. 显卡驱动安装

  • 停止当前显示服务

安装NVIDIA显卡驱动需要停止当前的显示服务。最简单的方法就是使用 telinit 命令更改系统运行级别为3。

sudo telinit 3

如果上面的命令不行,可以通过以下命令进行tty模式

Ctrl + Alt + F2~F6
  • 进入命令行后,关闭 X-window 服务

安装NVIDIA显卡驱动过程中通常会提示关闭lightdm,但ubuntu20.04和ubuntu 22.04自带的是 gdm3 显示管理器,可以先安装 lightdm,再禁用;或者直接禁用 gdm3。lightdm和gdm3直观的区别就是gdm3的登录窗口在显示器中间,而lightdm的登录窗口在偏左边,正常使用没有区别。
方式一: 先安装lightdm,再禁用

sudo apt install lightdm  # 安装
# 禁用,现面两个命令任选一个
sudo service lightdm stop
sudo /etc/init.d/lightdm stop

方式二: 直接禁用 gdm3

sudo service gdm3 stop
# 或者
sudo /etc/init.d/gdm3 stop
  • 安装驱动
cd ~/Downloads
chmod +x NVIDIA-Linux-x86_64-550.107.02.run
sudo sh NVIDIA-Linux-x86_64-550.107.02.run --no-opengl-files
# 参数 --no-opengl-files 只安装驱动文件,不安装 OpenGL 文件。
# 台式机安装不加这个参数也可以正常安装,笔记本不加可能会出现循环登录。
  • 驱动安装过程中的一些选项
  1. An alternate method of installing the NVIDIA driver was detected.
    选择 continue installation 。这个应该是推荐你通过 Ubuntu 的 “Software & application” 中的 “Additional Drivers” 安装驱动,不用管,继续安装
  2. The distribution-provided pre-install script failed! Are you sure you want to continue? 选择 yes 继续。
  3. Would you like to register the kernel module sources with DKMS? This will allow DKMS to automatically build a new module, if you install a different kernel later? 选择NO继续
  4. Install NVIDIA’s 32-bit compatibility libraries? 选择No 继续
  5. Would you like to run the nvidia-xconfigutility to automatically update your x configuration so that the NVIDIA x driver will be used when you restart x? Any pre-existing x confile will be backed up. 选择 Yes 继续
  6. Would you like to sign the NVIDIA kernel module? 选择Install without signing
  • 重启显示服务
    安装完成后输入以下命令重启 X-window 显示服务,即可自动进行登录界面,如果无法进入,按Ctrl+Alt+F1或者重启电脑。(如果重启后仍无法进入图形界面,尝试进行BIOS将Secure Boot设置为disable)
# lightdm
sudo service lightdm start

# gdm3
sudo service gdm3 start
  • 检查是否安装成功
nvidia-smi

在这里插入图片描述

# 查看图形界面
nvidia-settings

3、参考

  1. Ubuntu20.04 安装 NVIDIA 显卡驱动
  2. NVIDIA CUDA Installation Guide for Linux

二、CUDA安装

1、下载安装CUDA

最新版CUDA:https://developer.nvidia.com/cuda-downloads
之前版本CUDA:https://developer.nvidia.com/cuda-toolkit-archive

按照官方的指令进行下载和安装:

wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda_12.1.0_530.30.02_linux.run
sudo sh cuda_12.1.0_530.30.02_linux.run
  • continue
    在这里插入图片描述

  • 输入accept
    在这里插入图片描述

  • 因为已经安装了显卡驱动,这里去掉Driver,kernel objects也默认不选
    在这里插入图片描述

  • 安装完成,这里会提示安装未完成,是因为没有选显卡驱动,不用管
    在这里插入图片描述

  • 配置环境变量

# 打开 /etc/profile
sudo gedit /etc/profile
# 添加以下内容,保存退出
export PATH=/usr/local/cuda-12.1/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64:$LD_LIBRARY_PATH
# source使配置生效
source /etc/profile

2、测试CUDA是否安装成功

  • 下载示例代码:CUDA 12.1的安装目录中没有直接安装示例代码,需要自己下载
cd /usr/local/cuda-12.1/
sudo git clone https://github.com/NVIDIA/cuda-samples.git -b v12.1
cd cuda-samples/Samples/1_Utilities/deviceQuery
sudo make
./deviceQuery
# 有如下输入说明安装成功

在这里插入图片描述

3、卸载CUDA

cd /usr/local/cuda-12.1/bin
sudo ./cuda-uninstaller  # 卸载CUDA

sudo rm -rf /usr/local/cuda*

# 重启
sudo reboot

三、CUDNN安装

1、查看CUDNN支持的CUDA版本

  • 最新版cudnn的Support Matrix网址:https://docs.nvidia.com/deeplearning/cudnn/latest/reference/support-matrix.html#support-matrix
    在这里插入图片描述
  • 之前版本cudnn的Support Matrix网址:可以将其中的 cudnn-892 修改成对应的版本号
    https://docs.nvidia.com/deeplearning/cudnn/archives/cudnn-892/support-matrix/index.html

因为安装的CUDA版本为12.1,这里选择最新版的CUDNN 9.4.0进行安装。

2、安装

按照官网的安装指导进行安装:

  • 下载安装包
wget https://developer.download.nvidia.com/compute/cudnn/9.4.0/local_installers/cudnn-local-repo-ubuntu2004-9.4.0_1.0-1_amd64.deb

之前版本的cuDNN下载地址:https://developer.nvidia.com/rdp/cudnn-archive

  • 安装
sudo dpkg -i cudnn-local-repo-ubuntu2004-9.4.0_1.0-1_amd64.deb
  • 导入CUDA GPG密钥到 /usr/share/keyrings/ 目录
sudo cp /var/cudnn-local-repo-ubuntu2004-9.4.0/cudnn-*-keyring.gpg /usr/share/keyrings/
  • 更新软件包列表
sudo apt update
  • 安装对应的运行时库(元包)
sudo apt install cudnn  # 为最新的 CUDA 版本安装最新的 cuDNN
# 如果安装的cuda不是最新版,需要指定cuda的版本
sudo apt install cudnn-cuda-12  # 为最新的 CUDA12 版本安装最新的cuDNN
sudo apt install cudnn9  # 为最新的 CUDA 版本安装最新的 cuDNN 9
sudo apt install cudnn9-cuda-12  # 为最新的 CUDA12 版本安装最新的 cuDNN 9

NOTE: 这里需要注意,如果安装的CUDA不是最新版,直接使用以上命令安装cuDNN可能存在CUDA和cuDNN版本不匹配的问题,在更新软件列表后可以先不要安装运行时库,可以多下载几个cuDNN版本的deb包,通过以下命令查看当前的cuDNN版本是否有与已经安装的CUDA版本匹配的运行时库。

sudo apt-cache policy libcudnn8

在这里插入图片描述
我试了5个版本发现8.9.2.26和cuda12.1匹配,然后分别安装运行时库、开发人员库和示例:

sudo apt install libcudnn8=8.9.2.26-1+cuda12.1
sudo apt install libcudnn8-dev=8.9.2.26-1+cuda12.1
sudo apt install libcudnn8-samples=8.9.2.26-1+cuda12.1

最后再进入 /etc/apt/sources.list.d/ 目录,将不需要的与cudnn相关的repository删掉;进入 /var/ 目录删除不匹配的cudnn;进入 /usr/share/keyrings/ 目录删除不需要的密钥

# 删除apt update不需要的repository
cd /etc/apt/sources.list.d
sudo rm cudnn-local-ubuntu2004-9.4.0.list
# 删除不匹配的cudnn
cd /var/
sudo rm -rf cudnn-local-repo-ubuntu2004-9.4.0/
# 删除不需要的密钥
cd /usr/share/keyrings
sudo rm cudnn-local-0AA868E1-keyring.gpg

或者也可以直接以下命令卸载

sudo dpkg -r package_name  # 似乎会有问题

3、测试

  • 安装 cuDNN 示例
sudo apt install libcudnn9-samples
  • 验证是否安装成功

NOTE: 需要注意的是这里要使用root权限,否则会出现 “test.c no such file” 的报错

cd /usr/src/cudnn_samples_v9/mnistCUDNN
sudo make clean
sudo make

如果出现找不到 FreeImage.h 的报错,
在这里插入图片描述

执行以下命令进行安装:

sudo apt install libfreeimage3 libfreeimage-dev
  • 重新编译后运行 mnistCUDNN 示例
./mnistCUDNN

出现Test passed!就说明安装成功。

4、卸载CUDNN

sudo apt remove cudnn

5、参考

  1. NVIDIA cuDNN 9.4.0 Downloads
  2. Installing cuDNN on Linux

四、libtorch安装

1、下载libtorch

可以从官网下载最新版的libtorch
在这里插入图片描述

如果需要的版本不是最新版,也可以根据最新版下载链接自行修改为需要的版本。比如需要 libtorch2.1.2+cuda12.1,对应的下载地址为:

https://download.pytorch.org/libtorch/cu121/libtorch-cxx11-abi-shared-with-deps-2.1.2%2Bcu121.zip

2、安装

解压下载好的压缩包

cd Downloads
unzip libtorch-cxx11-abi-shared-with-deps-2.1.2+cu121.zip

3、测试

main.cpp文件

#include <iostream>
#include <torch/script.h>
#include <torch/torch.h>

int main() {
    std::cout << "Hello, World!" << std::endl;
    std::cout << "CUDA available:" << torch::cuda::is_available() << std::endl;
    std::cout << "CUDNN available:" << torch::cuda::cudnn_is_available << std::endl;

    std::clock_t s = clock();
    torch::Tensor tensor = torch::randn({3, 5}, torch::device(torch::kCUDA));
    std::cout << tensor << std::endl;
    std::clock_t e = clock();
    std::cout << "Run time:" << e - s << " us" << std::endl;

    return 0;
}

CMakeLists.txt文件

cmake_minimum_required(VERSION 3.16)
project(cpp_libtorch_test)

set(CMAKE_CXX_STANDARD 17)

find_package(PythonInterp REQUIRED)
set(CMAKE_PREFIX_PATH ${CMAKE_PREFIX_PATH} "/home/dell/3rdparty/libtorch212_cuda121")
find_package(Torch REQUIRED)

add_executable(libtorch_test libtorch_test.cpp)
target_link_libraries(libtorch_test ${TORCH_LIBRARIES})

问题1: 如果cmake版本低于3.18,会出现下面的报错,这是由于低于3.18的cmake不支持CUDA17的编译,需要更新cmake版本。
在这里插入图片描述

Target "cmTC_ee350" requires the language dialect "CUDA17" (with compiler extensions), but CMake does not know the compile flags to use to enable it.

解决方法:

NOTE: 如果已经安装ROS,那千万不要使用apt remove命令卸载低版本的CMake,否则会删掉ROS中的文件导致ROS无法使用。直接下载高版本CMake进行安装,然后在 “~/.bashrc” 文件中指定高版本的CMake即可。

  • 下载高版本的cmake: https://github.com/Kitware/CMake/tags

  • 下载完成后解压并进行安装

# 解压
tar -zxvf CMake-3.29.8.tar.gz
# 安装
cd CMake-3.29.8
./bootstrap --qt-gui  # 如果不需要GUI可以去掉 --qt-gui
make
sudo make install

执行 ./bootstrap --qt-gui 时如果找不到OpenSSL

Could not find OpenSSL. Install an OpenSSL development package or ...

安装OpenSSL

sudo apt install libssl-dev
  • 默认会安装 /usr/local/bin 目录下,将该目录添加到source文件中
# 打开 .bashrc 文件
gedit ~/.bashrc
# 在最后添加以下内容
export PATH=$PATH:/usr/local/bin  # 如果 .bashrc 中已经有了,就不需要添加了
  • 保存 .bashrc 文件,查看CMake版本
source ~/.bashrc  # 使修改生效
cmake --version

更新CMake后重新编译即可。
问题2:

在这里插入图片描述
上面的Warning是由于从CMake 3.12开始,FindPythonInterp 和 FindPythonLibs 模块被删除了,需要用 FindPython3, FindPython2, FindPython 替换

find_package(PythonInterp REQUIRED)
# 替换为
find_package(Python3 REQUIRED)

问题3: 如果在CMakeLists.txt文件中设置的最小CMake版本大于 3.16,可能会出现如下的报错

CUDA_ARCHITECTURES is empty for target "cmTC_0f8a3"

解决方法:在CMakeLists.txt中加入以下内容,指定使用的CUDA架构

set(CMAKE_CUDA_ARCHITECTURES "86")

4、参考

  1. 【系统配置】深度学习环境配置
  2. Target “cmTC_e7e07“ requires the language dialect “CUDA17“ (with compiler extensions),解决。
  3. Ubuntu20.04安装LibTorch并完成高斯溅射环境搭建

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2163913.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

今年双11哪些东西值得买?分享五款实用耐用的好物,不再乱花钱!

随着一年一度的1111购物节脚步渐近&#xff0c;是否还在为挑选商品而犹豫不决&#xff1f;别担心&#xff0c;我们贴心整理了一份双十一必买好物推荐&#xff0c;专为追求品质生活的您量身打造。跟随这份清单&#xff0c;让您的数字生活更加丰富多彩&#xff0c;无需多虑&#…

四川财谷通信息技术有限公司抖音小店领域的新势力

在当今这个数字化浪潮汹涌的时代&#xff0c;电子商务已成为推动经济发展的重要引擎&#xff0c;而短视频平台抖音的崛起&#xff0c;更是为电商行业注入了前所未有的活力与机遇。在这片充满无限可能的蓝海中&#xff0c;四川财谷通信息技术有限公司凭借其敏锐的市场洞察力和强…

zabbix监控某特定进程是否挂掉

我现在已经在被监控机器&#xff08;A&#xff09;上装好了zabbix-agent&#xff0c;同时也在zabbix-server网页端添加了机器A 1&#xff0c;确定好要监控的进程 假如我想监控机器A上面的salt-minion这个进程&#xff0c;首先通过ps -ef 找到这个进程的命令启动行。 2&#x…

828华为云征文 | 云服务器Flexus X实例,Docker集成搭建FC-web模拟器

828华为云征文 | 云服务器Flexus X实例&#xff0c;Docker集成搭建FC-web模拟器 华为云端口放行 服务器放行对应端口9995 Docker安装并配置镜像加速 1、购买华为云 Flexus X 实例 Flexus云服务器X实例-华为云 (huaweicloud.com) 2、docker安装 yum install -y docker-ce3、验证…

vue2+elementUI实现handleSelectionChange批量删除-前后端

功能需求&#xff1a;实现选中一个或多个执行批量删除操作 在elementUI官网选择一个表格样式模板&#xff0c;Element - The worlds most popular Vue UI framework 这里采用的是 将代码复制到前端&#xff0c;这里是index.vue <template><el-button type"dang…

JavaScript类型转换和相等性详解

类型转换 10"objects" //10objects,数字10转换为字符串 "7"*"4" //28&#xff0c;两个字符串均转为数字,只要不是加&#xff0c;其他都按两个数字算 var n 1-"x"// NaN&#xff0c;字符串x无法转化为数字 n"objects"//…

眼镜检测系统源码分享

眼镜检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vision …

基础的点云转换

对于点云处理而言&#xff0c;最简单也逃不过的就是点云转换了&#xff0c;我们就从点云转换开始&#xff0c;来一步步完成点云加速的学习。点云基础转换是3D点云处理中的一个重要步骤。它的主要目的是将点云从一个坐标系转换到另一个坐标系中&#xff0c;通常是为了方便后续处…

数据结构:搜索二叉树

前言 在前面我们已经学习了二叉树的基础操作&#xff0c;但是&#xff0c;仅仅是二叉树&#xff0c;没有太大的作用啊&#xff0c;存数据效果没有顺序表和链表好&#xff0c;那为啥还要学二叉树呢&#xff1f; 这不就来了嘛&#xff0c;给二叉树增加一些性质&#xff0c;作用不…

徐州网站建设的最新趋势与技术

随着徐州经济的快速发展&#xff0c;网站建设在当地越来越受到重视。不同类型的企业和组织都希望通过优化他们的在线形象来吸引更多客户。因此&#xff0c;了解目前的趋势与技术是实现高效网站建设的关键。 1. 响应式设计 响应式设计是当前网站建设的核心趋势之一。无论是桌面…

毕业设计选题:基于ssm+vue+uniapp的校园失物招领小程序

开发语言&#xff1a;Java框架&#xff1a;ssmuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;M…

基于VITA57.1标准的4通道2.8GSPS 16位JESD204B接口DAC播放子卡

板卡概述 FMC171是一款基于VITA57.1标准的4通道2.8GSPS采样率16位分辨率JESD204B接口DAC回放子卡模块。该板卡采用ADI公司的AD9144&#xff0c;实现4路模拟输出&#xff0c;数字接口通过8通道的JESD204B进行互联。 该板卡支持本地参考时钟、外部输入参考时钟、外部VCO时钟以及…

门面模式详解:提高代码可维护性的利器

门面模式是一种结构型设计模式&#xff0c;它通过为复杂的子系统提供一个统一的接口&#xff0c;使得子系统更容易使用。门面模式隐藏了系统的复杂性&#xff0c;并向客户端提供了一个简化的接口。 一&#xff0c;门面模式的结构 门面模式&#xff08;Facade Pattern&#xf…

有没有遇到过Mybatisplus插件失效?

背景 相信mybatisplus应该很多人都用过,当然有些人在项目中使用的是tk.mybatis,那么今天说到这个话题原理都是一样,首先mybatisplus会有很多插件,这些插件都会形成一个拦截器链路,具体可以学习下原理,这个地方就不过多叙说了,毕竟不是本篇博文的重点,那言归正传,比如…

普渡大学和麻省理工学院合作开发集成视触觉指尖传感器的5自由度抓手

虽然机器人已经开始在现代制造业、医疗、服务业等领域进行渗透&#xff0c;但对于机器人尤其是机械臂的操作能力&#xff0c;仍然有很大的提升空间&#xff0c;传统多指机器人手虽然能够实现复杂的操作任务&#xff0c;但其高度冗余性也带来了不必要的复杂性。近日来自普渡大学…

WebRTC中的维纳滤波器实现详解:基于决策导向的SNR估计

目录 1. 维纳滤波器的基本原理2. WebRTC中的维纳滤波器实现3. 代码逐步剖析4. 总结 在WebRTC的噪声抑制模块中&#xff0c;维纳滤波器&#xff08;Wiener Filter&#xff09;是一种非常常见且重要的滤波器&#xff0c;用于提高语音信号的清晰度并抑制背景噪声。本文将详细解释维…

Hugging Face Transformer:从原理到实战的全面指南

一、前言 我们知道ChatGPT和所有预训练大语言模型的核心是什么&#xff1f;其实就是 Transformer&#xff0c;Hugging Face 的火爆离不开他们开源的这个 Transformers 库。这个开源库里有数万个我们可以直接调用的模型。很多场景下&#xff0c;这个开源模型已经足够我们使用了。…

【Pyside】pycharm2024配置conda虚拟环境

知识拓展 Pycharm 是一个由 JetBrains 开发的集成开发环境&#xff08;IDE&#xff09;&#xff0c;它主要用于 Python 编程语言的开发。Pycharm 提供了代码编辑、调试、版本控制、测试等多种功能&#xff0c;以提高 Python 开发者的效率。 Pycharm 与 Python 的关系 Pycharm 是…

2024年9月24日---关于MyBatis框架(3)

五 Mybatis的缓存 5.1 Mybatis缓存简介 缓存(cache)&#xff1a;提前把数据存放到缓存当中&#xff0c;下一次再使用的时候&#xff0c;直接从缓存中拿&#xff0c;而不用再次去数据库中查询一次了。这样的优势在于&#xff1a;通过减少IO的⽅式&#xff0c;来提⾼程序的执⾏…

28岁打算转行靠谱么,这个年龄转行,有什么适合的行业么?

前言 大家好&#xff0c;我是职场小油条播妞&#xff0c;最近被一组表情包洗脑了。 &#xff08;强哥表情包我就不放了&#xff0c;大家自行脑补&#xff09; 我要让老板知道&#xff0c;招我进来&#xff0c;就要承担一定的风险 既然领导把岗位交给咱&#xff0c;证明这岗位…