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

news2024/11/23 23:56:28

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++-7
 
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 9
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 1
 
sudo 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 1
 
sudo 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 directory
    1 | #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.coloradmin.cn/o/1872852.html

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

相关文章

x86 平台实现一个原子加法操作

1&#xff0c;先上代码 #include <iostream> #include <omp.h>int atomicAdd(int* ptr, int value) {int result;asm volatile("lock xaddl %0, %1\n": "r" (result), "m" (*ptr): "0" (value), "m" (*ptr): &…

关于IDEA启动报错 【JAVA_HOME does not point to a valid JM installation】

希望文章能给到你启发和灵感&#xff5e; 感谢支持和关注&#xff5e; 阅读指南 一、基础环境说明1.1 硬件环境1.2 软件环境 二、起因 一、基础环境说明 考虑环境因素不同&#xff0c;大家适当的对比自己的软硬件环境情况分析&#xff5e; 1.1 硬件环境 MacOS Monterey 版本 1…

海南云亿商务咨询有限公司深度解读抖音电商

在当今数字化飞速发展的时代&#xff0c;电商行业早已成为经济发展的重要引擎。而在众多电商平台中&#xff0c;抖音以其独特的短视频直播形式&#xff0c;成为了众多商家和消费者的新宠。海南云亿商务咨询有限公司&#xff0c;正是这一领域的佼佼者&#xff0c;专注于抖音电商…

分享暄桐林曦老师的精进心法

暄桐是一间传统美学教育教室&#xff0c;创办于2011年&#xff0c;林曦是创办人和授课老师&#xff0c;教授以书法为主的传统文化和技艺&#xff0c;皆在以书法为起点&#xff0c;亲近中国传统之美&#xff0c;以实践和所得&#xff0c;滋养当下生活。      清风雅致林曦老…

基于Vue3 + Typescript 封装 Element-Plus 组件

1. 课程简介 项目地址 git clone https://gitee.com/childe-jia/my-message.git 背景: 该课程是基于Vue3 Typescript Vite构建, 教会大家封装Element-Plus组件 具备能力: 最新的 Vue3 及相关技术组件的设计思想大厂的开发模式/代码规范 技术: Vue3 首次渲染 / diff 算法 …

Transformer基础及视觉应用

文章目录 Transformer基础及视觉应用注意力机制基础(主要介绍Transformer用到的类型)Transformer的编解码器结构(Encoder and Decoder)Non-local Neural NetworksTransformer与大规模图像识别(Image Recognition at Scale)DETR-2020分割应用 Transformer基础及视觉应用 注意力…

小区物业服务差,现在催缴物业费,暂时不想交如何应对?

面对催缴物业费的情况&#xff0c;采取合理、合法的方式进行沟通和处理是非常重要的。如果您认为物业服务存在不足或者问题&#xff0c;可以按照以下步骤尝试解决问题&#xff0c;而不是直接拒绝缴费&#xff0c;避免后续可能产生的法律纠纷&#xff1a; 收集证据&#xff1a;首…

电脑怎么去除视频水印?电脑视频水印怎么去掉?

电脑怎么去除视频水印&#xff1f;有是我们见到喜欢的视频会保存下来&#xff0c;但是有时候保存的视频上面会带有水印&#xff0c;那么视频水印该如何去除呢&#xff1f;今天小编给大家推荐一个好用的视频去水印软件&#xff0c;操作简单&#xff0c;去水印效果好。 使用&…

tauri使用github action实现跨平台编译并解决编译错误等问题

正常编译为跨平台结果就像上面的&#xff0c;有mac/windows/linux的安装程序&#xff0c;直接下载就可以安装使用&#xff0c;我的这个livebox桌面端仓库地址&#xff1a;GitHub - Sjj1024/LiveBox: livebox&#xff0c;里面有编译文件可以参考。今天主要讲一下遇到的问题。 官…

碳课堂|ISO 14064标准新版变化

ISO 14064标准是针对组织碳排放方面的管理标准&#xff0c;包括温室气体排放和清除的量化、报告与验证的国际标准。其最新版本于 2018年发布&#xff0c;标志着对温室气体管理的全球认知和实践的进一步演进。ISO 14064 作为 ISO 14060 标准系列的重要组成部分&#xff0c;将继续…

