Personal tools
You are here: Home Calcul Technique Documentation calculateur ATOS BULL Myria GPGPU

GPGPU

Document Actions
Accélération d'applications sur processeur graphique (GPU)


  • Documentation

    • CUDA

      L'API CUDA, qui s'appuie sur du langage C, permet l'accélération de codes de calcul sur des GPU de type NVIDIA :

      Sur le système de fichiers de Myria, les répertoires /soft/cuda_8.0/cuda/doc et /soft/cuda_8.0/cuda/doc/html contiennent les documentations de CUDA 8.0.

    • Directives OpenACC

      Les directives OpenACC (http://www.openacc-standard.org/) sont le standard de la programmation par directives pour GPU. La norme OpenACC 2.0 est supportée par le compilateur de PGI. Le CRIANN possède deux jetons de licence de cet outil.
      Les développements sont considérablement simplifiés par rapport à l'utilisation directe de l'API CUDA. Cette dernière permet parfois d'exploiter plus finement l'architecture d'un GPU. Dans d'autres cas, OpenACC peut être efficace et réduire le rapport temps de développement / performance.

    • CUDA FORTRAN

      La version FORTRAN de l'API CUDA est éditée par PGI.

      La documentation utilisateur est disponible au format PDF sur le site de l’éditeur : http://www.pgroup.com/doc/pgi17cudaforug.pdf


  • Environnement logiciel

    Les commandes suivantes activent la version voulue de CUDA ou du compilateur PGI (pour OpenACC ou CUDA FORTRAN) sur Myria.
    Elles doivent être exécutées sur l'une des frontales, pour les compilations, et dans les commandes utilisateur d'un script de soumission pour code accéléré sur GPU.

    • CUDA

      login@Myria-1:~ module load cuda/8.0

      cuda/8.0 environment

      • Modèles de Makefile : /soft/makefiles/SERIAL_GPU_CODES (examples CUDA et OpenCL), /soft/makefiles/MPI_CUDA_CODES/MakeIntelMPI_CUDA_C++

    • OpenACC ou CUDA FORTRAN

      login@Myria-1:~ module load pgi/16.10

      pgi16.10 environment set (OpenACC and CUDA FORTRAN supports)

      • Modèle de Makefile pour CUDA FORTRAN : /soft/makefiles/MPI_CUDA_CODES/MakeIntelMPI_CUDA_Fortran
      • Modèle de Makefile pour OpenACC : /soft/makefiles/MPI_OpenACC_CODES/MakeIntelMPI_PGI_OpenACC

  • Soumission des calculs

    Les nœuds de calcul hybrides (CPU-GPU) de Myria acceptent les partitions (classes de soumission) "gpu(_all, _k80, _p100)".

    Un ou plusieurs nœuds de calcul hybrides peuvent être dédiés ponctuellement à un utilisateur, sur demande, à des fins de travaux de développement (nécessitant une haute disponibilité de la ressource GPU).
    Contacter support@criann.fr.

    Pour exécuter un code accéléré sur GPU, il suffit d'ajouter les directives :

    # Partition (gpu_k80 or gpu_p100)
    #SBATCH --partition gpu_p100
    # GPUs per compute node
    #SBATCH --gres gpu:2

    et l'activation des environnements :

    # Source cuda or pgi environment
    module load cuda/8.0
    #module load pgi/16.10

    dans l'un des modèles de script job_serial.sl, job_OpenMP.sl, job_MPI(_OpenMP).sl présents dans /soft/slurm/criann_modeles_scripts.
    Le fichier /soft/slurm/criann_modeles_scripts/job_MPI_OpenMP_GPU.sl fournit l'exemple pour un code MPI / OpenMP / CUDA.

    Remarque : dans le cas d’un code MPI accéléré sur GPU, l’application des directives "#SBATCH --nodes" et "#SBATCH --ntasks-per-node" (à la place de "#SBATCH --ntasks") est utile.

    En effet, s’il est souhaité que chaque processus MPI de l’application adresse un GPU différent, il suffit d’appliquer "#SBATCH --ntasks-per-node 4" en partition gpu_k80 (car les serveurs visés ont 4 GPUs (2 cartes Kepler K80)) ou "#SBATCH --ntasks-per-node 2" en partition gpu_p100 (car les serveurs visés ont 2 GPUs (2 cartes Pascal P100)).

    Exemple :
    ##
    # Partition (gpu_k80 or gpu_p100)
    #SBATCH --partition gpu_p100
    #
    # GPUs per compute node
    #SBATCH --gres gpu:2
    #
    # Compute nodes number
    #SBATCH --nodes 3
    #
    # MPI tasks per compute node
    #SBATCH --ntasks-per-node 2
    #
    # Threads per MPI tasks (if needed)
    #SBATCH --cpus-per-task 8


Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: