Ubuntu20.04安装LibTorch并完成高斯溅射环境搭建

0. 简介

最近受到优刻得的使用邀请,正好解决了我在大模型和自动驾驶行业对GPU的使用需求。UCloud云计算旗下的Compshare的GPU算力云平台。他们提供高性价比的4090 GPU,按时收费每卡2.6元,月卡只需要1.7元每小时,并附带200G的免费磁盘空间。暂时已经满足我的使用需求了,同时支持访问加速,独立IP等功能,能够更快的完成项目搭建。
在这里插入图片描述
而且在使用后可以写对应的博客,可以完成500元的赠金,完全可以满足个人对GPU的需求。
在这里插入图片描述

对应的环境搭建已经在《如何使用共享GPU平台搭建LLAMA3环境(LLaMA-Factory)》介绍过了。高斯溅射是最近在SLAM领域最火的一块工作,因为其和深度学习结合,这导致有一定的上手门槛。基于python的高斯溅射已经有很多了,现在我们这里来讲一下如何使用C++完成环境搭建以及代码训练。如果使用了优刻得平台我们可以省去搭建CUDA这些环境,可以直观关注算法层面的使用。

在这里插入图片描述

1. 检查显卡驱动

查看是否安装NVIDIA显卡

lspci | grep -i nvidia

查看显卡信息

nvidia-smi

在这里插入图片描述

如果出现这个样式,说明已经安装显卡驱动了。通常装好的Ubuntu中都有显卡驱动。如果在配置的过程中遇到了没有显卡驱动。如果没有驱动,那么就需要手动安装显卡驱动了。

先添加源:

sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt update

检查可安装的驱动:

ubuntu-drivers devices

在这里插入图片描述

找到最适合的驱动安装,安装recommended标记的,通常也是数字版本最大的那个。

sudo apt install nvidia-driver-XXX

也可以自动安装系统推荐那个

sudo ubuntu-drivers autoinstall

如果没有遇到报错,说明安装成功,此时调用nvidia-smi指令可能还是看不到显卡信息,不要担心,重启系统之后就能看到了。

2. 安装CUDA

英伟达官网(最新版):CUDA Toolkit 12.5 Update 1 Downloads | NVIDIA Developer

CUDA历史版本下载地址:CUDA Toolkit Archive | NVIDIA Developer

这里是nvidia给出的官方安装指南(遇到问题时可以查阅):

NVIDIA CUDA Installation Guide for Linux

2.1 选择 runfile 按照官网提示的输入到终端中的代码执行安装

我们在打开上面的CUDA历史版本下载地址找到CUDA 12.1版本后
在这里插入图片描述

然后复制命令到命令行

wget https://developer.download.nvidia.com/compute/cuda/12.1.0/local_installers/cuda_12.1.0_530.30.02_linux.run

这里必须先关图形界面,如果不关,运行下面安装的命令之后会报错,装不上(我们这里不需要,这个需要带图形化界面的Ubuntu)

systemctl isolate multi-user.target

关闭图形界面之后会重启,输入如下命令(我们这里不需要,这个需要带图形化界面的Ubuntu)

 modprobe -r nvidia-drm

2.2 安装驱动

sudo sh cuda_12.1.0_530.30.02_linux.run

稍等一会。会在弹出的安装界面中选“continue”,如果选了会跳出安装,就说明安装失败,给了失败日志的路径,自己查看原因,一般是gcc版本问题,降级方法如下:

sudo apt-get install gcc-7 g++-7sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 1sudo update-alternatives --display gcc     //查看默认版本sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-7 9
sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-9 1sudo update-alternatives --display g++

如果没问题继续安装:


之后就继续,输入accept
在这里插入图片描述
之后就继续,把第一个选择驱动,给他回车取消,因为我们已经有驱动了
在这里插入图片描述
在安装完毕后,我们再开启图形界面(我们这里不需要,这个需要带图形化界面的Ubuntu)

sudo systemctl start graphical.target

2.3 配置CUDA的环境变量

成功后需要配置一下环境变量,这步很关键。这里需要在.bashrc里配置环境变量。

sudo gedit ~/.bashrc

在打开文件的最后一行加上:

export PATH=/usr/local/cuda-12.1/bin${PATH:+:${PATH}}
export LD_LIBRARY_PATH=/usr/local/cuda-12.1/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

特别注意文件夹路径,有时候文件夹直接是/usr/local/cuda,有时候是别的版本号,要确保文件夹存在。

source ~/.bashrc

2.4 检查是否安装成功

检查一下CUDA是否安装正确:(注意文件夹路径一定要存在,需要跟上面设置环境变量的路径保持一致)

cat /usr/local/cuda-12.1/version.txt

