38,760
edits
No edit summary |
(Updating to match new version of source page) Tags: Mobile edit Mobile web edit |
||
Line 160: | Line 160: | ||
==== Construire avec OpenACC ==== | ==== Construire avec OpenACC ==== | ||
<div class="mw-translate-fuzzy"> | |||
Les compilateurs NVidia utilisent l'option <code>-ta</code> (''target accelerator'') pour permettre la compilation pour un accélérateur. Nous utilisons la sous-option <code>tesla:managed</code> pour indiquer au compilateur que nous voulons compiler pour des GPU Tesla et que nous voulons utiliser la [https://developer.nvidia.com/blog/unified-memory-cuda-beginners/ mémoire gérée] pour simplifier le transfert de données en provenance et à destination du périphérique; nous n'utiliserons pas cette option dans un prochain exemple. Nous utilisons aussi l'option <code>-fast</code> pour l'optimisation. | Les compilateurs NVidia utilisent l'option <code>-ta</code> (''target accelerator'') pour permettre la compilation pour un accélérateur. Nous utilisons la sous-option <code>tesla:managed</code> pour indiquer au compilateur que nous voulons compiler pour des GPU Tesla et que nous voulons utiliser la [https://developer.nvidia.com/blog/unified-memory-cuda-beginners/ mémoire gérée] pour simplifier le transfert de données en provenance et à destination du périphérique; nous n'utiliserons pas cette option dans un prochain exemple. Nous utilisons aussi l'option <code>-fast</code> pour l'optimisation. | ||
</div> | |||
{{Command | {{Command | ||
|nvc++ -fast -Minfo{{=}}accel - | |nvc++ -fast -Minfo{{=}}accel -acc -gpu=managed main.cpp -o challenge | ||
|result= | |result= | ||
... | ... | ||
Line 225: | Line 227: | ||
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 changements que nous venons de faire, le compilateur émet le message suivant : | 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 changements que nous venons de faire, le compilateur émet le message suivant : | ||
{{Command | {{Command | ||
|nvc++ -fast -Minfo{{=}}accel - | |nvc++ -fast -Minfo{{=}}accel -acc -gpu{{=}}managed main.cpp -o challenge | ||
|result= | |result= | ||
matvec(const matrix &, const vector &, const vector &): | matvec(const matrix &, const vector &, const vector &): | ||
Line 346: | Line 348: | ||
La compilation produit le message suivant : | La compilation produit le message suivant : | ||
{{Command | {{Command | ||
| | |nvc++ -fast -Minfo{{=}}accel -acc -gpu{{=}}managed main.cpp -o challenge | ||
|result= | |result= | ||
matvec(const matrix &, const vector &, const vector &): | matvec(const matrix &, const vector &, const vector &): | ||
Line 359: | Line 361: | ||
34, Loop is parallelizable | 34, Loop is parallelizable | ||
}} | }} | ||
==Différences entre <tt>parallel loop</tt> et <tt>kernels</tt>== | ==Différences entre <tt>parallel loop</tt> et <tt>kernels</tt>== | ||
{| class="wikitable" width="100%" | {| class="wikitable" width="100%" | ||
Line 376: | Line 379: | ||
Les deux approches sont valides et leur performance est comparable. | Les deux approches sont valides et leur performance est comparable. | ||
<div class="mw-translate-fuzzy"> | |||
{{Challenge | {{Challenge | ||
|title=Exercice : utiliser <tt>kernels</tt> ou <tt>parallel loop</tt> | |title=Exercice : utiliser <tt>kernels</tt> ou <tt>parallel loop</tt> | ||
Line 383: | Line 387: | ||
# Modifiez le Makefile en ajoutant <tt>-ta{{=}}tesla:managed</tt> et <tt>-Minfo{{=}}accel</tt> aux indicateurs pour le compilateur. | # Modifiez le Makefile en ajoutant <tt>-ta{{=}}tesla:managed</tt> et <tt>-Minfo{{=}}accel</tt> aux indicateurs pour le compilateur. | ||
}} | }} | ||
</div> | |||
[[OpenACC Tutorial - Profiling/fr|<- Page précédente, Profileurs]] | [[OpenACC Tutorial/fr|^- Retour au début du tutoriel]] | [[OpenACC Tutorial - Data movement/fr|Page suivante, Mouvement des données ->]] | [[OpenACC Tutorial - Profiling/fr|<- Page précédente, Profileurs]] | [[OpenACC Tutorial/fr|^- Retour au début du tutoriel]] | [[OpenACC Tutorial - Data movement/fr|Page suivante, Mouvement des données ->]] |