|
|
# Utilisation des GPU #
|
|
|
## Utilisation de base ##
|
|
|
### Accès ###
|
|
|
L'accès doit être demandé auprès de [Victor Mendoza](mailto:mendoza@lpnhe.in2p3.fr?subject=Demande accès machine GPU au LPNHE).
|
|
|
# GPU Use #
|
|
|
## Basic use ##
|
|
|
### Login ###
|
|
|
The login authorization should be ask to [Victor Mendoza](mailto:mendoza@lpnhe.in2p3.fr?subject=Asking login on GPU machine at LPNHE).
|
|
|
|
|
|
Ensuite, l'accès passe par une commande
|
|
|
Then, the login is performed with a command
|
|
|
```bash
|
|
|
ssh lpnws5232.in2p3.fr
|
|
|
```
|
|
|
### Configuration de l'environnement ###
|
|
|
Pour accéder à [CUDA](http://www.nvidia.com/object/cuda_home_new.html)
|
|
|
### Environment configuration ###
|
|
|
To access to [CUDA](http://www.nvidia.com/object/cuda_home_new.html)
|
|
|
```bash
|
|
|
. /usr/local/bin/cuda-setup.sh # sh, bash
|
|
|
```
|
|
|
ou
|
|
|
or
|
|
|
```bash
|
|
|
source /usr/local/bin/cuda-setup.csh # csh, tcsh
|
|
|
```
|
|
|
|
|
|
À noter que des cartes GPU sont également disponibles sur la machine [Mesu](MesuIcs)-Beta de l'ICS.
|
|
|
Please note that GPU boards are also available on the [Mesu](MesuIcs)-Beta of ICS.
|
|
|
|
|
|
## Pour commencer ##
|
|
|
### Les exemples CUDA ###
|
|
|
Pour installer les exemples CUDA :
|
|
|
## How to begin ##
|
|
|
### CUDA samples ###
|
|
|
To install CUDA samples :
|
|
|
```bash
|
|
|
cuda-install-samples-8.0.sh $destDir
|
|
|
cd $destDir
|
|
|
cuda-fix-samples.sh # les rendre compatibles avec SL
|
|
|
cuda-fix-samples.sh # to make them compatible with SL
|
|
|
cd NVIDIA_CUDA-8.0_Samples
|
|
|
make -j # pour tout compiler
|
|
|
make -j # to compile everything
|
|
|
```
|
|
|
Ensuite, soit on accède aux codes compilés dans chaque sous répertoire, organisé par thème :
|
|
|
Then, one should find compiled codes in each subdir, organized by item :
|
|
|
```bash
|
|
|
SOMEWHERE/cuda-samples/NVIDIA_CUDA-8.0_Samples $ ls
|
|
|
0_Simple 2_Graphics 4_Finance 6_Advanced bin EULA.txt
|
|
|
1_Utilities 3_Imaging 5_Simulations 7_CUDALibraries common Makefile
|
|
|
```
|
|
|
Soit directement les binaires dans `SOMEWHERE/cuda-samples/NVIDIA_CUDA-8.0_Samples/bin/x86_64/linux/release/`
|
|
|
Binaries are directly available at `SOMEWHERE/cuda-samples/NVIDIA_CUDA-8.0_Samples/bin/x86_64/linux/release/`
|
|
|
|
|
|
### Exemples maison ###
|
|
|
#### Exemples en CUDA ####
|
|
|
Sur la base de l'estimation de pi :
|
|
|
* Essai basique : [pi_gpu.cu](gpu/pi-test/pi_gpu.cu)
|
|
|
* Essai mieux implémenté : [pi_gpu_v2.cu](gpu/pi-test/pi_gpu_v2.cu)
|
|
|
* Version multi-GPU : [pi_gpu_multiGPU.cu](gpu/pi-test/pi_gpu_multiGPU.cu)
|
|
|
* Utilisation de la librairie [thrust](http://docs.nvidia.com/cuda/thrust/) : [pi_gpu_thrust.cu](gpu/pi-test/pi_gpu_thrust.cu)
|
|
|
### Local examples ###
|
|
|
#### CUDA example ####
|
|
|
Based on the pi estimation :
|
|
|
* basic code : [pi_gpu.cu](gpu/pi-test/pi_gpu.cu)
|
|
|
* better implemented code : [pi_gpu_v2.cu](gpu/pi-test/pi_gpu_v2.cu)
|
|
|
* Multi-GPU version : [pi_gpu_multiGPU.cu](gpu/pi-test/pi_gpu_multiGPU.cu)
|
|
|
* Using [thrust](http://docs.nvidia.com/cuda/thrust/) : [pi_gpu_thrust.cu](gpu/pi-test/pi_gpu_thrust.cu)
|
|
|
|
|
|
#### Exemples en python ####
|
|
|
Pour utiliser les exemples python, il faut tout d'abord installer quelques modules python en local. Le plus simple est d'utiliser [anaconda](https://www.continuum.io/downloads), qui permet d'avoir un environement python local, et d'installer des modules à volonté, sans avoir besoin d'être root sur la machine. L'outil est disponible sur la machine portant les gpu. Pour y accéder :
|
|
|
#### Python examples ####
|
|
|
In order to use pythlon examples, one should install some python modules locally. The simpliest way is to use [anaconda](https://www.continuum.io/downloads), which gives a local python environment, and install needed modules which does not require root privileges. The tool is available on the GPU machine. To proceed :
|
|
|
|
|
|
```bash
|
|
|
export ANACONDADIR="/usr/local/anaconda3-2.5.0"
|
|
|
export PATH="$ANACONDADIR/bin:$PATH"
|
|
|
```
|
|
|
|
|
|
Ensuite pour les exemples, on a besoin ~~d'installer~~ d'utiliser (c'est a priori déjà disponible pour tous les utilisateurs *à confirmer*) le module [numba](http://numba.pydata.org/) qui permet l'optimisation automatique de code python et comporte notamment la libraire NVIDIA CUDA pour la programmation GPU:
|
|
|
Then, for samples, one need ~~to install~~ to use (a priori it's already available for all users *to be confirmed*) the [numba](http://numba.pydata.org/) module which allows automatic optimization of the python code and uses the NVIDIA CUDA library for GPU programming :
|
|
|
```bash
|
|
|
conda install numba
|
|
|
conda install accelerate
|
|
|
```
|
|
|
|
|
|
## Compléments ##
|
|
|
### Cartes GPU disponibles ###
|
|
|
Sur la machine portant les gpu, il y a deux cartes disponibles, numérotées 0 et 1.
|
|
|
Par défaut, si l'on n'utilise qu'une seule carte, c'est la carte 0 qui est utilisé; c'est un souci si tous les utilisateurs vont sur la carte 0 et aucun sur la carte 1.
|
|
|
## Other informations ##
|
|
|
### Available GPU boards ###
|
|
|
On the machine with GPU, there are two available boards, numbered 0 et 1.
|
|
|
By default, if one use only one board, the 0th is used; it's an issue if all users are using the 0th board and none on the 1st.
|
|
|
|
|
|
Aussi, la variable `CUDA_VISIBLE_DEVICES` est placé aléatoirement (en fait non, suivant la parité de la session) à 0 ou 1.
|
|
|
Si vous souhaitez utiliser les 2 cartes :
|
|
|
Thus, the `CUDA_VISIBLE_DEVICES` variable is randomly set (actually not, it's done according to the session parity) to 0 or 1.
|
|
|
If you wish to use 2 boards :
|
|
|
```bash
|
|
|
export CUDA_VISIBLE_DEVICES=0,1
|
|
|
```
|
|
|
ou bien
|
|
|
or
|
|
|
```bash
|
|
|
unset CUDA_VISIBLE_DEVICES
|
|
|
```
|
|
|
|
|
|
### Profilage de code CUDA ###
|
|
|
### Profiling CUDA code ###
|
|
|
Il passe par l'utilisation de l'outil Nvidia Visual Profiler (`nvvp`).
|
|
|
|
|
|
![nvvp](/uploads/cbc3413dbb2068feb9058f688f4b6197/Screenshot_from_2016-04-12_16-02-06.png).
|
... | ... | |