一开始的时候,我对CUDA不是很了解,执行这句话没有任何反应,我以为是该方法失效了。我使用nvidia-sminvcc --version指令都看到了CUDA版本号。但是CUDA环境没有配置好,这两个也是能拿到版本号的,所以不准确。还是应该用上面的方法检查CUDA版本。

在这里插入图片描述

2.5 卸载cuda

先进入安装目录下的bin文件夹中

cd /usr/local/cuda-12.2/bin

然后勾选我们要卸载的12.2版本,选择done
在这里插入图片描述

3. 安装cuDNN

cuDNN比CUDA安装简单,下载对应版本压缩包,拷贝文件到指定目录,给予权限就好了。

下载cudnn相应版本.
最新版下载地址:Log in | NVIDIA Developer
cudnn历史版本: cuDNN Archive | NVIDIA Developer

官方安装指南: Installation Guide - NVIDIA Docs
在这里插入图片描述

3.1 下载
https://developer.nvidia.com/rdp/cudnn-archive
#找到https://developer.nvidia.com/downloads/compute/cudnn/secure/8.9.7/local_installers/12.x/cudnn-local-repo-ubuntu2004-8.9.7.29_1.0-1_amd64.deb

3.2 安装cuDNN库

sudo dpkg -i cudnn-local-repo-ubuntu2004-8.9.7.29_1.0-1_amd64.deb
sudo cp /var/cudnn-local-repo-*/cudnn-local-*-keyring.gpg /usr/share/keyrings/

3.3 更新APT仓库并安装cuDNN运行时库、开发库和示例库

sudo apt-get update
sudo apt-get install libcudnn8=8.9.6.50-1+cuda12.2
sudo apt-get install libcudnn8-dev=8.9.6.50-1+cuda12.2
sudo apt-get install libcudnn8-samples=8.9.6.50-1+cuda12.2

3.4 安装成功

cp -r /usr/src/cudnn_samples_v8/ $HOME
cd $HOME/cudnn_samples_v8/mnistCUDNN
make clean && make
./mnistCUDNN#显示“Test passed!”或类似的消息,表示cuDNN运行正常。- 如果编译报错fatal error: FreeImage.h: No such file or directory1 | #include "FreeImage.h"|          ^~~~~~~~~~~~~
- 解决方法:sudo apt-get install libfreeimage3 libfreeimage-dev

在这里插入图片描述

4. 安装libtorch GPU版

进入pytorch官网 https://pytorch.org/get-started/locally/

下载一个你想用的就行
在这里插入图片描述
这里我们根据12.1的下载链接

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

4.1 解压

unzip libtorch-cxx11-abi-shared-with-deps-2.3.1+cu121.zip

解压后得到libtorch文件夹,文件夹下的内容如图
在这里插入图片描述

4.2 环境测试

配置CMakeLists.txt文件:

cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
project(libtorch_test)find_package(PythonInterp REQUIRED)
list(APPEND CMAKE_PREFIX_PATH "/home/ubuntu/libtorch")add_executable(libtorch_test main.cpp)find_package(Torch REQUIRED)
target_link_libraries(libtorch_test "${TORCH_LIBRARIES}")
set_property(TARGET libtorch_test PROPERTY CXX_STANDARD 17)

编辑main.cpp文件

#include <torch/script.h>
#include <torch/torch.h>
#include <iostream>
int main() {std::cout << "检查CDUA是否可用:" << torch::cuda::is_available() << std::endl;std::cout << "检查cudnn是否可用:" << torch::cuda::cudnn_is_available() << std::endl;std::clock_t s, e;s = clock();torch::Tensor cuda_output;for (int i=0;i<1;i++) {cuda_output = torch::randn({ 5, 4 }, torch::device(torch::kCUDA));}std::cout << cuda_output << std::endl;e = clock();std::cout << "use time: " << (e - s) << " 微秒" << std::endl;return 0;
}

在这里插入图片描述

5. OpenSplat项目运行

要在Ubuntu环境中搭建OpenSplat项目,请按照以下步骤操作:

5.1 安装依赖项

sudo apt-get update
sudo apt-get install build-essential cmake git libeigen3-dev libopencv-dev

5.2 克隆项目

git clone https://github.com/pierotofy/OpenSplat OpenSplat
cd OpenSplat
mkdir build && cd build
cmake -DCMAKE_PREFIX_PATH=/path/to/libtorch/ .. && make -j$(nproc)

在这里插入图片描述

5.3 下载数据集

下载并解压数据集到某个文件夹:banana、train、truck

打开终端,进入项目目录:

cd build

运行以下命令(以banana数据集为例):

./opensplat /path/to/banana -n 2000

