12.07.2015 Views

TP de programmation OpenMP — Formation Continue - Par4All

TP de programmation OpenMP — Formation Continue - Par4All

TP de programmation OpenMP — Formation Continue - Par4All

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

3 Parallélisation du co<strong>de</strong> <strong>de</strong> géomatique HyantesIl s’agit d’une application développée dans le laboratoire Mescal à Grenoble visant à représenter<strong>de</strong>s distributions humaines.Dans le répertoire LABS/P4A/Hyantes ce trouve ce programme compilable et lançable enséquentiel ou parallélisable vers <strong>OpenMP</strong> ou GPU automatiquement avec <strong>Par4All</strong>.Essayez d’utiliser plusieurs options du compilateur GCC ou Intel et comparez les performances.Vous <strong>de</strong>vez partir <strong>de</strong> la version séquentielle et l’optimiser via <strong>OpenMP</strong>.4 Parallélisation d’un solveur en damierDans LABS/P4A/Red-Black se trouve un solveur en damier utilisé ici pour résoudre ∇ 2 s = 0sur <strong>de</strong>s données fournies par une image en niveau <strong>de</strong> gris.Mesurez l’efficacité du parallélisme et optimisez...On essayera aussi d’optimiser le débit mémoire (important lorsqu’on utilise <strong>de</strong>s grossesmatrices qui ne logent pas dans le cache).5 Parallélisation <strong>OpenMP</strong> avec anti-dépendanceOn va se concentrer sur le programme Anti_<strong>de</strong>pendance/anti_<strong>de</strong>p.cCompilation du programme : par la suite on compilera soit avec <strong>OpenMP</strong> soit sans<strong>OpenMP</strong> pour comparer les résultats <strong>de</strong>s différences version. Seule la version séquentiellefaisant foi pour les résultats. ☺Utiliser VTune pour voir où on passe le plus <strong>de</strong> temps dans le programme. Où faut-iltravailler ? Est-ce logique ?Commencer par instrumenter le programme pour mesurer le temps (utiliser les fonctionsad-hoc d’<strong>OpenMP</strong>).On peut utiliser Thread Checker pour voir les problèmes éventuels dans la suite.Paralléliser la boucle d’initialisation du tableau et vérifier les résultats.Paralléliser la boucle <strong>de</strong> somme <strong>de</strong> vérification et vérifier.Paralléliser du plus <strong>de</strong> manières différentes possibles le nid <strong>de</strong> boucle <strong>de</strong> lissage.Revoir le co<strong>de</strong> en minimisant les barrières et les démarrages/arrêts <strong>de</strong> threads.6 Tester variables <strong>de</strong> contrôle interneÉcrire plusieurs petits programmes, avec du parallèlisme imbriqué ou pas, qui vont afficherles Internal Control Variables (ICV) tels que nombre et numéro <strong>de</strong> thread, niveau d’impricationdu parallélisme...2

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!