1.°²×°Ç°×¼±¸¹¤×÷
1.1È·ÈÏGPUÐͺźͲÙ×÷ϵͳ°æ±¾
1.2×¼±¸gpuÇý¶¯ºÍCUDAÈí¼þ°ü
ÔÚnvidia¹ÙÍø½øÐÐÇý¶¯°üÏÂÔØ
GPUÇý¶¯ÏÂÔØÁ´½Ó£ºhttps://www.nvidia.cn/Download/index.aspx?lang=cn
linuxϵͳ¾ùÑ¡Ôñ Linux 64-bit
CUDA ToolkitÑ¡Ôñ×îа汾£¬×¢Òâ¸Ã°æ±¾Ò»¶¨Òª´óÓÚµÈÓÚcudaÈí¼þµÄ°æ±¾¡£
Ñ¡ÔñCUDA¼°GPUÇý¶¯°æ±¾£¬Ðèͬʱ¿¼ÂÇÓë¿Í»§³ÌÐòµÄ¼æÈÝÐÔÎÊÌâ¡£
CUDA 10.1/10.2¿ÉÒÔ´îÅäCUDA toolkit 10.2°æ±¾µÄGPUÇý¶¯¡£
CUDA 11.0 ½¨Òé´îÅäCUDA CUDA toolkit 11.0°æ±¾µÄGPUÇý¶¯

CUDAÏÂÔØÁ´½Ó£ºhttps://developer.nvidia.com/cuda-downloads
Ñ¡ÔñºÏÊʵIJÙ×÷ϵͳ°æ±¾½øÐÐÏÂÔØ¡£

1.3¼ì²é·þÎñPGµç¾º¹ÙÍøGPUʶ±ðÇé¿ö
°²×°GPUÇý¶¯Ö®Ç°ÐèÒªÔÚ²Ù×÷ϵͳϲ鿴GPU¿¨ÊÇ·ñÄܹ»Íêȫʶ±ð,Èç²»ÄÜʶ±ðÐèÒª½øÐÐÖØÐ²å°Î¡¢¶Ôµ÷²âÊԵȲ½Öè½øÐÐÓ²¼þÅŲ顣
#È·±£¿ÉÒԲ鿴µ½ËùÓеÄGPU
# lspci | grep -i nvidia

1.4Àϰ汾Èí¼þ°üÐ¶ÔØ
Èô°²×°¹ýÆäËû°æ±¾µÄGPUÇý¶¯»òCUDA£¬ÇëÏÈÐ¶ÔØ¡£
GPUÇý¶¯Ð¶ÔØ·½·¨£º
# /usr/bin/nvidia-uninstall
CUDAÐ¶ÔØ·½·¨£º
# /usr/local/cuda-X.Y/bin/cuda-uninstaller

»ò£¨ÀÏ°æ±¾Ð¶ÔØ·½·¨£©
# /usr/local/cuda-X.Y/bin/uninstall_cuda_X.Y.pl
1.5°²×°gcc¡¢g++±àÒëPGµç¾º¹ÙÍø
GPUÇý¶¯°²×°Ê±ÐèÒªgcc±àÒëPGµç¾º¹ÙÍø¡£
cuda°²×°samples²âÊÔ³ÌÐò½øÐÐmakeʱÐèÒªg++£¬µ«°²×°cudaÈí¼þ°üʱ²»ÐèÒª¡£
CentOS 7£º
#¼ì²é°æ±¾
gcc -v
g++ -v
#Èí¼þ°ü°²×°
# yum install gcc
# yum install gcc-c++
SUSE£º
#¼ì²é°æ±¾
gcc -v
g++ -v
#Èí¼þ°ü°²×°
zypper in gcc
zypper in gcc-c++
Ubuntu£º
#¼ì²é°æ±¾
# gcc -v
# g++ -v
#Èí¼þ°ü°²×°
# gpt-get install gcc
# gpt-get install g++
# apt-get install make
#Èí¼þ°ü¼ì²é
# dpkg -l gcc
# dpkg -l g++
# dpkg -l make
1.6°²×°kernel-develºÍkernel-headersÈí¼þ°ü
CentOS 7£º
# yum install kernel-devel-$(uname -r) kernel-headers-$(uname -r)
Ubuntu£º
#Ubuntu¿ÉÒÔ²»°²×°£¬Ò²¿ÉÒÔ´Ó°¢Àï¾µÏñÕ¾»òÍøÒ×¾µÏñÕ¾ÏÂÔØ£¬Ðè×¢ÒâÄں˰汾¡£
SUSE:
zypper install kernel-source-$(uname -r) #Ö»°²×°ÕâÒ»¸ö¼´¿É
zypper install kernel-default-devel-$(uname -r)

