Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

Documents pareils
Introduction à la Programmation Parallèle: MPI

Métriques de performance pour les algorithmes et programmes parallèles

Compilation (INF 564)

Cours de Programmation Impérative: Zones de mémoires et pointeurs

C++ COURS N 2 : CLASSES, DONNÉES ET FONCTIONS MEMBRES Classes et objets en C++ Membres d'une classe Spécification d'une classe Codage du comportement

Java Licence Professionnelle CISII,

INF6500 : Structures des ordinateurs. Sylvain Martel - INF6500 1

Traitement de données

Conventions d écriture et outils de mise au point

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

<Insert Picture Here> Solaris pour la base de donnés Oracle

Machines virtuelles. Brique ASC. Samuel Tardieu Samuel Tardieu (ENST) Machines virtuelles 1 / 40

DE L ALGORITHME AU PROGRAMME INTRO AU LANGAGE C 51

Brefs rappels sur la pile et le tas (Stack. / Heap) et les pointeurs

Remote Method Invocation Les classes implémentant Serializable

Structure fonctionnelle d un SGBD

Gestion mémoire et Représentation intermédiaire

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

La JVM. La machine virtuelle Java. La JVM. La JVM

Chapitre I Notions de base et outils de travail

GPA770 Microélectronique appliquée Exercices série A

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

TP1. Outils Java Eléments de correction

RN2-Programmation Orientée Objet - JAVA CH 1 Introduction à la POO et Java

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Analyse de sécurité de logiciels système par typage statique

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

Modules du DUT Informatique proposés pour des DCCE en 2014/2015

Introduction aux Systèmes et aux Réseaux

1 Architecture du cœur ARM Cortex M3. Le cœur ARM Cortex M3 sera présenté en classe à partir des éléments suivants :

Évaluation et implémentation des langages

Mise en œuvre des serveurs d application

TP1 : Initiation à Java et Eclipse

Traduction des Langages : Le Compilateur Micro Java

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Derrière toi Une machine virtuelle!

Programmation Objet Java Correction

Formation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux

ACTIVITÉ DE PROGRAMMATION

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

4. SERVICES WEB REST 46

DHCP et NAT. Cyril Rabat Master 2 ASR - Info Architecture des réseaux d entreprise

Une bibliothèque de templates pour CUDA

Programmation d Applications Concurrentes et Distribuées (INF431)

Introduction aux systèmes temps réel. Iulian Ober IRIT

Cours A7 : Temps Réel

Programmation système I Les entrées/sorties

Chapitre 1 : La gestion dynamique de la mémoire

Introduction au langage C

UE Programmation Impérative Licence 2ème Année

Le Network File System de Sun (NFS)

Programmation parallèle et distribuée

Génie Logiciel avec Ada. 4 février 2013

Cours d Algorithmique et de Langage C v 3.0

Programmation assembleur : aperçu

Gestion hybride de la mémoire dynamique dans les systèmes Java temps-réel


Cours Programmation Système

Cours d initiation à la programmation en C++ Johann Cuenin

Windows Server Chapitre 1: Découvrir Windows Server 2008

JAVA TD0. Prise en main du langage Environnement de base JAVA 1

Sauvegarde collaborative entre pairs Ludovic Courtès LAAS-CNRS

Chapitre 2. Classes et objets

Network musical jammin

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

Conception de circuits numériques et architecture des ordinateurs

Conception des systèmes répartis

Rappels d architecture

Manipulation 4 : Application de «Change».

Livre blanc Haute disponibilité sous Linux

Connected to the FP World

La technologie Java Card TM

IRL : Simulation distribuée pour les systèmes embarqués

Processus! programme. DIMA, Systèmes Centralisés (Ph. Mauran) " Processus = suite d'actions = suite d'états obtenus = trace

Cours 1: Java et les objets

IFT2255 : Génie logiciel

Java - la plateforme

TD3: tableaux avancées, première classe et chaînes

Prise en compte des ressources dans les composants logiciels parallèles

Partie 7 : Gestion de la mémoire

Gestion d identités PSL Exploitation IdP Authentic

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