生成的splat.ply文件可以在PlayCanvas Viewer中查看,cameras.json文件也会在同一目录下生成。

运行自定义数据:选择包含稀疏点的COLMAP、OpenSfM、ODM或nerfstudio项目路径。

5.4 查看参数

运行以下命令查看可调参数:

./opensplat --help

5.5 生成压缩splat文件:

使用以下命令生成压缩的.splat文件:

./opensplat /path/to/banana -o banana.splat

在这里插入图片描述

6. 参考链接

https://blog.csdn.net/ytusdc/article/details/132404002

https://blog.csdn.net/h3c4lenovo/article/details/119003405

https://blog.csdn.net/Xeon_CC/article/details/126913125

https://blog.csdn.net/qq_42864343/article/details/131728784

https://blog.csdn.net/2301_79694635/article/details/135647492

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI数据分析003:用kimi生成一个正弦波数学动画

文章目录 一、正弦波公式二、输入内容三、输出内容一、正弦波公式 ƒ(x) = a * sin(x + x0) + b 公式中: a: 决定正弦函数振动幅度的大小; x0:表示x开始比0拖后的弧度值; b:表示函数偏离X轴的距离; 对于难以理解的学生来说,可以用动画把这个公式直观的展现出来。 二…

WLAN 4-Way Handshake如何生成GTK?

关于Wi-Fi的加密认证过程&#xff0c;可以参考如下链接&#xff0c;今天我们来理解如何生成GTK。 WLAN数据加密机制_tls加密wifi-CSDN博客 1 GTK GTK&#xff08;Group Temporal Key&#xff09;是由AP通过GMK生成&#xff0c;长度为128位&#xff0c;并在四次握手的第三步中…

一文掌握 Object 类里的所有方法(wait、notify、finalize)

Object 概述 Object 类是 Java 中所有类的父类&#xff0c;这个类中包含了若干方法&#xff0c;这也就意味着所有类都将继承这些方法。因此&#xff0c;掌握这个类的方法是非常必要的&#xff0c;毕竟所有类都能为你提供这些方法。 Object 类位于 java.base 模块下 java.lang…

360的chromesafe64.dll动态链接库导致chrome和edge浏览器闪退崩溃关闭

在chrome或edge浏览器中打开特定的一些网页会导致浏览器闪退关闭 这是windows系统记录的报错日志 chrome报错日志 edge报错日志 日志指向的就是chromesafe64.dll这个动态库 然后用everything搜索发现原来在360安装目录下 360安装目录下的chromesafe64.dll文件 为什么360中的…

微信小程序服务器从腾讯云迁移到阿里云出现的坑

微信小程序服务器从腾讯云迁移到阿里云出现的坑 背景 原先小程序后台服务器到期&#xff0c;因为之前买的是腾讯云新用户&#xff0c;便宜&#xff0c;到期后续费金额懂的都懂。就在阿里云用新用户买了个新的&#xff0c;遂把服务全转到了阿里云服务器上。 此时&#xff0c;域…

Python学习笔记26:进阶篇(十五)常见标准库使用之性能测试cProfile模块学习使用

前言 本文是根据python官方教程中标准库模块的介绍&#xff0c;自己查询资料并整理&#xff0c;编写代码示例做出的学习笔记。 根据模块知识&#xff0c;一次讲解单个或者多个模块的内容。 教程链接&#xff1a;https://docs.python.org/zh-cn/3/tutorial/index.html 本文主要…

如何保护磁盘数据?电脑磁盘数据怎么保护?

电脑磁盘是存储数据的基础&#xff0c;可以将各种重要数据保存在其中。为了避免数据泄露&#xff0c;我们需要保护磁盘数据。那么&#xff0c;电脑磁盘数据怎么保护呢&#xff1f;下面我们就一起来了解一下吧。 文件夹加密超级大师 文件夹加密超级大师是一款优秀的电脑数据加密…

敏捷开发笔记(第9章节)--开放-封闭原则(OCP)

目录 1&#xff1a;PDF上传链接 9.1 开放-封闭原则&#xff08;OCP&#xff09; 9.2 描述 9.3 关键是抽象 9.3.1 shape应用程序 9.3.2 违反OCP 糟糕的设计 9.3.3 遵循OCP 9.3.4 是的&#xff0c;我说谎了 9.3.5 预测变化和“贴切的”结构 9.3.6 放置吊钩 1.只受一次…

2024年华东杯B题数学建模论文:基于车辆运动学转弯模型的自动驾驶规划问题

