Luke 发布的文章

四则运算

加:+
减:-
叉乘:\times,
点乘:\cdot,
分数:\frac{}{}, 第一个大括号内为分子,第二个大括号内为分母

指数对数

指数:{}^{}, 第一个大括号内为底数,第二个大括号内为指数
对数:\log_{}, 大括号内为底数,其他内容直接在括号外面写即可
根号:\sqrt{}
高次根号:\sqrt[]{}, 中括号内为次数,大括号内为实际内容

上标下标

上标同指数一样{}^{} ,下标为{}_{}.
这里特别提一句,在有的指令后面,^和_不一定是上下标。比如说\sum_{}^{}, 在行间公式模式下,就代表正下方和正上方。如果要更改这个方式,可以用\limits\nolimits指令。比如说,如果想让行间公式的求和符号的上下标在角上而不在上下方,可以写\sum\nolimits_{}\nolimits^{}, 如果想让行内公式的求和符号的上下标在上下方而不在角上,可以写\sum\limits_{}\limits^{}.

括号

左括号:\left(
右括号:\right)
中括号:\left[...\right],
大括号:\left\{...\right\}(这里要注意{和}前均有),
尖括号:\left<...\right>
绝对值:\left|...\right|
范数:\left\|...\right\|
单边括号:将不需要的那半边括号用left.代替即可。

求和与求积

求和公式:\sum_{a}^{b}
求积公式:\prod_{a}^{b}

积分与微分

积分公式:\int_{a}^{b}
二重积分:\iint_{D}
三重积分:\iiint_{D}
全积分:\oint_{C}
偏微分: \partial

极限

极限:\limit_{a\to b}

0 背景

最近实验室的gpu服务器老是出问题,需要重新装显卡驱动。网上教程非常老旧,很多说的都不知所云
作者曾经尝试的安装方法和结果:
官网下载driver——安装失败
直接用cuda toolkit,一口气安装驱动和cuda——安装失败
所以作者采用了本文中的方法。
本教程旨在记录本人亲自安装成功的一次经历。在相同的系统环境下可安装成功,不同系统环境仅供参考,不保证成功。
本文旨在简洁明了、可直接复制命令执行、可复现、可读性好
**本文环境:
ubuntu server 20.04,其他系统仅供参考!**
注意,本文仅适用于ubuntu server,不需要图形界面,没有对图形界面进行特殊考虑和验证!依赖图形操作界面的读者慎用!
注意,本文仅适用于ubuntu server,不需要图形界面,没有对图形界面进行特殊考虑和验证!依赖图形操作界面的读者慎用!
注意,本文仅适用于ubuntu server,不需要图形界面,没有对图形界面进行特殊考虑和验证!依赖图形操作界面的读者慎用!

1 安装nvidia驱动

1.1 查看是否安装了gcc

gcc -v

若没有安装,则输入下面的命令,直接把包括gcc在内很多开发工具包一同安装

sudo apt-get install build-essential

1.2 禁用nouveau驱动

编辑 /etc/modprobe.d/blacklist-nouveau.conf 文件,添加以下内容:

blacklist nouveau
blacklist lbm-nouveau
options nouveau modeset=0
alias nouveau off
alias lbm-nouveau off

关闭nouveau:

echo options nouveau modeset=0 | sudo tee -a /etc/modprobe.d/nouveau-kms.conf

注意,本文仅适用于ubuntu server,不需要图形界面,没有对图形界面进行特殊考虑和验证!依赖图形操作界面的读者慎用!
注意,本文仅适用于ubuntu server,不需要图形界面,没有对图形界面进行特殊考虑和验证!依赖图形操作界面的读者慎用!
注意,本文仅适用于ubuntu server,不需要图形界面,没有对图形界面进行特殊考虑和验证!依赖图形操作界面的读者慎用!
完成后,重新生成内核并重启:

sudo update-initramfs -u
sudo reboot

重启后,执行:lsmod | grep nouveau如果没有屏幕输出,说明禁用nouveau成功。否则,应重新执行第1.2小节

1.3 安装驱动

使用命令ubuntu-drivers devices获取可用驱动信息,如果命令不存在自己安装一下。
输出为(不同电脑依据配置输出不同,我这里还有报错但是不影响)

