sábado, 1 de septiembre de 2012

CentOS 6 para GPGPU con CUDA

Instalación del sistema base
La instalación es igual a cualquier otra, no hay mucho que agregar al respecto.

Actualización
Verifico que el sistema este actualizado
yum check-update

Si existen actualizaciones pendientes, actualizo
yum update

Además instalo EPEL (Extra Packages for Enterprise Linux).
rpm -Uvh http://download.fedoraproject.org/pub/epel/6/ARCH/epel-release-6-7.noarch.rpm

reemplazando ARCH por la arquitectura correspondiente i386 o x86_64 según corresponda

Desactivo el arranque de gdm editando /etc/inittab y cambiando al runlevel 3 que me da un modo completo para multiusuario sin necesidad de desperdiciar recursos en el servidor X que no utilizo. Esto es en el caso en que al servidor se accede de forma remota.

Desactivo la carga de nouveau, para esto es necesario crear un script en /etc/modprobe.d/, en mi caso le puse el nombre disable-nouveau.conf, con el siguiente contenido

blacklist nouveau options nouveau modeset=0

Luego abrir /etc/grub.conf y agregar rhgb rdblacklist=nouveau al final de la linea, se muestra a continuación. Esto evita la carga de nouveau en el inicio de ramdisk.

kernel /vmlinuz-2.6.32-71.14.1.el6.x86_64 ro root=UUID=209502fb-f4f0-4755-a275-de807916fb76 rd_NO_LUKS rd_NO_LVM rd_NO_MD rd_NO_DM LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 KEYBOARDTYPE=pc KEYTABLE=us crashkernel=128M rhgb rdblacklist=nouveau

Esta referencia puede ser útil, http://www.spiderbird.com/2011/02/05/installing-nvidia-driver-under-centos-red-hat-6-0/

A continuación, instalo el driver para desarrollo (dev-driver) de la placa de video y el cuda-toolkit, que son las dos herramientas necesarias para poder desarrollar en cuda. Como opcional puedo compilar el cuda-sdk que son códigos de ejemplo, entre los cuales podemos contar algunos interesantes, como deviceQuery, el cual nos da toda la información acerca de nuestra placa.
Estos paquetes se encuentran en http://developer.nvidia.com/cuda/cuda-downloads
instalo driver nvidia, cuda toolkit, cuda sdk

Una vez finalizado lo anterior, solo me resta setear las variables de entorno. En caso que lo quiera hacer para todos los usuarios debo agregar un archivo en /etc/profile.d/, en mi caso gpu.sh, con el siguiente contenido, en este caso /usr/local/cuda es el directorio donde esta instalado.

export PATH=/usr/local/cuda/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:/usr/local/cuda/lib:$LD_LIBRARY_PATH

si solo quiero setearlas para un usuario, debo poner las mismas lineas en .bashrc en el home del usuario.