programmation d'études multi-curs SMP groupe hybride parallèle

Liu Chao, Zhu Yongzhi

(Qufu Normal University, École des sciences de l'information et de l'ingénierie, Shandong Rizhao 276826)

: À l'heure actuelle, la plupart des systèmes de conception de matériel informatique haute performance en utilisant CPU hiérarchique, à noyaux multiples comportant une pluralité de noeuds interconnectés par un réseau de stockage partagé à grande vitesse. programmation parallèle hybride distribué mémoire et la mémoire partagée entre les noeuds du noeud ont été fusionnés. Les caractéristiques de l'architecture de cluster de SMP multi-core, le modèle de programmation pour une étude plus approfondie de l'inter-MPI / OpenMP, SMP et noeuds multi-coeurs et les mécanismes de parallélisme à plusieurs niveaux au sein d'un noeud hiérarchique mixte applicable aux clusters de SMP multi-coeurs en parallèle. Messagerie utilisation complète du modèle de programmation de mémoire partagée et le modèle de programmation de leurs propres avantages, la parallélisation multigrains a étudié basé sur cette méthode de programmation.

: Multicore groupe SMP, la programmation mixte, MPI / OpenMP

: TP301 Code du document: ADOI: 10,19358 / j.issn.1674-7720.2017.04.006

Format de référence : Les techniques de programmation étude [J] Chao, Zhu Yongzhi multi-curs parallèle groupe SMP mélangé à ses applications, 2017,36 (4): 18-21.

0 introduction

Avec le développement de la technologie CMP et la promotion de l'architecture de cluster SMP, l'intégration des deux SMP et MPP caractéristiques de multi-curs SMP groupe deviennent nouvelle architecture multicoeur et la tendance du développement traditionnel de calcul haute performance (HPC) est largement utilisé dans le domaine. Cette architecture distribuée avec les magasins de la mémoire partagée combinaison d'avantages MPP hérités de la performance et de l'évolutivité, le SMP peut être améliorée de désavantage évolutivité pauvres, mais a aussi l'avantage de groupes de communication efficaces [1]. Un tel échange de messages entre les noeuds et les noeuds en utilisant le modèle partagé de programmation parallèle hybride à plusieurs étages mémoire pour mieux répondre aux caractéristiques du cluster SMP multi-core.

La figure 1 l'architecture SMP grappe multinucléaire La figure 1 montre l'architecture d'un cluster de SMP à noyaux multiples ayant des noeuds N (chaque noeud pour les deux CPU quatre-core, les cercles représentent le coeur de processeur) de. Par interconnexion BUS / CROSSBAR entre les processeurs et la région de mémoire partagée et des dispositifs E / S. Multicore SMP nud de réseau de communication à grande vitesse (par exemple, Myrinet, Ethernet, etc.), l'utilisation de la transmission de messages entre les noeuds communiquent [2].

modèles de programmation parallèle sur une plate-forme de mélange

À proprement parler, un modèle de programmation parallèle est une architecture informatique abstraite [3], il ne dépend pas de tout type de machine. Mais différentes combinaisons de CPU, mis en place un système parallèle va générer un certain nombre de modèles possibles de programmation parallèle. La figure 2 montre la classification de l'internet du modèle de programmation parallèle mixte.

OpenMP 1.1 modèle de programmation de mémoire partagée

Des normes communes pour la programmation OpenMP mémoire partagée, il est d'écrire des programmes parallèles sur l'API conçu multiprocesseur, dont le but est à la mémoire de programmation parallèle facilement partagée. Note par l'ajout de directives (directive du compilateur) dans le code source, l'instruction de directive du compilateur du programme pour indiquer la ligne #pragma concurrency. Dans OpenMP, fils parallèles a un très structuré, le mode d'exécution parallèle est souvent utilisé ForkJoin [4]: Tout d'abord, le fil principal d'une série en cours d'exécution du programme, en parallèle le calcul si on le souhaite, dérivée à partir de plusieurs fils conducteurs sont exécutés en parallèle avec le fil principal tâche. Après la fin de l'exécution ou est dérivée de l'interruption de synchronisation du fil, le flux de retour de commande vers le fil conducteur, comme représenté sur la Fig.