摘要 随着自动驾驶技术的发展&#xff0c;车辆转弯问题成为关键挑战。本文针对自动驾驶车辆在转弯过程中的数学建模、路径规划及避障策略进行了深入研究&#xff0c;旨在提升自动驾驶车辆的行驶安全性与效率。 针对问题1&#xff0c;对于四轮前轮驱动车辆的转弯问题&#xff0c…

MCU解决800V电动汽车牵引逆变器的常见设计挑战的3种方式

电动汽车 (EV) 牵引逆变器是电动汽车的。它将高压电池的直流电转换为多相&#xff08;通常为三相&#xff09;交流电以驱动牵引电机&#xff0c;并控制制动产生的能量再生。电动汽车电子产品正在从 400V 转向 800V 架构&#xff0c;这有望实现&#xff1a; 快速充电 – 在相同…

嵌入式Linux系统编程 — 4.5 strcmp、strchr 等函数实现字符串比较与查找

目录 1 字符串比较 1.1 strcmp() 函数 1.2 strncmp() 函数 1.3 示例程序 2 字符串查找 2.1 strchr() 函数 2.2 strrchr() 函数 2.3 strstr() 函数 2.4 strpbrk() 函数 2.5 示例程序 1 字符串比较 strcmp() 和 strncmp() 函数是C语言标准库中用于比较两个字符串的函…

【STM32修改串口波特率】

STM32微控制器中的串口波特率调整通常涉及到USART&#xff08;通用同步接收器/发送器&#xff09;模块的配置。USART模块提供了多个寄存器来设置波特率&#xff0c;其中关键的寄存器包括BRR&#xff08;波特率寄存器&#xff09;和USART_CR1&#xff08;控制寄存器1&#xff09…

JVM专题十:JVM中的垃圾回收机制

在JVM专题九&#xff1a;JVM分代知识点梳理中&#xff0c;我们主要介绍了JVM为什么采用分代算法&#xff0c;以及相关的概念&#xff0c;本篇我们将详细拆分各个算法。 垃圾回收的概念 垃圾回收&#xff08;Garbage Collection&#xff0c;GC&#xff09;确实是计算机编程中的…

python-斐波那契数列

[题目描述] 斐波那契数列是指这样的数列&#xff1a;数列的第一个和第二个数都为 1&#xff0c;接下来每个数都等于前面 2个数之和。 给出一个正整数 a&#xff0c;要求斐波那契数列中第 a 个数是多少。输入&#xff1a; 第 1 行是测试数据的组数 n&#xff0c;后面跟着 n 行输…

Dahlia Hart: Stylized Casual Character(休闲角色模型)

此包包含两个发型和两个服装&#xff0c;每个都有多种颜色选择。每个发型都适合与物理资源一起使用&#xff0c;并包含各种表情和音素混合形状。 下载&#xff1a;​​Unity资源商店链接资源下载链接 效果图&#xff1a;

算法设计与分析--近似算法内容整理

文章目录 P、NP、NP-hard 和 NPC多项式时间概念区分NP-hard 的证明例题 1 证明 T S P TSP TSP 问题是 N P − h a r d NP-hard NP−hard 问题 。例题 2 证明最大加权独立集问题是 N P − h a r d NP-hard NP−hard 问题。 扩展 NP-hard 问题3-SAT 问题TSP 旅行商问题 Load B…

探索高效开发神器:Blackbox AI(免费编程助手)

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 &#x1f916; 想要代码生成&#xff1f;&#x1f44c; &#x1f4ac; 需要和AI聊天解决难题&#xff1f;&#…

ORBSLAM3_ROS_Ubuntu18_04环境搭建安装

orbslam3安装 ORB-SLAM3配置及安装教程&#xff08;2023.3&#xff09;_orbslam3安装-CSDN博客 换源&#xff0c;换成国内的 搜索software 安装工具 sudo apt install git sudo apt update sudo apt install gcc g cmake安装 cmake安装新版本 ubuntu20.04安装cmake详细…

python--基础篇--正则表达式--py脚本--题目解答

文章目录 验证输入用户名和QQ号是否有效并给出对应的提示信息从一段文字中提取出国内手机号码替换字符串中的不良内容拆分长字符串 验证输入用户名和QQ号是否有效并给出对应的提示信息 """ 验证输入用户名和QQ号是否有效并给出对应的提示信息要求&#xff1a;用…

Nvidia Jetson/RK3588+AI双目立体相机,适合各种割草机器人、扫地机器人、AGV等应用

双目立体视觉是基于视差原理&#xff0c;依据成像设备从不同位置获取的被测物体的图像&#xff0c;匹配对应点的位置偏移&#xff0c;得到视差数据&#xff0c;进而计算物体的空间三维信息。为您带来高图像质量的双目立体相机&#xff0c;具有高分辨率、低功耗、远距离等优点&a…