Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cette annexe récapitule les principales modifications apportées à la spécification OpenMP C/C++ en passant de la version 1.0 à la version 2.0. Les éléments suivants sont de nouvelles fonctionnalités ajoutées à la spécification :
Les virgules sont autorisées dans les directives OpenMP.
Ajout de la
num_threadsclause. Cette clause permet à un utilisateur de demander un nombre spécifique de threads pour une construction parallèle.La directive threadprivate a été étendue pour accepter les variables d’étendue de bloc statiques.
Les tableaux de longueur variable C99 sont des types complets et peuvent être spécifiés n’importe où les types complets sont autorisés, tels que dans les listes de
private,firstprivateetlastprivate, et les clauses (voir section 2.7.2).Une variable privée dans une région parallèle peut être marquée à nouveau privée dans une directive imbriquée.
La
copyprivateclause a été ajoutée. Il fournit un mécanisme permettant d’utiliser une variable privée pour diffuser une valeur d’un membre d’une équipe vers les autres membres. Il s’agit d’une alternative à l’utilisation d’une variable partagée pour la valeur, lorsque le fait de fournir une telle variable partagée serait difficile (par exemple, dans une récursion où chaque niveau nécessite une variable différente). La clause copyprivate ne peut apparaître que sur lasingledirective.Ajout de routines de minutage omp_get_wtick et omp_get_wtime similaires aux routines MPI. Ces fonctions sont nécessaires pour effectuer des minutages d’horloge murale.
Une annexe avec une liste de comportements définis par l’implémentation dans OpenMP C/C++ a été ajoutée. Une implémentation est nécessaire pour définir et documenter son comportement dans ces cas.
Les modifications suivantes permettent de clarifier ou de corriger les fonctionnalités de la spécification précédente de l’API OpenMP pour C/C++ :
Le comportement de omp_set_nested et omp_set_dynamic lorsque
omp_in_parallelretourne une valeur différente de zéro n’est pas défini.Clarification de l'imbrication de directives lors de l'utilisation de parallèles imbriqués.
Les fonctions d’initialisation et de destruction de verrou peuvent être appelées dans une région parallèle.
De nouveaux exemples ont été ajoutés à l’annexe A.