Machines virtuelles Cours 1 : Introduction

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Licence Bio Informatique Année Premiers pas. Exercice 1 Hello World parce qu il faut bien commencer par quelque chose...

Remote Method Invocation (RMI)

Un ordonnanceur stupide

Initiation. àl algorithmique et à la programmation. en C

Bien architecturer une application REST

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Web Tier : déploiement de servlets

Initiation à JAVA et à la programmation objet.

I. Introduction aux fonctions : les fonctions standards

Plan global Outils de développement et compilation. Plan. Objectifs des outils présentés. IDE, GCC/Clang, ASAN, perf, valgrind, GDB.

DNS ( DOMAIN NAME SYSTEM)

Une introduction à Java

Les structures de données. Rajae El Ouazzani

Devenez un véritable développeur web en 3 mois!

Transcription:

EARTH et Threaded-C: Éléments clés du manuel de références de Threaded-C Bref historique de EARTH et Threaded-C Ancêtres de l architecture EARTH: Slide 1 Machine à flux de données statique de J.B. Dennis (le père du dataflow, MIT, 1975) = pas de procédures récursives mais software pipelining Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données Multi-Threaded Architecture de G.R. Gao et al. (McGill, 1994) = Processeur ordinaire + Unité indépendante de synchronisation Architecture EARTH en 1995 (University of Delaware) = Efficient Architecture for Running THreads Initialement, deux langages pour programmer la machine EARTH: 1. Threaded-C langage machine langage cible pour des compilateurs, pas pour des programmeurs 2. EARTH-C = langage parallèle de plus haut niveau: boucles forall, procédures parallèles, mémoire partagée, etc. Faiblesses de EARTH-C: fossé sémantique important tâche trop complexe pour le compilateur (dépendances entre pointeurs) Threaded-C devient le langage de développement Slide 2 Évolution de Threaded-C: Threaded-C 1.0 (1995): Langage de base avec slots et threads numériques seulement langage machine Threaded-C 1.1 (1998): Slots et threads symboliques langage d assemblage Threaded-C 2.0 (2000): uniformisation des noms, déclaration plus simple des slots, surcharge des primitives, primitives pour exclusion mutuelle

3.1 L architecture EARTH EU = Execution Unit SU = Synchronization Unit Ready queue = Fibres prêtes à s exécuter Event queue = Requêtes de synchronisation Slide 3 local memory cache PE EU ready queue SU event queue PE. Interconnection Network PE Fibre = séquence d instructions (d une même activation de fonction) 3.2 Fibres Une fibre est séquence d instructions exécutée selon la sémantique ordinaire du langage C Une fibre est associée à une adresse dans le code du programme (FP + IP = Frame Pointer + Instruction Pointer) Slide 4 Une fibre est activée dans un style dataflow: lorsqu une fibre a reçu suffisamment de signaux, son exécution peut être amorcée Une fibre est exécutée de façon non-préemptive et non-bloquante: lorsqu une fibre amorce son exécution (EU), elle la poursuit jusqu à la fin Conduit à un style de programmation split-phase avec des petites fibres: une fibre qui désire effectuer une opération avec un long temps de latence fait la demande... puis la réponse est traitée par une autre fibre

3.2.1 Slots de synchronisation (sync slots) Une sync slot sert à recevoir des signaux de synchronisation Slide 5 Une sync slot est caractérisée par 3 attributs: 1. Valeur courante = nombre de signaux requis avant que la slot ne devienne 0 et que la fibre associée ne soit activée 2. Compte de ré-initialisation (reset count) = valeur à utiliser comme nouvelle valeur courante lorsque le compte tombe à 0 3. Fibre associée = la fibre à activer lorsque le compte devient 0 À chaque fois qu un signal est reçu par une sync slot, sa valeur courante est diminuée de 1 3.2.2 Ordre d exécution des fibres Seule contrainte du modèle EARTH: Une fibre devient prête à s exécuter aussitôt que la valeur courante de la sync slot qui la contrôle tombe à 0 modèle dataflow = les fibres s envoient des signaux, par l intermédiaire de sync slots, pour indiquer que les données requises sont disponibles Slide 6 Mise en oeuvre typique du pool de fibres = queue FIFO les fibres prêtes à s exécuter sont mises dans une file d attente Mise en oeuvre sur machine SMP: Plusieurs fibres peuvent, sur un même processeur, être en train de s exécuter en même temps

