Linux 服务器下非root用户安装CUDA完整流程(多次踩雷经验总结)

news2024/11/14 21:39:06

参考博客:

linux下安装cuda和cudnn(非root权限)_cuda下载安装 远程服务器 linux-CSDN博客

Linux下非root用户安装CUDA_linux下cuda-toolkit-archive-CSDN博客

非root用户安装cuda10.1,以及CUDA不同版本间切换_非root用户.run文件怎么安装-CSDN博客

前言(关于为什么会有这篇博客)

深度学习免不了需要CUDA加速,但是在诸多的CUDA安装教程中使用的都是sudo命令,服务器只有一个管理员,非管理员用户无法使用sudo命令,更新和安装CUDA通常会出现如下报错

不在 sudoers 文件中。此事将被报告。

一、清楚服务器的版本

1.1查看操作系统版

命令行输入

cat /proc/version

由此确定服务器linux操作系统的版本 可以看出本台服务器为Ubuntu20.04版本

后面在官网下载CUDA要用到

1.2查看服务器支持的CUDA的最高版本

nvidia-smi

本台服务器支持的CUDA的最高版本是12.0

后面在官网下载CUDA也要用到

二、CUDA的下载与安装

2.1 选择版本

转到CUDA官网 CUDA Toolkit Archive | NVIDIA Developer

我这里根据我的服务器选择的版本是12.0.0

点进去出现更详细的版本选择界面

根据自己服务器版本选(前面说过如何查看服务器版本了)

因为没有sudo权限,所以安装类型选择runfile(组里的师兄告诉的)其他的安装方式我也没有尝试

2.2 下载安装包

这时候会发现下面出现了安装指令

一步一步运行

在命令行输入

wget https://developer.download.nvidia.com/compute/cuda/12.0.0/local_installers/cuda_12.0.0_525.60.13_linux.run

过一会发现文件下载到了当前用户的目录下

2.3 安装runfile文件

在安装之前要新建一个CUDA的文件夹 用来作为安装路径 否则默认安装路径没有权限也会以报错

如上图,我的路径是home/XXX/CUDA12.0.0(后面要考)

接下来就是安装

会发现直接使用官网给出的命令会报错 因为没有sudo权限

很简单 去掉sudo就好

命令行输入

sh cuda_12.0.0_525.60.13_linux.run

(如果下载的和我不是一个版本 要换成自己下载的文件的名称)

这时候就进去了安装界面

问你accept嘛?就输入accept

后面的流程照着我的改(千万记得修改为自己的路径)

1.取消driver(空格 ENTER可以取消)

2.下键↓ 进入Options(ENTER 进入)
3.进入Toolkit Options

4.修改Toolkit路径(修改为新建文件夹路径)

5.Done退出

6.同理修改Library路径(也是新建文件夹的路径)
7.Done 退出
8.Install安装

9.出现如下字符安装成功

10.修改bashrc

命令行输入vim ~/.bashrc

按 i 键进入插入模式

修改后三行(对应的地方改成自己的路径)

export CUDA_HOME=$CUDA_HOME:/home/XXX/CUDA12.0.0

export PATH="/home/XXX/CUDA12.0.0/bin:$PATH"

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/XXX/CUDA12.0.0/lib64

编辑好文本后按Esc,退出插入状态

输入冒号,输入wq 回车

11.
source ~/.bashrc

三、CUDNN安装与下载

3.1官网下载cudnn

这里需要注册账号 ,没有什么会踩雷的地方,就跳过,直接进入下载步骤

cuDNN Archive | NVIDIA Developer

这个下载到自己的电脑 下载到本地就好

3.2本地解压(本地指自己的电脑区别于服务器)

解压两次 直到出现子文件夹

3.3上传Cudnn文件

在服务器新建一个文件夹 例如我的是/home/XXX/Cudnn

把解压后的所有文件上传到所有文件夹里

我用的是Xftp 可以直接传输 如果不能建议搜一下其他博客如何通过命令行的指令传输

3.4 复制文件:把Cudnn文件夹下的文件复制到CUDA下