OpenMP est caractérisé par: la communication implicite; haut niveau d'abstraction; soutien supplémentaire parallèle, une grande évolutivité, la portabilité est bon support de parallélisme à grain grossier et à grain fin; primitives de synchronisation orientées vers l'application, programme parallèle facilement modifiée, non seulement en système de stockage partagé, peut être réalisé sur une structure de mémoire non partagée, mais des rendements différents.

1.2 Message MPI passage des modèles de programmation

message commun passe la programmation MPI standard (Message Passing Interface), il est un langage de programmation, mais un message de liaison dans le langage Fortran ou interface API de langage C et d'une bibliothèque qui passe, son but est de servir la communication inter-processus. Pour un système de stockage distribué, MPI est un modèle de programmation naturel, et de réaliser le modèle SPMD parallèle, MasterWoker souvent utilisées modes de fonctionnement: Procédé Maître travailleur alloué pour traiter les données; processus de travail reçoit toutes les données correspondantes; chaque processus de calcul de données travailleur; processus de travail envoie les résultats du processus principal [5]. Pour envoyer de nouvelles données après chaque itération de l'application sont répéter cette logique, en fonction de la nature du problème, le processus maître peut avoir à attendre les résultats de tous les processus de travail montré à la figure 4.

MPI caractéristiques sont les suivantes: communication explicite; rendement élevé, une bonne transplantation, particulièrement adapté pour parallèle à grains grossiers; pluralité de fonctions de bibliothèque pour optimiser la communication de groupe; en calculant la superposition / communication, pour améliorer les performances en parallèle. Il peut fonctionner sur un système de stockage distribué avec le système de stockage partagé, les utilisateurs contrôlent la synchronisation de partitionnement des données et des processus.

Les principales caractéristiques de cette OpenMP et MPI est représenté dans le tableau 1.

modèle de programmation hybride 1.3OpenMP / MPI

Liant les caractéristiques structurelles de polynucléaires SMP en cluster stockage hiérarchique, tirer le meilleur parti des deux modèles de programmation: l'efficacité de la programmation et l'évolutivité du stockage distribué d'un modèle de stockage partagé. L'idée de base est la suivante: (1) L'échelle de la division de MPI de problèmes, la communication ne se forme pas sous-tâches denses, (2) chaque sous-tâche (par exemple, un MPI de processus) affectée à un des noeuds SMP multiconducteur, en se fondant sur le passage de messages entre les noeuds communiquer, (3) sur chaque nud de présentation OpenMP orientation compilateur sous-tâche à nouveau divisé et attribué aux différents noeuds d'infrastructure traitement exécuté en parallèle par plusieurs threads, communiquer en utilisant le noeud de variable partagée, comme représenté sur la figure .

Modèle hybride de programmation MPI / OpenMP avantages:

(1) correspondent à la tendance du développement actuel du matériel - une multi-coeur et l'ordinateur à processeurs multiples;

(2) a deux niveaux parallèles clairs: gros grains (par MPI) et fine (pour le OpenMP);

(3) applications ou certaines fonctions du système peuvent limiter le nombre de processus, il peut fournir parallèle OpenMP incrémentale MPI (problèmes d'évolutivité);

(4) Des travaux d'applications dans le déséquilibre de charge de la couche de MPI, OpenMP en attribuant un nombre différent de fils de processus MPI pour résoudre ce problème;

(5) OpenMP évitant la communication supplémentaire surcharge provoquée par des noeuds de calcul MPI.

L'introduction de OpenMP signifie que le code existant MPI tout en introduisant certains des défauts de OpenMP:

Et les restrictions de synchronisation (1) l'attribution des tâches de contrôle;

(2) la création de fil et de synchronisation générées de tête;

(3) la dépendance envers les compilateurs et support de bibliothèque d'exécution OpenMP;

(4) les problèmes de stockage partagé;

(5) peut avoir un Interacting impact négatif sur la performance du programme d'exécution MPI et OpenMP.

La majeure partie du code est basé sur un modèle hybride hiérarchique, ce qui rend l'utilisation de la taille des particules de grande et moyenne dans la couche parallèle couche MPI et OpenMP utilisant le parallélisme à grain fin possible. À un niveau élevé, le programme est configuré pour afficher une pluralité de tâches MPI, la séquence de code d'instructions de guidage OpenMP qui est introduit, est ajouté à tirer avantage des caractéristiques de stockage partagé multi-threading. Ce modèle de programmation selon communiquer avec les recouvrements de calcul entre divisée en deux catégories:

(1) non informatique / chevauchement de communication. Tel est divisé en deux façons: uniquement appelé domaine parallèle MPI et à l'extérieur du thread principal. L'avantage est qu'aucun noeud SMP de messagerie. L'inconvénient est inefficace, à savoir, lorsque le principal communicant de fil, un autre fil se met en veille, ne permet pas d'atteindre le calcul de chevauchement / communication. MPI appelle le code d'application en dehors parallèle, mais la communication est complété par une pluralité de CPU MPI. MPI fil de communication bibliothèque MPI peut être effectuée automatiquement par les bibliothèques d'applications ou d'affichage en utilisant le thread-safe MPI. Le mode de réalisation schématique représenté sur la Fig.

(2) calculer / chevauchement de communication. Afin de calcul d'éviter au cours de filetage communication MPI OpenMP séparé du groupe de fils de ralenti ou d'un fil pour gérer plus de communication et de calcul en parallèle, il devrait être appelé à ce stade dans les fonctions MPI critiques, seul maître ou la région correspondante. Il existe deux méthodes: lorsque la communication effectuée par le fil principal (ou le numéro du fil), toutes les communications sont injectés dans le fil conducteur, le fil exécute toutes les autres tâches informatiques de transmission de données; Lorsque chaque fil a une demande de communication, la communication il sera injecté dans plusieurs threads. Calcul / recouvrement représenté sur la figure 7 est une vue schématique d'un programme.

2 la mise en uvre de programmation mixte hiérarchique

parallèle hybride de programmation pour résoudre les problèmes de la stratégie standard de base est, de ce point de vue, il y a une mémoire distribuée et la mémoire partagée programmation MPI OpenMP, qui constitue la base pour le développement de la stratégie de programmation mixte. L'utilisation de MPI existant ou OpenMP Code de construction d'applications parallèles hybrides, suit précisément que:

(1) modifié avec OpenMP MPI. C'est un simple mode de programmation hybride, seules les commandes d'orientation d'origine OpenMP compilés dans les segments de code de boucle extérieure. Sa performance est partie du cycle de calcul dépendant peut OpenMP solution parallèle (généralement parallélisme à grain fin). Cela facilite la communication d'application obligatoire, car elle réduit le nombre de processus MPI ont besoin de communiquer. Toutefois, si plus programme de cycle, les directives compilateur utilisé par un domaine de plus en plus, ou créer une tête de synchronisation de fil parallèle augmentera [6]. Par conséquent, lors de la diffusion du parallélisme de niveau, le temps global devrait être préféré dans un cycle de temps de calcul de plus grande proportion [7]. Ce qui suit est un mélange grains fins pseudo code de programme:

#include "mpi.h"

#include "omp.h"

......

// une informatique et de la communication MPI

#pragma omp Paralle num_threads (...)

#pragam OMP pour un usage privé (...)

pour (...)

{} // Calcul

MPI_Finalize;

(2) en utilisant la modification de MPI OpenMP. Cette méthode (parallélisme de gros grains) est différent des anciens dont on a besoin d'examiner comment chaque processus communique avec d'autres processus, il peut exiger une refonte complète du parallélisme. instructions d'orientation sont typiquement programme compilé dans la couche la plus externe, suivi des processus MPI OpenMP pour générer fil, le mode fil de SPMD généré dans le processus est similaire, à savoir la même exécution de code sur les différents segments de données. Et diffère en ce que chacun des processeurs à la mémoire de DGBS part multinucléées noeud SMP, sans pré-données est affecté à chaque processeur. L'avantage de cette méthode est l'utilisation de moins commandes d'orientation du compilateur OpenMP, en appelant la faible surcharge de communication. Cependant, OpenMP multi-thread analogue multi-processus à l'utilisation de MPI, en particulier lors de l'utilisation d'un modèle mixte parallélisme au niveau des multiples, la complexité de la programmation augmentera. Ce qui suit est une partie pseudo-mélange OpenMP code:

......

omp_set_num_threads (...)

privé (...) #pragma omp paralle

th_id = omp_get_thread_num;

th_size = omp_get_num_threads;

Calcul} {..//

La barrière de #pargma

maître #pargma omp / single

} {... // communication MPI

...... // communication MPI

......

expérience 3

Compte tenu des facteurs à la fois la performance et la facilité d'utilisation, nous utilisons un ensemble SMPD schéma similaire: le noeud en parallèle avec le parallélisme à grain fin OpenMP MPI entre les nuds à gros grains, à savoir, hybride OpenMP / programmation niveau MPI. Sélectionnez la multiplication de matrices de cas, comparer les différences de performance présenté la programmation mixte Nonhybirid en différentes tailles de la matrice et le nombre de curs d'exécution cas.

3.1 groupe HPC Aube TC5000

Este système de grappe de calcul TC5000 puissance globale de 5,7 teraflops, un A620rH en tant que noeud de gestion, six CB65 fournit des noeuds de calcul de stockage, un réseau de disques. Chaque nud a deux lames de calcul AMD Opteron61282 GHz processeur quad-core, un total de huit noyaux, l'ensemble du cluster avec 144 Go de mémoire.

Cluster Environnement Logiciel: SUSE Linux Enterprise Server 10SP système d'exploitation; environnement parallèle: la version MPI MPICH2, compilateur GCC4.2.4, les services de partage de fichiers NFS-; InfiniBand communications de gestion de réseaux informatiques parallèles à haute vitesse.

3.2 Résultats expérimentaux et analyse

6 cluster à l'aide des noeuds de calcul double quad-core exécutant le code MPI MPI / OpenMP test de comparaison de code. Lors de l'exécution d'un code mixte MPI / OpenMP, chaque noeud de calcul est associé un processus de MPI et huit fils (threads dans un noeud ne doit pas dépasser le nombre de processeurs physiques [7]). Il convient de noter que, dans le noyau du calcul de la multiplication de la matrice, en ce que deux boucles sont exécutées en parallèle. Si la boucle interne parallèle, chaque itération de l'opération externe de la boucle de programme sont exécutées ForkJoin threads, cela peut être plus élevé que le temps de tête pour parcourir l'intérieur du parallèle multi-fileté enregistré, si les boucles extérieures parallèles la technologie, l'utilisation d'une opération ForkJoin, et le programme permet une plus grande granularité. Taille matrice utilisée dans le programme sont de 500 × 000 × 1500,1000,1500 x 1500. Comme le montre le tableau 2, le tableau correspondant à chacune des valeurs de point de temps sont la moyenne de cinq essais. D'après le tableau 2,. La figure 8 temps d'exécution et le taux d'accélération de la taille de la matrice peut être clairement vu réaliser le mélange accélération des procédures de programme MPI / OpenMP et MPI lorsque différents noeuds. Comme le nombre de noeuds augmente, le rapport de mélange de l'accélération programmée sensiblement plus élevé que l'accélération pure de MPI. En raison de l'utilisation du CPU lors de l'exécution programme MPI, n'a pas d'utiliser pleinement les ressources du processeur, et plus mixte utilisation du processeur de programme, ce qui valide encore l'impact de l'utilisation OpenMP multi-thread performances du processeur multi-core du programme ( ces résultats ont été obtenus en l'absence de toute mesure d'optimisation en cas).

4 Conclusion

Cet article analyse les caractéristiques de l'architecture de cluster multi-core en parallèle SMP, la recherche applicable aux clusters SMP multi-core de modèle de programmation parallèle hybride, il y a un problème de déséquilibre de charge et l'évolutivité mauvaise pour les programmes MPI utilisant le programme de réforme OpenMP MPI, ce parallélisme à grain fin MPI + OpenMP est plus facile à mettre en uvre et peut améliorer les performances du programme. On ne sait pas que la programmation pour le cluster SMP multi-core est le plus mécanisme efficace, il y a beaucoup de problèmes à résoudre, ce qui nécessite une étude plus approfondie.

références

. [1] Sun Ninghui, Kai, Chen Mingyu HPP: l'architecture pour supporter de hautes performances et informatique utilitaire [J] Computer Journal, 2008,31 (9) :. 15031508.

[2]. RABENSEIFNER R, HAGER G, G. JOST hybride MPI / OpenMP programmation parallèle sur les clusters de nuds multicore SMP [C] Actes du 17 Euromicro Conférence internationale sur le parallèle, DISTRIBUÉ et Networkbased traitement 2009 :. 427 436.

... [3] A Kotobi, ABDUL HNAW, OTHMAN M, et al analyse des performances des hybrides OpenMP / MPI basé sur une architecture de cluster multicore [C] 2014 Conférence internationale sur, IEEE 2015 Computational Science et technologie (ICCST): 16.

[4] MATTSON T G, B SANDERS A, MASSINGILL B. Modèles de programmation parallèle [M]. AddisonWesley Professional 2005.

[5] A CASTELLANOS, MORENO A, SORRIBES J, et al modèle de performance pour les applications hybrides maître / travailleurs sur les clusters multi-curs [C] IEEE Conférence internationale sur le calcul haute performance et des communications, 2013: .. 210217.

[6] parallèle hybride Zhuyong Zhi multicoeur SMP mode programme de recherche et d'analyse de cluster [J] Electronic Technology, 2016 (2): 72-75.

[7] Yong, Chen GL, Chunsheng, autre étude du modèle de programmation [J] SMP groupe mixte Mini-Micro Systems, 2004, 25 (10): 1763-1767.

Toujours utiliser la navigation mobile? 2019 réseau de voiture, vous savez combien?
Précédent
Quel est l'amour immortel! grand-père, âgé de 96 ans est tombé amoureux de grand-mère de 85 ans, il a pris une décision
Prochain
Longue vie plus sûre, Hisense Hisense a officiellement lancé trois nouveaux produits tels que le diamant 4
Vibrato, adroite, stations B doivent être attentifs à « porter » inondation contrefaçon contenu
échantillon de recherche technologie de positionnement de codes à barres Ocean Photos
20 ans, vous savez à quel point les efforts qu'ils sont heureux de vous laisser faire?
Zixing: les exploitations familiales et mener les masses à devenir riche
Alipay à propos en ligne « face à la brosse payer »
Léchant temps d'écran | sens transparent de la beauté de la nouvelle Yuko de bois
11,11 Jingdong festival marque Intel a été une bonne journée, appeler le jeu pour les joueurs de recevoir le bien-être
La décennie suivante, qui est le roi de l'industrie de l'animation?
Cette semaine, le temps de jeu populaire: Kratos était Laïza partout où il va
l'amour de la Chine Bush: l'amour du cyclisme plus susceptibles de manger Roast Duck Pékin
HF allumage flare système