De 0 a CUDA en (30+45)' Authors: Dionisio E Alonso <dealonso@gmail.com> Leandro S Perona <lsperona@gmail.com> Date: Mayo 2011
Un server Debian para CUDA Hardware Tres componenetes importantes en un server de GPUs: Motherboard Fuente Gabinete Software De Debian-base a un CUDA-server. 2
Motherboard Es necesario 1 (Un) conector PCI-e (PCI Express) 2.0 x16 por placa. Important Un slot PCI-e de largo x16 puede trabajar a la velocidad de un x8. Revisar en la página del producto que siempre funcionen como x16. 3
Fuente Requisitos 2 (dos) conectores PCI-e 6+2 por placa (No confundir con 4+4 u 8). Capaz de mantener una potencia alta sostenida durante períodos prolongados. 1 tarjeta>=750w, 2 tarjetas>=1000w. Recomendaciones No comprar fuentes genéricas. Consultar el sitio web del producto. 4
Gabinete Debe ser espacioso. Tener buen flujo de aire. Ventiladores de 12cm atrás o arriba. Consultar el sitio web del producto. 5
Gabinte (cont.) 6
La tarjeta 7
Otras consideraciones: Tener tanta RAM de sistema como en la suma de las tarjetas. El procesador es el que controla la memoria. Una sala con aire acondicionado. 8
Por qué Debian? Es fácil de instalar. Instala lo justo y necesario. Mucho software científico. Viene con las pilas incluídas. 9
Tengo mi Debian instalado Y ahora? Important Últimas versiones de drivers, toolkit y libs en sid y experimental. Necesito los siguiente paquetes: nvidia-kernel-dkms (es el paquete que me construye el driver) nvidia-cuda-toolkit (compilador + libs) nvidia-smi 10
Agregando los nuevos sabores Primero: # echo 'APT::Default-Release "squeeze";' >> /etc/apt/apt.conf Para agregar las versiones de los repos de sid y experimental: # echo 'deb http://myserver/repo sid main contrib non-free' >> /etc/apt/sources.list # echo 'deb http://myserver/repo experimental main contrib non-free' \ >> /etc/apt/sources.list Luego actualizamos la lista de paquetes: # aptitude update 11
Y todo eso Cómo se instala? # aptitude --target-release sid install nvidia-kernel-dkms # aptitude --with-recommends --target-release experimental \ install nvidia-cuda-toolkit # aptitude --target-release sid install nvidia-smi Y más corto? # aptitude -t sid install nvidia-kernel-dkms # aptitude -r -t experimental install nvidia-cuda-toolkit # aptitude -t sid install nvidia-smi 12
Eso es todo? Note Si algo falla, usar apt-cache policy para averiguar qué versión exacta tengo del paquete que me falta. Con la información obtenida: # aptitude -t RELEASE install PAQUETE 13
Un ejemplo: $ apt-cache policy nvidia-cuda-toolkit nvidia-cuda-toolkit: Installed: (none) Candidate: 3.2.16-2 Version table: 4.0.13-1 0 1 http://ftp.ccc.uba.ar/pub/linux/debian/debian/ experimental/non-f ree amd64 Packages 3.2.16-2 0 500 http://ftp.ccc.uba.ar/pub/linux/debian/debian/ sid/non-free amd64 Packages 14
Cómo hago con más de una placa? Editamos como administrador el archivo /etc/default/nvidia-kernel Cambiamos el valor de la variable NVIDIA_CARDS por la cantidad de placas que tengamos. Por último reiniciamos el servicio: # service nvidia-kernel restart 15
Y con eso ya compilo? Todavía nos falta algo, agregar los usuarios al grupo video: # gpasswd -a USER video 16
Otras cosas que pueden hacer falta: El SKD necesita los headers de thrust Luego se necesita modoficar ~/NVIDIA_GPU_Computing_SDK/C/common/common.mk así: diff -Nur -x '*.orig' -x '*~' NVIDIA_GPU_Computing_SDK/C/common/common.mk NVIDIA_GPU_Com puting_sdk.new/c/common/common.mk --- NVIDIA_GPU_Computing_SDK/C/common/common.mk 2008-01-01 08:34:07.813044308-0200 +++ NVIDIA_GPU_Computing_SDK.new/C/common/common.mk 2008-01-01 08:47:51.489043434-0200 @@ -62,6 +62,7 @@ # Includes INCLUDES += -I. -I$(CUDA_INSTALL_PATH)/include -I$(COMMONDIR)/inc -I$(SHAREDDIR)/inc +INCLUDES += -I/ruta/a/la/carpeta/padre/de/thrust # Warning flags CXXWARN_FLAGS := \ 17
Y por último... Para compilar el SDK completo: # aptitude install libxi-dev libxmu-dev libglut3-dev $ make -C ~/NVIDIA_GPU_Computing_SDK/C/ Para poder linkearlo en un entorno de 64 bits: $ cd ~/NVIDIA_GPU_Computing_SDK/C/common/lib/ $ ln -s libcutil_x86_64.a libcutil.a $ cd ~/NVIDIA_GPU_Computing_SDK/C/common/lib/linux/ $ mv libglew.a libglew_i386.a $ ln -s libglew_x86_64.a libglew.a 18
Q & A: Alguna pregunta? 19