3.3 Les fonctions (procédures) threaded Une fibre s exécute toujours dans le contexte d une activation de fonction dite fonction threaded Fonction threaded = fonction qui doit être exécutée en parallèle et qui contient 1 ou plusieurs fibres Les fibres d une même activation de fonction peuvent communiquer entre elles par l intermédiaire de variables partagées = paramètres et variables locales de la fonction, variables globales Slide 7 Remarque importante: En Threaded-C, lorsqu on parle d une fonction threaded, il s agit plus précisément de procédure threaded: une fonction threaded ne peut pas retourner de résultat comme une fonction ordinaire mais doit plutôt utiliser des paramètres résultats (par référence) Activation parallèle des fonctions les fonctions ne se terminent pas nécessairement dans l ordre dans lequel elles sont appelées les blocs d activation ne peuvent pas être conservés sur une pile synchronization slots Slide 8 sync cnt reset cnt fiber ptr local variables stack frames tree of frames Activation frame partagé par les fibres d une activation doivent s exécuter sur le même processeur activation frame toutes les fibres d une même fonction

4 Introduction à Threaded-C Exemples (réfèrent au manuel de référence du langage Threaded-C): Hello world! (pp. 11 12), recfib (p. 17), nqueens (pp. 21 22) Synchronisation locale vs. non-locale (à distance = remote) void XXX SYNC( SLOT ID ); /* Slot locale. */ void XXX SYNC( SPTR ); /* Slot non-locale. */ Slide 9 Quelques primitives EARTH: SPTR TO SPTR( SLOT ID type SPTR = Slot PoinTeR ) ): Convertit une slot locale en un pointeur non-local (de SPAWN( FIBER ID ): Cédule une fibre directement, sans passer par sa slot de synchronisation TOKEN( foo, arg 1,..., arg n );: Crée une activation de la fonction foo, avec les arguments indiqués, sur un processeur choisi par le système (plus précisément, choisi par le load balancer) Transferts de données Modèle de mémoire sous-jacent à la machine EARTH = mémoire distribuée impossible d accéder directement à la mémoire d un autre processeur Style C de manipulations de données = Utilisation de pointeurs Slide 10 Accès mémoire non-local int *GLOBAL pt; Utilisation de pointeurs spéciaux /* pt refere a une memoire non-locale, dans un autre processeur. */ OWNER OF(pt) = Numéro du processeur où est située cette addresse TO LOCAL(pt) = Référence locale d un pointeur (valable seulement si on est dans le processeur propriétaire) TO GLOBAL(pt) = Convertit un pointeur local en adresse globale

Opérations de transfert de donneés Écriture d une donnée: PUT SYNC( T datum, T *GLOBAL dest, SLOT ID s ); PUT SYNC( T datum, T *GLOBAL dest, SPTR s ); Lecture (split-phase) d une donnée: Slide 11 GET SYNC( T *GLOBAL src, T *GLOBAL dest, SLOT ID s ); GET SYNC( T *GLOBAL src, T *GLOBAL dest, SPTR s ); Note: PUT et GET s utilisent pour des types T pouvant être passés par valeur Transfert des blocs de données, e.g., tableaux: BLKMOV_SYNC(void *GLOBAL src, void *GLOBAL dest, long length, SLOT_ID s); BLKMOV_SYNC(void *GLOBAL src, void *GLOBAL dest, long length, SPTR s); Façons typiques pour des fibres de communiquer entre elles: Fibres dans un même activation de fonction: par l intermédiaire des variables locales à la fonction (variables partagées) Slide 12 Fibres dans des activations différentes sur un même processeur: par l intermédiaire de variables de portée globale (déclarées à l extérieur d une déclaration de fonction) ou par l intermédiaire du tas local (heap, i.e., allocation dynamique avec pointeurs) Fibres dans des activations différentes sur des processeurs différents: à l aide d opérations de transferts de données (PU/TGET SYNC) portant sur des variables privées (à la fonction) ou des objets de leur tas