首先跳转到Cudnn文件夹下

cd /home/XXX/Cudnn

复制(换成自己的路径)

cp /home/XXX/Cudnn/include/cudnn.h /home/XXX/CUDA12.0.0/include/
​
cp /home/XXX/Cudnn/lib/libcudnn* /home/XXX/CUDA12.0.0**/lib64/

修改权限

chmod a+r /home/XXX/CUDA12.0.0/include/cudnn*.h
​
chmod a+r home/XXX/CUDA12.0.0/lib64/libcudnn*

第二条指令可能会报错,

如果报错,修改为:

chmod a+r /home/XXX/CUDA12.0.0/targets/x86_64-linux/lib/libcudnn*

查看是否安装成功

查看版本:

nvcc -V

出现版本信息表示安装成功

查看安装路径:

which nvcc

至此结束


第一次写博客 语言的专业性和精炼有待提升 如果没有讲清楚的地方欢迎提问

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

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

相关文章

已解决centos7 yum报错:cannot find a valid baseurl for repo:base/7/x86_64的解决方案

出现cannot find a valid baseurl for repo:base/7/x86_64错误通常是由于YUM仓库源无法找到或无法访问,导致YUM无法正常工作。这种情况常见于CentOS 7系统。解决这个问题需要检查几个方面,如网络连接、DNS设置和YUM仓库源配置。 🧑 博主简介&…

aspose-words中插入附件及遇到的问题

aspose-words版本:21.1 java:1.8 目标: 前端使用tinymce编辑一段内容,后端使用aspose-words将html转为word,并将html中的附件转换为word中的附件。 形如: 实现方案: 使用正则表达式找出需要替…

setData的 Qt::CheckStateRole是model中checkbox的状态(选中否)

checkbox的状态 bool MissionModel::setData(const QModelIndex &index, const QVariant &value, int role) { if (role Qt::CheckStateRole && col 3 ) { } }

【嵌入式裸机开发】基于stm32的照相机(OV7670摄像头、STM32、TFTLCD)

