F. Nouvelles fonctionnalités et clarifications de la version 2.0
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_threads
clause. 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 , et les clauses (voir la section 2.7.2).
lastprivate
firstprivate
private
Une variable privée dans une région parallèle peut être marquée à nouveau privée dans une directive imbriquée.
La
copyprivate
clause 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 lorsqu’une telle variable partagée est fournie (par exemple, dans une récursivité nécessitant une variable différente à chaque niveau). La clause copyprivate ne peut apparaître que sur lasingle
directive.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++ :
Nous avons précisé que le comportement de omp_set_nested et de omp_set_dynamic lorsque
omp_in_parallel
le retour n’est pas défini n’est pas défini.Imbrication de directive précise lorsque le parallèle imbriqué est utilisé.
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.