Page history
11 May 2017
Created page with "Cliquez pour agrandir."
+6
Created page with "Voici le résultat pour la version OpenACC : {{Command |./challenge |result=Rows: 8120601, nnz: 218535025 Iteration: 0, Tolerance: 4.0067e+08 Iteration: 10, Tolerance: 1..."
Created page with "== Performance du code porté == Maintenant que le code est porté sur le GPU, nous pouvons analyser sa performance et vérifier si les résultats sont corrects. L'exécution..."
−50
Created page with "Remarquez que les autres pointeurs n'ont pas besoin d'être restreints puisque le compilateur ne les rapporte pas comme causant des problèmes. En recompilant avec les changem..."
+45
Created page with "par le code"
−2
Created page with "=== Produit matrice-vecteur === Revenons au cas du produit matrice-vecteur présenté plus haut. Notre recommandation pour éviter les faux alias est de définir les pointeur..."
+14
Created page with "=== Boucle avec clause <tt>independent</tt> === Une autre façon de s'assurer que le compilateur traite les boucles de manière indépendante est de le spécifier expliciteme..."
+28
Created page with "En déclarant un pointeur comme étant ''restraint'', on s'assure qu'uniquement ce pointeur ou une valeur dérivée (comme <tt>ptr +1</tt>) pourra accéder à l'objet auquel..."
+27
Created page with "Utilisation du mot-clé <tt>restrict</tt>"
Created page with "===Mot-clé <tt>restrict</tt> === Une des manières de dire au compilateur que les pointeurs '''ne sont pas''' des alias est d'utiliser le mot-clé <tt>restrict</tt>, intro..."
+42
Created page with "== Réparer les fausses dépendances de boucles == Même lorsque le programmeur sait qu'une boucle peut être parallélisée, il arrive que le compilateur ne le remarque pas...."
+70
Created page with "Dans ce tutoriel, nous utilisons la version 16.3 des [http://www.pgroup.com/support/download_pgi2016.php?view=current compilateurs du Portland Group] qui sont gratuits pour d..."
−9
Created page with "En date de mai 2016, relativement peu de compilateurs offraient les fonctionnalités d'OpenACC. Les plus avancés en ce sens sont les compilateurs du [http://www.pgroup.com/ P..."
−74
no edit summary
+136
Created page with "Choix du compilateur"
+4
Created page with "==== Développer avec OpenACC ==== Dans ce tutoriel, nous travaillons avec la version 16.3 des [http://www.pgroup.com/support/download_pgi2016.php?view=current compilateurs d..."
+83
Created page with "Le premier changement à faire au code est d'ajouter la directive <tt>kernels</tt> pour essayer de le faire exécuter sur le GPU. Pour l'instant, nous n'avons pas à nous pr..."
+50
Created page with "=== Exemple : porter un produit matrice-vecteur === Pour notre exemple, nous utilisons du code provenant du [https://github.com/calculquebec/cq-formation-openacc répertoire..."
+6
Created page with "Pour leur part, plusieurs directives OpenACC sont de nature ''descriptive''. Ici, le compilateur est libre de compiler le code de la façon qu'il juge la meilleure, selon l'ar..."
−12
Created page with "Les utilisateurs d'[https://docs.computecanada.ca/wiki/OpenMP/fr OpenMP] retrouveront dans OpenACC le principe de directives. Il existe cependant d'importantes différences en..."
+31
Created page with "Description ou prescription"
Created page with "Il est rare que du code soit aussi simple et il faut se baser sur la rétroaction du compilateur pour trouver les portions qu'il a négligé de paralléliser."
−10
Created page with "Voici un exemple de cette directive :"
−10
Created page with "== La directive <tt>kernels</tt> == Cette directive est dite ''descriptive''. Le programmeur l'utilise pour signifier au compilateur les portions qui selon lui peuvent être..."
+42
Created page with "Chaque cœur de calcul traite une valeur de <tt>i</tt>."
+2
Created page with "Calcule de 0-N, dans l'ordre"
+4
Created page with "BOUCLE"
+2
Created page with "=== Boucles et kernels === Quand le compilateur lit la directive OpenACC <tt>kernels</tt>, il analyse le code pour identifier les sections pouvant être parallélisées. Ceci..."
−11
Created page with "Remarquez que le bloc OpenACC est délimité en C/C++ par des accolades; en Fortran, le commentaire est placé une fois au début et une dernière fois à la fin, avec l'ajout..."
+36
Created page with "Dans les deux cas, le compilateur identifie deux noyaux (''kernels''). En C/C++, les deux noyaux sont à l'intérieur de chaque boucle. En Fortran, les noyaux sont à l'inté..."
−21
Created page with "Le code de notre exemple contient deux boucles : la première initialise deux vecteurs et la seconde effectue une opération de [https://fr.wikipedia.org/wiki/Basic_Line..."
−21
Created page with "==Directives OpenACC== <!--T:4--> Les directives OpenAcc sont semblables aux directives OpenMP. En C/C++, ce sont des <tt>pragmas</tt> et en Fortran, des commentaires. L'empl..."
+82
Created page with "== Transfert vers un processeur graphique (GPU) == Avant de porter du code sur un GPU, il faut savoir qu'ils ne partagent pas la même mémoire que le processeur (CPU); autr..."
+18
Created page with "* comprendre le processus de transfert (''offloading'') * comprendre ce qu'est une directive OpenACC * connaitre la différence entre les directives <tt>loop</tt> et <tt>kern..."
−4
Updating to match new version of source page
−20
10 May 2017
Updating to match new version of source page
−1
Updating to match new version of source page
−1
Updating to match new version of source page
−5
Updating to match new version of source page
+1
Updating to match new version of source page
+6