基于STM32的照相机 准备工作最终效果一、下位机1、主函数2、OV7670初始化 二、上位机1、控制拍照2、接收图片数据 准备工作 一、硬件及片上资源: 1,串口1(波特率:921600,PA9/PA10通过usb转ttl连接电脑,或者其他方法)上传图片数据至上位机 2,串口2(波特率:115200,PA…

Opencv学习-直方图应用

1. 直方图均衡化 如果一个图像的直方图都集中在一个区域,那么整体图像的对比度比较小,不便于图像中纹理的识别。例如,如果相邻的两个像素灰度值分别是 120 和 121 ,那么仅凭肉眼是无法区别出来的。同时,如果图像中所…

音频提取软件分享:6款好用音频提取工具推荐

在现代数字媒体中,音频提取已经成为一项至关重要的技能。无论你是视频创作者、播客主持人,还是音乐爱好者,从视频、电影或其他多媒体文件中提取音频,都是一项非常有用的操作。 本文将围绕音频提取,介绍这项技术的应用、…

一篇文章带你实现大模型及RAG入门---小白速进

项目概述:随着人工智能技术的飞速发展,大模型(Large Models)和检索增强型生成(Retrieval-Augmented Generation, RAG)已成为自然语言处理(NLP)领域的热点。大模型以其强大的理解和生…

Java二十三种设计模式-责任链模式(17/23)

责任链模式:实现请求处理的灵活流转 引言 在这篇博客中,我们深入探讨了责任链模式的精髓,从其定义和用途到实现方法,再到使用场景、优缺点、与其他模式的比较,以及最佳实践和替代方案,旨在指导开发者如何…

力扣第 411 场周赛题解

3258. 统计满足 K 约束的子字符串数量 I 给你一个 二进制 字符串 s 和一个整数 k。 如果一个 二进制字符串 满足以下任一条件,则认为该字符串满足 k 约束: 字符串中 0 的数量最多为 k。字符串中 1 的数量最多为 k。 返回一个整数,表示 s …

系统编程-进程初步1

5 进程初步 一、认识进程 -- 进程Process是指计算机中已运行的程序,是系统进行资源分配和调度的基本单位,是操作系统结构的基础 -- 程序运行起来就是一个进程 进程存在于运行内存中程序存在于硬盘中 -- windows下查看进程使用任务管理器进行查看 1…

EXCEL——Vlookup17个高级用法

大纲 一、基本语法 1、参数详解 二、入门篇 1、单条件查找 2、屏蔽查找返回的错误值 三、进阶篇 1、反向查找 2、包含查找 3、区间查找 4、含通配符查找 5、多列查找 6、多区域查找 四、高级篇 1、多条件查找 2、合并单元格查找 3、带合并单元格的多条件查找 …

轻松玩转音频剪辑:推荐四大必备工具!

在这个多媒体时代,音频剪辑技能变得至关重要。无论是制作短视频、音频节目,还是音乐创作,一款得心应手的音频剪辑工具都能让你事半功倍。今天,我们将推荐几款热门音频剪辑工具,助你轻松玩转声音世界 福昕音频剪辑 链…

【数学建模】趣味数学模型——等额还款数学模型

问题 在银行贷款中,通常采用等额还款。假定银行贷款的年利率为 p,贷款 k 元,分 m 年采用每月等额还款方式还清。问每月还款多少钱?总共还的钱是多少?每月还款中还本金和利息各是多少元? 如果考虑每月等额…

Webrtc之SDP协议

SDP简介 SDP 最常用于 RTC 实时通话的协商过程,在 WebRTC 中,通信双方在连接阶段使用 SDP 来协商后续传输过程中使用的音视频编解码器(codec)、主机候选地址、网络传输协议等。 在实际的应用过程中,通信双方可以使用 HTTP、WebSocket、Data…

MySQL数据库主从复制

主从复制原理 MySQL的复制类型 基于语句的复制 (默认)基于行的复制混合类型的复制MySQL主从复制的工作过程 主从复制设置 主从复制时基于二进制文件的所以需要打开二进制文件 主数据库 在MySQL配置文件/etc/my.cnf修改或增加 #启用了MySQL的二进制日…

集合及数据结构第三节————包装类和简单认识泛型

系列文章目录 集合及数据结构第三节————包装类和简单认识泛型 包装类和简单认识泛型 基本数据类型和对应的包装类装箱和拆箱泛型泛型类的使用裸类型(Raw Type) (了解)泛型如何编译的泛型的上界泛型方法 文章目录 系列文章目录集合及数据结构第三节…

linux上常见问题

1.普通用户下,不能使用sudo 解决方法 1.切换到root用户下执行该指令是没有问题的 2.更改配置文件sudoers 1.进入root用户下:su - 2.编辑sudoers :visudo 此时就打开了一个文件 3.在该文件找到这么一行内容:root ALL(ALL) ALL 4.在该行的…

CUDA-MODE课程笔记 第8课: CUDA性能检查清单

我的课程笔记,欢迎关注:https://github.com/BBuf/how-to-optim-algorithm-in-cuda/tree/master/cuda-mode CUDA-MODE课程笔记 第8课: CUDA性能检查清单 课程笔记 这节课实际上算是CUDA-MODE 课程笔记 第一课: 如何在 PyTorch 中 profile CUDA kernels 这…

(16)prometheus(普罗米修斯)监控的搭建

prometheus是由go语言编写的,监控服务器是否正常运行的工具,使用experter工具收集数据,传到prometheus服务器。可以结合grafana图形化和pagerduty报警发送有邮件和信息。 实验环境: 关掉防火墙和selinux grafana.example.com 1…

为什么CNAPP将会是网络安全领域的一场革命?

随着越来越多的组织开始业务上云,云原生应用保护变得越来越复杂。众多高度碎片化产品,很难去保护一个广泛的、动态变化的攻击场景。当前想要解决这一难题,有一个很好的思路,就是云原生应用保护平台(CNAPP)。…