bodypaint如何恢复布局设置

1.老师我手贱&#xff0c;布局改了&#xff0c;怎么恢复 2.左边咋没有纹理这个窗口了用来放参考图的 窗口&#xff0c;新建纹理视图&#xff0c;点那九点&#xff0c;拖拽&#xff0c;改变悬浮窗的状态

CatBoost原理介绍

文章最前&#xff1a; 我是Octopus&#xff0c;这个名字来源于我的中文名–章鱼&#xff1b;我热爱编程、热爱算法、热爱开源。所有源码在我的个人github &#xff1b;这博客是记录我学习的点点滴滴&#xff0c;如果您对 Python、Java、AI、算法有兴趣&#xff0c;可以关注我的…

专业好用的数据恢复软件(iTop Data Recovery Pro v4.4.0.687 激活版 )

前言 由于 iTop 独特的恢复算法&#xff0c;这个强大的数据恢复工具加快了扫描和数据恢复过程。您无需等待很长时间即可取回数据。只需几分钟&#xff0c;您就可以按预期完美找回已删除的文件。此外&#xff0c;扫描选项多种多样&#xff0c;可满足不同的需求。您可以通过位置…

《昇思25天学习打卡营第3天 | 昇思MindSpore数据集 Dataset》

第三天 今天学习了不同的数据集加载方式、数据集常见操作和自定义数据集方法。 1.数据集加载。 以Mnist数据集为例。mindspore.dataset提供的接口仅支持解压后的数据文件&#xff0c;因此我们使用download库下载数据集并解压。 2.数据集迭代。 用create_tuple_iterator或create…

Android (已解决)Gradle 编译失败 Unsupported class file major version 61

文章目录 一、报错原因二、解决方法 一、报错原因 新版本的 Android Studio 默认使用的是 Java 17 LTS&#xff0c;而这个历史项目的 Gradle 版本很低&#xff0c;不支持高版本的 Java。 具体原因&#xff1a;Java 17 (major version 61) 编译的 class 文件&#xff0c;如果在…

重磅更新-UniApp自定义字体可视化设计

重磅更新-UniApp自定义字体可视化设计。 DIY可视化为了适配不同APP需要&#xff0c;支持用户自定义字体&#xff0c;自定义字体后&#xff0c;设计出来的界面更多样化&#xff0c;不再是单一字体效果。用户可以使用第三方字体加入设计&#xff0c;在设计的时候选择上自己的字体…

[数据集][目标检测]水面垃圾水面漂浮物检测数据集VOC+YOLO格式3749张1类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;3749 标注数量(xml文件个数)&#xff1a;3749 标注数量(txt文件个数)&#xff1a;3749 标注…

开启网络监控新纪元:免费可视化工具助力网络信息链路拓扑监控大屏

在数字化浪潮汹涌的今天&#xff0c;网络已成为我们生活、工作的不可或缺的一部分。然而&#xff0c;你是否曾经想过&#xff0c;在这个庞大的网络世界中&#xff0c;是谁在默默守护着每一条信息的传输&#xff0c;确保我们的数据安全、稳定地抵达目的地&#xff1f; 网络信息链…

C# 在WPF .net8.0框架中使用FontAwesome 6和IconFont图标字体

文章目录 一、在WPF中使用FontAwesome 6图标字体1.1 下载FontAwesome1.2 在WPF中配置引用1.2.1 引用FontAwesome字体文件1.2.2 将字体文件已资源的形式生成 1.3 在项目中应用1.3.1 使用方式一&#xff1a;局部引用1.3.2 使用方式二&#xff1a;单个文件中全局引用1.3.3 使用方式…

Transformer教程之Encoder-Decoder架构

在当今的自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;Transformer已经成为不可或缺的模型。它以其高效的并行计算和卓越的性能在多个任务中占据了主导地位。在这篇文章中&#xff0c;我们将深入探讨Transformer的核心——Encoder-Decoder架构&#xff0c;帮助大家…