1.7½ûÓÃϵͳ×Ô´øµÄnouveauÄ£¿é
¼ì²énouveauÄ£¿éÊÇ·ñ¼ÓÔØ£¬ÒѼÓÔØÔòÏȽûÓÃ
# lsmod | grep nouveau

CentOS 7:
#ûÓÐblacklist-nouveau.confÎļþÔò´´½¨
# vim /usr/lib/modprobe.d/blacklist-nouveau.conf blacklist nouveau
options nouveau modeset=0
Ö´ÐÐÈçÏÂÃüÁîʹÄÚºËÉúЧ£¨ÐèÒªÖØÆô·þÎñPGµç¾º¹ÙÍøºó²Å¿ÉÕæÕý½ûÓÃnouveau£©
# dracut -force
Ubuntu:
vi /etc/modprobe.d/blacklist.conf
ÔÚÎı¾×îºóÌí¼ÓÒÔÏÂÄÚÈÝ£º
blacklist nouveau
options nouveau modeset=0
±£´æÍ˳ö£¬Ö´ÐÐÒÔÏÂÃüÁîÉúЧ£º
# update-initramfs -u
1.8ÖØÆô²Ù×÷ϵͳ
1£©ÐÞ¸ÄϵͳÔËÐм¶±ðΪÎı¾Ä£Ê½
GPUÇý¶¯°²×°±ØÐëÔÚÎı¾Ä£Ê½Ï½øÐÐ
CentOS 7
# systemctl set-default multi-user.target
Ubuntu:
systemctl stop lightdm
systemctl set-default multi-user.target£¨Ò²¿ÉÒÔ²»Ö´ÐдËÃüÁ
È»ºóctrl+alt+F1 Çл»µ½ÆäËû×Ö·ûÖÕ¶Ë´°¿Ú£¨F7ΪͼÐÎÖжϴ°¿Ú£©£¬»òÕßinit 3
SUSE:
vim /etc/inittab
ÐÞ¸Ä
id:5:initdefault:
Ϊ
id:3:initdefault:
2£©ÖØÆôϵͳºó,ʹ½ûÓÃnouveauÄ£¿éÅäÖÃÉúЧ²¢½øÈëÎı¾Ä£Ê½