ERROR:root:could not open aplay -l
Traceback (most recent call last):
  File "/usr/share/ubuntu-drivers-common/detect/sl-modem.py", line 35, in detect
    aplay = subprocess.Popen(
  File "/usr/lib/python3.8/subprocess.py", line 854, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/usr/lib/python3.8/subprocess.py", line 1702, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'aplay'
== /sys/devices/pci0000:17/0000:17:00.0/0000:18:00.0 ==
modalias : pci:v000010DEd00002204sv000010DEsd00001454bc03sc00i00
vendor   : NVIDIA Corporation
driver   : nvidia-driver-470 - distro non-free recommended
driver   : nvidia-driver-460 - distro non-free
driver   : nvidia-driver-470-server - distro non-free
driver   : nvidia-driver-495 - distro non-free
driver   : nvidia-driver-460-server - distro non-free
driver   : xserver-xorg-video-nouveau - distro free builtin

从上述信息中找到driver,后面找recommend,发现了系统推荐安装的驱动程序nvidia-driver-470。这里考虑到是ubuntu server,所以我最终选择了nvidia-driver-470-server。
执行命令安装驱动:sudo apt install nvidia-driver-470-server
等待安装完成后,执行nvidia-smi可以输出gpu监控界面,则驱动安装成功!从监控信息中我们可以看到cuda版本是11.4,所以下面我们安装cuda toolkit的时候也是安装这个版本的。

2 安装cuda

https://developer.nvidia.com/cuda-toolkit-archive中找到相应的版本。这里我们选用11.4的版本,采用runfile的安装形式。
直接输入以下命令:

wget https://developer.download.nvidia.com/compute/cuda/11.4.0/local_installers/cuda_11.4.0_470.42.01_linux.run
sudo sh cuda_11.4.0_470.42.01_linux.run

注意,当提醒你已经安装了driver的时候,直接continue。当选择安装内容的时候,务必把driver前面的x取消掉,因为我们已经安装了驱动!!!
安装完成后重启,输入nvcc -V显示相关信息,则安装成功!

3 解决服务器ssh一段时间后连不上的问题

装好驱动后,发现服务器一段时间后ssh就连不上了,必须得重启才行。后来看了服务器日志才发现是服务器设置了自动挂起。
输入命令:systemctl status sleep.target
输出信息:

● sleep.target - Sleep
Loaded: loaded (/lib/systemd/system/sleep.target; static; vendor preset: enabled)
Active: inactive (dead)
Docs: man:systemd.special(7)

可以发现loaded。说明自动sleep是启用了。
我们输入命令:sudo systemctl mask sleep.target suspend.target hibernate.target hybrid-sleep.target将其禁用。
输入命令:systemctl status sleep.target
输出信息:

● sleep.target
Loaded: masked (Reason: Unit sleep.target is masked.)
Active: inactive (dead)

说明禁用成功!
再次提醒:
注意,本文仅适用于ubuntu server,不需要图形界面,没有对图形界面进行特殊考虑和验证!依赖图形操作界面的读者慎用!
注意,本文仅适用于ubuntu server,不需要图形界面,没有对图形界面进行特殊考虑和验证!依赖图形操作界面的读者慎用!
注意,本文仅适用于ubuntu server,不需要图形界面,没有对图形界面进行特殊考虑和验证!依赖图形操作界面的读者慎用!
如果读者依赖图形界面,本文没有进行特殊考虑和验证,不能确定会不会有问题,请读者留意并结合其他教程使用!

4 参考资料

https://blog.csdn.net/qq_34387533/article/details/116011839
https://www.cnblogs.com/pprp/p/9430836.html
https://zhuanlan.zhihu.com/p/393152883

背景

这篇文章汇总了我平时用到的git相关知识和命令,同时记录了我遇到的疑难点和答案,力求从下载git到学会使用一文解决。在撰写本文的过程中,也参考了许多网页和资料,将在文后参考资料小节全部列出。

包含内容

读完本文,将可以解决以下问题:
git如何配置,如何将本机和github通过密钥关联
git如何建立本地版本库,如何与github或gitee等远程仓库连接,如何同时与github和gitee的远程仓库连接。
git如何推到远程仓库。
git如何建立分支,如何切换分支,如何合并分支。
git如何回退到上一个版本,有些文件改错了,不知道改了哪些,如何放弃掉本地的更改。

1 git配置

1、设置用户名和邮箱(--global 为全局参数,表明本地所有Git仓库都会使用这个配置)

git config --global user.name "yourname"
git config --global user.email "your_email@youremail.com"

2、生成密钥(SSH key)

ssh-keygen -t rsa -C "your_email@youremail.com"

967677-20180127235546537-326832952.png
3、在github中添加密钥。
将上一步骤生成的密钥即.ssh/id_rsa.pub中内容全部复制。在github的 Settings-->SSH and GPG keys-->New SSH key,key中粘贴复制的内容(Title自定义)。

2 创建版本库并连接远程仓库

1、先来了解git的工作流。
Screenshot from 2021-06-13 16-26-56.png
git的工作过程就是,自己修改了本地目录中的内容,然后通过命令提交到暂存区,然后通过命令提交HEAD,它指向最后一次提交的结果,然后通过命令提交到远程仓库。
2、进入自己项目文件夹,输入git init,也就是在本地建立了新的仓库。
3、连接远端仓库。首先需要先在github或者gitee建立一个仓库,然后使用以下命令和远端仓库建立连接。

git remote add origin git@github.com:yourName/repositoryname.git  #通过ssh方式(推荐,因为我们前面已经配置了ssh)
git remote add origin https://github.com/yourName/repositoryname.git  #通过https方式

这里有人就会问了,后面这个地址怎么得到呢?很简单,只需要在github或者gitee的右上角,选择下载代码,里面选择ssh,然后把地址复制下来就好了。如图所示大概位置。
Screenshot from 2021-06-13 16-34-35.png
这里注意,这个命令里面的origin是你自己起的名字,可以任意改。如果要同时将本地仓库和github与gitee仓库连接起来的话,那就一个用origin1,一个用origin2就好了,执行两遍上面的命令,那就是分别和github与gitee建立了连接。

3 如何推到远端仓库

执行以下命令,分别将修改过的文件(在本地目录中),提交到暂存区,然后提交到HEAD,然后提交到远端仓库。

git add <file>        将文件添加到暂存区,如果要将工作目录中所有的文件都提交到暂存区,可以直接用git add .
git commit -m "commnet"   提交更改,添加备注信息(此时将暂存区的信息提交到本地HEAD)
git push origin master    将本地仓库的文件push到远程仓库(若 push 不成功,可加 -f 进行强推操作)

4 如何建立、切换、合并分支

有时候,我们需要开发新的特性,不要直接在主分支上开发,而是应该建立一个新的分支,然后在新的分支上开发,最后与主分支合并。
1、使用以下命令建立并切换到新的分支。

git checkout -b branch_name

2、使用以下命令切换分支

git chceckout branch_name

3、将其他分支合并到当前分支使用以下命令。

git merge branch_name_you_want_to_merge

5 如何回退版本

1、使用git log查到你想回退版本的id。
2、使用git reset --hard id进行回退。注意,使用这个命令后,再使用git log查看id的时候,会发现只保留到你退过来的这个id,比它新的都已经没有了。如果这时候你想反悔,也就是想“往前回退”,需要使用git reflog命令查id,然后使用相同的命令就可以“往前回退”了。
3、如果不想向上面那样回退(因为id会消失),那就使用git convert --hard id来进行回退。这时候使用git log还能看到比当前版本更新的commit id
4、使用git push -f origin master来更新远端仓库中的内容。
5、如果不小心改错了,想放弃修改,可以使用git checkout -- 改错的文件名来放弃本地目录中的修改,回到你上次提交的版本。注意,如果此时你已经将错误的命令提交到暂存区,使用这个命令是无效的,你需要先使用git reset HEAD 改错的文件名来放弃暂存区中的内容,然后再使用git checkout -- 改错的文件名来放弃本地目录中的修改。

6 疑难问题

1、我有两个分支,我改了一个分支中本地目录中的文件,那另一个分支中的本地目录的文件会被修改吗?
这个需要分情况讨论。
如果你在A分支更改了本地目录中的文件,然后没有保存到暂存区就使用git checkout切换了分支,那么很抱歉另一个分支的本地目录的相应文件也被更改了。
如果你在A分支更改了本地目录中的文件,然后保存到了暂存区后想使用git checkout切换分支,那么此时会报错无法成功完成分支切换,会提示你先提交。
如果你在A分支更改了本地目录中的文件,然后保存到了暂存区,然后提交到了HEAD,然后使用git checkout切换分支,那么并不会更改你刚切换到的这个分支里的本地目录的文件。

参考资料

以下两个网站内容丰富,推荐阅读!
https://rogerdudler.github.io/git-guide/index.zh.html
https://www.cnblogs.com/zeo-to-one/p/8367801.html