rsnt_translations
56,430
edits
(Created page with "Comme <tt>parallel loop</tt> est une directive ''prescriptive'', le compilateur est forcé d'exécuter la boucle en parallèle. Ceci signifie que la clause <tt>independent</tt...") |
(Created page with "Pour utiliser cette directive dans notre exemple du produit matrice-vecteur, nous avons besoin des clauses <tt>private</tt> et <tt>reduction</tt> pour gérer le flux des donn...") |
||
Line 279: | Line 279: | ||
Comme <tt>parallel loop</tt> est une directive ''prescriptive'', le compilateur est forcé d'exécuter la boucle en parallèle. Ceci signifie que la clause <tt>independent</tt> mentionnée plus haut est implicite à l'intérieur d'une zone parallèle. | Comme <tt>parallel loop</tt> est une directive ''prescriptive'', le compilateur est forcé d'exécuter la boucle en parallèle. Ceci signifie que la clause <tt>independent</tt> mentionnée plus haut est implicite à l'intérieur d'une zone parallèle. | ||
Pour utiliser cette directive dans notre exemple du produit matrice-vecteur, nous avons besoin des clauses <tt>private</tt> et <tt>reduction</tt> pour gérer le flux des données dans la zone parallèle. | |||
* | * Avec la clause <tt>private</tt>, une copie de la variable est faite pour chaque itération de la boucle; la valeur de la variable est ainsi indépendante des autres itérations. | ||
* | * Avec la clause <tt>reduction</tt> , les valeurs de la variable dans chaque itération est ''réduite'' à une valeur unique. La clause s'utilise entre autres avec les opérations addition (+), multiplication (*), maximum (max) et minimum (min). | ||
Ces clauses ne sont pas nécessaires avec la directive <tt>kernels</tt> puisque celle-ci fait le travail pour vous. | |||
Going back to the matrix-vector multiplication example, the corresponding code with the <tt>parallel loop</tt> directive would look like this: | Going back to the matrix-vector multiplication example, the corresponding code with the <tt>parallel loop</tt> directive would look like this: |