2.GPUÇý¶¯°²×°
1£©rootÓû§Ï½øÐÐGPUÇý¶¯
# chmod +x NVIDIA-xxx.run
# ./NVIDIA-Linux-x86_64-390.46.run ¨Cno-opengl-files ¨Cui=none ¨Cno-questions ¨Caccept-license
2£©ÅäÖÃGPUÇý¶¯Äڴ泣פģʽ
GPUÇý¶¯Ä£Ê½ÉèÖÃΪ³£×¤Äڴ棺
# nvidia-smi -pm 1
ÉèÖÿª»ú×ÔÆô¶¯
vim /etc/rc.d/rc.local
ÔÚÎļþÖÐÌí¼ÓÒ»ÐÐ
nvidia-smi -pm 1
¸³Óè/etc/rc.d/rc.localÎļþ¿ÉÖ´ÐÐȨÏÞ
# chmod +x /etc/rc.d/rc.local
#ÈôÎÞ/etc/rc.d/rc.local£¬Ò²¿ÉÐÞ¸Ä
vim /etc/rc.local
chmod +x /etc/rc.local
================================================
ubuntu 18.04 ÅäÖÃÄڴ泣פģʽ¿ª»ú×ÔÆô¶¯¡£
https://blog.csdn.net/ererfei/article/details/98205463
´´½¨Îļþ£º vi /etc/systemd/system/rc-local.service
[Unit]
Description=/etc/rc.local Compatibility
ConditionPathExists=/etc/rc.local
[Service]
Type=forking
ExecStart=/etc/rc.local start
TimeoutSec=0
StandardOutput=tty
RemainAfterExit=yes
SysVStartPriority=99
[Install]
WantedBy=multi-user.target
´´½¨Îļþ£º vi /etc/rc.local
#!/bin/sh -e
nvidia-smi -pm 1
exit 0
¸³Óè¿ÉÖ´ÐÐȨÏÞ
chmod +x /etc/rc.local
Æô¶¯·þÎñ²¢ÉèÖ÷þÎñ¿ª»ú×ÔÆô¶¯
systemctl enable rc-local.service
systemctl start rc-local.service
systemctl status rc-local.service
ÖØÆôϵͳºóÑéÖ¤
=================================================
#SUSE
vim /etc/init.d/after.local #ûÓоÍн¨
nvidia-smi -pm 1
chmod +x /etc/init.d/after.local
nvidia-smi
°²×°ÍêGPUÇý¶¯ºó£¬¿ÉÒÔʹÓÃnvidia-smiÃüÁî½øÐÐGPU״̬²é¿´¼°Ïà¹ØÅäÖá£
3.CUDA°²×°
1£©°²×°CUDA
°²×°CUDAʱÐè×¢Ò⣬Èç¹û֮ǰ°²×°¹ýGPUÇý¶¯£¬°²×°CUDAʱ¾Í²»ÒªÔÙÑ¡ÔñGPUÇý¶¯°²×°ÁË¡£
chmod +x cuda-xxx.run
./cuda-xxx.run ¨Cno-opengl-libs
а汾CUDA°²×°½çÃæ£º
×¢ÒâDriverÑ¡Ï±íʾÊÇ·ñ°²×°GPUÇý¶¯£¬Èç¹û֮ǰÒѾ°²×°ÁËGPUÇý¶¯£¬ÕâÀï²»ÒªÔÙ¹´Ñ¡¡£

¾É°æ±¾CUDA°²×°£º
[root@ localhost ~]# ./cuda-xxx.run ¨Cno-opengl-libs
¡ ¡ ¡ ¡
¡ ¡ ¡ ¡ ####Ô¼¶¨Ìõ¿î£¬´Ë´¦ºöÂÔ´òÓ¡
¡ª¡ª¡ª¡ª¡ª¨C
Do you accept the previously read EULA?
accept/decline/quit: accept
Install NVIDIA Accelerated Graphics Driver for Linux-x86_64 387.26?
(y)es/(n)o/(q)uit: n ###ÈôÒѾ°²×°¹ýÇý¶¯£¬Ôò´Ë´¦²»ÐèÔÙ°²×°
Install the CUDA 9.2 Toolkit?
(y)es/(n)o/(q)uit: y
Enter Toolkit Location
[ default is /usr/local/cuda-9.1 ]: ####»Ø³µ£¬Ä¬ÈÏ
Do you want to install a symbolic link at /usr/local/cuda?
(y)es/(n)o/(q)uit: y
Install the CUDA 9.2 Samples?
(y)es/(n)o/(q)uit: y ##°²×°samples
To uninstall the CUDA Toolkit, run the uninstall script in /usr/local/cuda-9.2/bin
To uninstall the NVIDIA Driver, run nvidia-uninstall
Please see CUDA_Installation_Guide_Linux.pdf in /usr/local/cuda-9.2/doc/pdf for detailed information on setting up CUDA.
Logfile is /tmp/cuda_install_62403.log
####°²×°Íê³É£¬Èç¹û°²×°Ê§°Ü£¬²é¿´ÉÏÊöÌáʾÈÕÖ¾ÐÅÏ¢¡£
2£©ÅäÖû·¾³±äÁ¿
Ìí¼Óµ½/etc/profileÎļþÖУ¬¶ÔËùÓÐÓû§ÉúЧ
# vim /etc/profile
export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
# source /etc/profile
²âÊÔcuda°²×°ÊÇ·ñÕýÈ·£¬»·¾³±äÁ¿ÊÇ·ñʶ±ð³É¹¦
# nvcc -V
