Prenez contact avec nous

Plan du cours

Introduction

  • Qu'est-ce qu'OpenACC ?
  • OpenACC vs OpenCL vs CUDA vs SYCL
  • Aperçu des fonctionnalités et de l'architecture d'OpenACC
  • Configuration de l'environnement de développement

Démarrage

  • Création d'un projet OpenACC dans Visual Studio Code
  • Exploration de la structure du projet et des fichiers
  • Compilation et exécution du programme
  • Affichage de la sortie avec printf et fprintf

Directives et clauses OpenACC

  • Compréhension des directives et clauses OpenACC
  • Utilisation des directives parallel pour créer des régions parallèles
  • Utilisation des directives kernels pour le parallélisme géré par le compilateur
  • Utilisation des directives loop pour paralléliser les boucles
  • Gestion du transfert de données avec les directives data
  • Synchronisation des données avec les directives update
  • Amélioration de la réutilisation des données avec les directives cache
  • Création de fonctions device avec les directives routine
  • Synchronisation des événements avec les directives wait

API OpenACC

  • Compréhension du rôle de l'API OpenACC
  • Interrogation des informations et capacités des périphériques
  • Définir le nombre et le type de périphérique
  • Gestion des erreurs et exceptions
  • Création et synchronisation d'événements

Bibliothèques OpenACC et interopérabilité

  • Compréhension des bibliothèques OpenACC et de l'interopérabilité
  • Utilisation des bibliothèques mathématiques, aléatoires et complexes
  • Intégration avec d'autres modèles (CUDA, OpenMP, MPI)
  • Intégration avec les bibliothèques GPU (cuBLAS, cuFFT)

Outils OpenACC

  • Compréhension des outils OpenACC en développement
  • Profiling et débogage des programmes OpenACC
  • Analyse des performances avec les compilateurs PGI, NVIDIA Nsight Systems, Allinea Forge

Optimisation

  • Facteurs influençant les performances des programmes OpenACC
  • Optimisation de la localité des données et réduction des transferts
  • Optimisation du parallélisme des boucles et de la fusion
  • Optimisation du parallélisme des noyaux et de la fusion
  • Optimisation de la vectorisation et du réglage automatique

Résumé et étapes suivantes

Pré requis

  • Une compréhension de la programmation parallèle et des langages C/C++ ou Fortran
  • Des connaissances de base en architecture informatique et hiérarchie de mémoire
  • Expérience avec les outils en ligne de commande et les éditeurs de code

Public cible

  • Développeurs qui souhaitent apprendre à utiliser OpenACC pour programmer des appareils hétérogènes et exploiter leur parallélisme
  • Développeurs qui souhaitent écrire du code portable et évolutif qui peut s'exécuter sur différentes plateformes et appareils
  • Programmateurs qui souhaitent explorer les aspects de haut niveau de la programmation hétérogène et optimiser la productivité de leur code
 28 Heures

Nombre de participants


Prix par participant

Cours à venir

Catégories Similaires