Personal tools

GPGPU

Document Actions
Accélération de codes sur processeur graphique (GPU)


  • Documentation

    • CUDA / OpenCL

      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 d'Antares, les répertoires /soft/cuda_6.5/cuda/doc et /soft/cuda_6.5/cuda/doc/html contiennent les documentations de CUDA 6.5.

      Pour OpenCL, se référer au documents OpenCL* du répertoire /soft/cuda_4.0/doc.


    • Directives HMPP

      Le logiciel HMPP (solution propriétaire CAPS entreprise) permet le portage de codes de calcul sur architecture hybride CPU-GPU, par l'inclusion de directives au sein de programmes FORTRAN ou C.
      Les développements sont considérablement simplifiés par rapport à l'utilisation directe de l'API CUDA ; le rapport temps de développement / performance peut en être fortement diminué.

      Une formation sur cet outil a été dispensée au CRIHAN par l'éditeur (CAPS entreprise) en Avril 2012.

      Sur le système de fichiers d'Antares, l'archive /soft/formations/HMPP_Avr2012/HMPP_FORMATION_Avr2012.tgz contient les supports de cours (PDF), les exercices et leurs énoncés.
      Les différents fichiers "README" et "Makefile" permettent de compiler et d'exécuter en batch les codes de travaux pratiques sur Antares.

      Remarque : il est interdit de transmettre ces documents à toute personne non utilisatrice des ressources de calcul du CRIHAN.


    • Directives OpenACC

      Les directives OpenACC (http://www.openacc-standard.org/) s'inscrivent dans un effort de standardisation de la programmation par directives pour GPU. Elles sont en effet supportées par trois compilateurs (ceux de PGI, CRAY et CAPS entreprise). Le CRIHAN possède deux jetons de licence de l'outil CAPS Compilers. Ce compilateur est en fait l'évolution de l'outil nommé précédemment HMPP, qui supporte à présent les directives OpenACC. Celles-ci permettent le portage de codes de calcul sur architecture hybride CPU-GPU, par l'inclusion de directives au sein de programmes FORTRAN ou C.
      Les développements sont considérablement simplifiés par rapport à l'utilisation directe de l'API CUDA ; le rapport temps de développement / performance peut en être fortement diminué.

    • Une formation sur la programmation par directives OpenACC (avec CAPS Compilers) a été dispensée au CRIHAN par CAPS entreprise en Mars 2013.

      Sur le système de fichiers d'Antares, l'archive /soft/formations/OpenACC_Mars2013/OPENACC_FORMATION_Mars2013.tgz contient les supports de cours et d'énoncé des exercices (PDF) ainsi que les sources des exercices avec leurs solutions.
      Les différents fichiers "README" et "Makefile" permettent d'activer l'environnement, de compiler et d'exécuter en batch les codes de travaux pratiques sur Antares.

      Remarque : il est interdit de transmettre ces documents à toute personne non utilisatrice des ressources de calcul du CRIHAN.


    • CUDA FORTRAN

      La version FORTRAN de l'API CUDA est éditée par PGI. Le CRIHAN doit être contacté (support@criann.fr) pour une demande de licence d'évaluation.

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


  • Environnement logiciel

    Les commandes suivantes activent la version la plus récemment installée de CUDA, HMPP, CAPS Compilers ou CUDA FORTRAN sur Antares.
    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 / OpenCL

      login@antares-adm:~ source /soft/environment/cuda/cuda.sh

      CUDA 7.5 / OpenCL environment set

      • Modèles de Makefile : /soft/makefiles/SERIAL_CUDA_CODES (examples CUDA et OpenCL), /soft/makefiles/MPI_CUDA_CODES/MakeIntelMPI_C++_CUDA

    • HMPP

      login@antares-adm:~ source /soft/environment/hmpp/hmpp.sh

      HMPP 3.0.7 Workbench environment set

      • Modèles de Makefile : /soft/formations/HMPP_Avr2012/HMPP_FORMATION_Avr2012.tgz (répertoires LABSESSIONS/HMPP/HMPP/labsheets/lab* et HMPP_Multifile_FORTRAN_groups_example)

    • CAPS Compilers

      login@antares-adm:~ source /soft/environment/CAPSCompilers/CAPSCompilers.sh

      CAPS Compilers 3.3.2 environment set

      • Modèles de Makefile : /soft/formations/OpenACC_Mars2013/OPENACC_FORMATION_Mars2013.tgz (répertoires OpenACC/labsessions/lab*)

    • CUDA FORTRAN ou OpenACC avec PGI (contacter support@criann.fr pour une demande de licence d'évaluation)

      login@altair-adm:~ source /soft/environment/cuda-fortran/pgi-cuda-fortran.sh

      CUDA FORTRAN 16.5 environment set

      Taper "module load pgi-cuda-fortran/16.5" est équivalent.

      • 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) d'Antares acceptent la classe de soumission "gpu", mais aussi une classe de travaux n'utilisant que le CPU (durée ≤ 24 h, classe "tcourt_w").

    Un ou plusieurs nœuds de calcul hybrides peuvent être dédiés, sur demande, à la classe "gpu" à des fins de développements ou de tests sur GPU (nécessitant une haute disponibilité de ressources).
    Contacter support@criann.fr.

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

    # GPU resources
    # @ requirements = (Feature == "gpu")

    et l'activation des environnements :

    # Source most recent installed CUDA/OpenCL (and CAPS Compilers if needed) environment(s)
    source /soft/environment/cuda/cuda.sh
    source /soft/environment/CAPSCompilers/CAPSCompilers.sh

    dans l'un des modèles de script job_serial.ll, job_OpenMP.ll, job_Impi(-5.0.2)(_OpenMP).ll, job_Ompi.ll présents dans /soft/loadl/crihan_modeles_scripts.
    Le fichier "/soft/loadl/crihan_modeles_scripts/job_Impi(-5.0.2)_Gpu.ll" fournit l'exemple pour un code MPI / CUDA utilisant la librairie Intel MPI (-5.0.2).

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

    En effet, s’il est souhaité que chaque processus MPI de l’application adresse un GPU différent, il suffit d’appliquer "# @ tasks_per_node = 2" étant donné que les nœuds de calcul hybrides d'Antares contiennent chacun deux modules GPU.

    Exemple :

    # @ requirements = (Feature == "gpu")
    # @ job_type = MPICH
    # Nodes number
    # @ node = 3
    # MPI tasks per node
    # @ tasks_per_node = 2


Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: