NVIDIA-docker配置(含一键脚本)

突然想起自己还有个博客系列
bash脚本见最下


最近在研究docker和Tensoflow等一些前端框架相结合做分布式和统一前端的问题,要在机房具体拿十几台机子先把docker跑起来。机子是四五年前的老机子所以交给我随便折腾,主要配置是i7 3770k+32G ddr3+GTX 670+2T SATA+256G SSD.其实6 series的显卡是可以正常跑CUDA 8.0的,驱动啥的也没问题,但是怎么装驱动就是一个巨坑了。

首先是架构,每台host用ubuntu+NVIDIA driver+docker+CUDA+NVIDIA-docker,NVIDIA-docker的安装wiki,此处的dependencies是有坑的,CUDA 8.0是必装的,不然NVIDIA-docker还是跑不起来的。

从头开始安装的话首先是系统,可能redhat+kickstart对于这种稍微有点规模的部署可能会节约一点时间,但是我看我们老师装centos的时候都是手动装的我想想还是算了吧。第一个问题就是server还是desktop,起初为了优雅我准备直接改一改server的镜像提前装好几个包或者直接把装好的系统打包ISO直接部署类似dism,后来找了半天找个systemback然后只能在GUI下能导出ISO,我想算了算了为了优雅怎么能在生产环境用desktop呢真鸡儿丢人我退群吧就作罢了,老老实实装完跑脚本吧。因为和一个同学一起他盘里有desktop我一边想着丢人丢人一边一人一台机子先搞起来。一开始我的驱动是用ppa:graphics-drivers/ppa源装的,然后就见了鬼了,desktop的机子毫无问题server死活装不上,报的啥错我已经气的记不住了。一会准备再试一次,暂且放着不提。

最终解决方案是用ppa源装的,375 384影响不大,感觉都能work至少nvidia-smi没问题。装完驱动务必立即重启,以及我这里是不需要手动禁用nonveau的,这也是一个巨坑。

然后是CUDA,众you所ren周shuo知官网run file就是个废物然后我直接用的deb,除了1.8G巨大无比又下载缓慢之外没啥大问题,我直接拉到本地分发的,在安装cuda的时候如果之前装的不是375会自动remove掉然后装375,这都无所谓,要是想要384的话装完CUDA重装一遍驱动即可,我是觉得可以直接装CUDA不需要事先安装driver的,但是自己没有尝试,准备一会试一下。由于这里又装了一遍驱动,所以装完重启。

到这里为止大概CUDA能跑起来了,然后装按官网方案装docker即可,装完docker下载NVIDIA-docker的release里面的deb装NVIDIA-docker即可,这里由于现在github的release download会跳转到aws的cdn,大概率被小墙,脸好的话等重连,脸黑直接tcp reset了,我也是本地部署的。

装完之后基本上大功告成,其他麻烦的地方就在于dockerhub巨慢无比配加速器也没啥用私有仓库可能是唯一解决方案,准备一会搭了,然后几个框架也很大所以等下载应该是有点难受的。用的时候用到GPU的时候用NVIDIA-docker即可。

这么一看好像也没啥坑可能是我脸黑加菜吧,不是菜是他们针对我.jpg,用同学的笔记本跑毫无问题我自己就GG,最后原因是uefi的话要关secureboot不然驱动不生效,也算一个小坑吧昨晚搞了一个小时。

按照我已经实现的上述思路来说是三个阶段里面两次重启,我个人感觉第一次驱动是没必要装的一会确认一下,反正按这种装是可以work的,如果不行就检查uefi的secureboot

sudo sh -c "echo 'deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial main restricted universe multiverse\ndeb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-updates main restricted universe multiverse\ndeb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-backports main restricted universe multiverse\ndeb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ xenial-security main restricted universe multiverse' > /etc/apt/sources.list"
sudo apt remove docker docker-engine docker.io -y
sudo apt update && sudo apt upgrade -y
sudo apt-get install \
    linux-image-extra-$(uname -r) \
    linux-image-extra-virtual \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common -y
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable" -y
sudo add-apt-repository ppa:graphics-drivers/ppa -y
sudo apt update
sudo apt install docker-ce nvidia-384 -y
wget /tmp https://developer.nvidia.com/compute/cuda/8.0/Prod2/local_installers/cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64-deb
sudo dpkg -i cuda-repo-ubuntu1604-8-0-local-ga2_8.0.61-1_amd64.deb
sudo apt update && sudo apt install cuda -y && rm /tmp/cuda-*.deb
wget -P /tmp https://github.com/NVIDIA/nvidia-docker/releases/download/v1.0.1/nvidia-docker-1.0.1-1.x86_64.rpm
sudo dpkg -i /tmp/nvidia-docker*.deb && rm /tmp/nvidia-docker*.deb
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://3fdc48ed.m.daocloud.io && sudo systemctl restart docker.service

Todo:
测试能否直接装CUDA
测试server能否直接安装
搭建私有docker repository
在多个docker container中实现例如Tensorflow的前端框架

线段树模板

线段树模板,支持对区间做运算并求sum,基于POJ 3468
需要注意:

  • 数组开4倍大

  • 因为区间操作较频繁故打标记

  • 注意Update操作的位置

  • 均为1~n,所以包括左右,分段递归注意端点要被包含


阅读剩余部分 -

配置instantclick支持prism高亮与mathjax

由于instantclick实现的是PJAX,headfooter之间的内容并不会更新,而这一部分我加载了渲染代码高亮的prism.jsMathjax以及谷歌的analytics.js,所以貌似除了Google其他的js都不会正常加载,根据instantclick官网的说明,只需要改动一下绑定的事件即可,加载instantclick的部分修改为如下

阅读剩余部分 -

后缀数组

最长公共子串问题(LCS)

  • 定义:给定字符串长度最大的公有子串,使用后缀数组可达到$O(nLlogL)$,其中$n为字符串个数$,$L$为每个字符串长度

  • 等效于求两个后缀的公共前缀(LCP)

后缀数组相关概念

  • SA[i]:排名为i的后缀的位置(第i是谁)

  • Rank[i]:第i个后缀suffix(i)的排名

  • 对于已经排好序的字符串,任意两个的公共最长前缀为$LCP(s[i], s[j]) = min \{ LCP(s[k], s[k + 1]) , i \le k < j\}$,LCP转化成区间最小值RMQ问题

  • height[i]:定义height[i] = LCP(SA[i - 1], SA[i]),则$LCP(s[i], s[j]) = min \{ height[k] , i \le k < j\}$

阅读剩余部分 -

最新文章

最近回复

分类

归档

其它

微博

基佬们

Fork me on GitHub