Exercices ICDPP Fr

4
Introduction à la Programmation Concurrente, Distribuée et Parallèle Ingénieur 3 ère année Denivaldo LOPES Liste d’exercices 1. Notions de Programmation Séquentielle et Parallèle a. Donnez une définition précise des thèmes suivants: · parallélisme physique · parallélisme logique b. Pour chacun des paradigmes suivants, proposez un exemple d'algorithme simple : · séquentiel · parallèle physique · parallèle logique Note: utilisez l'exemple du tutoriel comme base. c. Quelles sont les paramètres utilisés par la classification de Flynn? d. Définissez et expliquez les architectures suivantes en utilisant la classification de Flynn: · SISD (Single Instruction stream, Single Data stream) · SIMD (Single Instruction stream, Multiple Data stream) · MISD (Multiple Instruction stream, Single Data stream) · MIMD (Multiple Instruction stream, Multiple Data stream) e. Définissez et expliquez les concepts suivants: · La granularité · Le Facteur d'accélération ou Speedup · L'efficacité ou efficiency f. Un problème donné prend 1s quand il est exécuté sur une machine monoprocesseur, et prend 300 ms quand il est exécuté sur une machine parallèle réelle avec 4 processeurs. Répondez aux questions suivantes: · Quel est le facteur d'accélération et l'efficacité? · Pourquoi la machine parallèle réelle avec 4 processeurs est incapable de résoudre le problème en 250 ms (c'est à dire, Tp= Ts / n, où Tp est le temps pris par le programme parallèle, Ts est le temps pris par le programme séquentiel, et n est le nombre de processeurs de la machine parallèle)? g. Donnez les différentes classifications du parallélisme par rapport au modèle de programmation adopté pour paralléliser un algorithme. Utilisez le polynôme suivant pour expliquer les différents cas: p[i]=a+b*x^2+c*x^4+d*x^6+e*x^8+f*x^10 1

description

CISCO Documentation

Transcript of Exercices ICDPP Fr

Introduction la Programmation Parallle et Distribue

Introduction la Programmation Concurrente, Distribue et Parallle

Ingnieur 3 re anne

Denivaldo LOPES

Liste dexercices

1. Notions de Programmation Squentielle et Parallle

a. Donnez une dfinition prcise des thmes suivants:

paralllisme physique

paralllisme logique

b. Pour chacun des paradigmes suivants, proposez un exemple d'algorithme simple:

squentiel

parallle physique

parallle logique

Note: utilisez l'exemple du tutoriel comme base.

c. Quelles sont les paramtres utiliss par la classification de Flynn?

d. Dfinissez et expliquez les architectures suivantes en utilisant la classification de Flynn:

SISD (Single Instruction stream, Single Data stream)

SIMD (Single Instruction stream, Multiple Data stream)

MISD (Multiple Instruction stream, Single Data stream)

MIMD (Multiple Instruction stream, Multiple Data stream)

e. Dfinissez et expliquez les concepts suivants:

La granularit

Le Facteur d'acclration ou Speedup

L'efficacit ou efficiency

f. Un problme donn prend 1s quand il est excut sur une machine monoprocesseur, et prend 300 ms quand il est excut sur une machine parallle relle avec 4 processeurs. Rpondez aux questions suivantes:

Quel est le facteur d'acclration et l'efficacit?

Pourquoi la machine parallle relle avec 4 processeurs est incapable de rsoudre le problme en 250 ms (c'est dire, Tp= Ts / n, o Tp est le temps pris par le programme parallle, Ts est le temps pris par le programme squentiel, et n est le nombre de processeurs de la machine parallle)?

g. Donnez les diffrentes classifications du paralllisme par rapport au modle de programmation adopt pour parallliser un algorithme. Utilisez le polynme suivant pour expliquer les diffrents cas:

p[i]=a+b*x^2+c*x^4+d*x^6+e*x^8+f*x^10

h. Donnez des exemples d'utilisations de la programmation parallle (physique ou logique) et distribue.

2. Paradigmes de la programmation Concurrente: Synchronisation et Communication

a. Dfinissez les concepts de processus et de thread. Expliquez quelles sont les diffrences entre eux.

b. Quelles sont les ressources partages entre threads d'un mme processus et quelles sont les ressources prives chaque threads?

c. Quels sont les diffrents tats d'un processus? Expliquez chaque tat.

d. Donnez et expliquez les diffrents types de processus.

e. Qu'est-ce que c'est la multitche de premption et de non-premption? Linux est un systme d'exploitation qui utilise la premption ou non premption (Note: considre les processus d'utilisateurs et du noyau kernel)?

f. Dfinissez les notions d'action atomique, de section critique, de l'tat de course (race condition)? Expliquez chaque cas.

g. Quelles sont les proprits assurer dans une section critique?

h. Expliquez les notions suivantes:

Busy waiting

Barrier

Smaphore

Monitors

i. Expliquez les primitives send et receive . Quelles sont les modalits de synchronisation de ces primitives?

j. Donnez votre dfinition personnelle de RPC et Rendez-vous? Vous pouvez utiliser une figure pour expliquer.

3. La Programmation concurrente en Java: Threads

a. Expliquez les mthodes suivantes de la classe Thread: run, start, join, sleep et yield.

b. crivez un programme en Java qui utilise deux threads et un buffer limit et circulaire avec les comportements suivants (vous pouvez utiliser un smaphore ou un moniteur pour implmenter la section critique):

Un premier thread va lire au clavier un message et va lcrire dans un buffer limit et circulaire.

Le second thread va lire partir du buffer limit et circulaire son contenu. Aprs, le thread va l crire dans un fichier.

c. Utiliser une barrier et plusieurs threads pour implmenter un programme en Java qui ralise laddition de tous les lments d'un tableau A[m, n].

Suggestion:

La manire plus simple de rsoudre ce problme est dutiliser un programme squentiel.

program addition_elements

{

int sum, a[m,n];

...

sum = 0 ;

for (int i=0; i < m; i++)

for (int j=0; j < n; j++)

sum= sum + a[i, j];

...

print(sum);

}

Quand on utilise plusieurs threads et une barrier, on peut diviser le tableau en rgions et donner chaque rgion par un thread diffrent. La barrier est utilise pour assurer que laddition de tous les rsultats partiaux sera excute, seulement aprs que le dernier thread est finis laddition de sa rgion.

program addition

{

int number_workers=m;

int sum_total, sum[m], a[m,n]; // sum_total=0; sum[0...m-1]=0; a[0...m, 0...n]=?

barrier b(m);

...

read_all_elements(a); // read m*n values and put them into the array 'a'

...

for(int i=0; i < m; i++)

create_thread( worker(b, sum, i, a, i, n) );

...

while(get(barrier) > 0) yield();

for(int i=0; i < m; i++)

sum_total= sum_total + sum[i];

print(sum_total);

}

worker(barrier b, int sum[],int index_sum, int a[ ], int m, int n )

{

for (int j=0; j < n; j++)

sum[index_sum]= sum[index_sum] + a[m, j];

decrease(barrier);

}

4. Passage de message en Java

a. crivez un programme en Java qui implmente un buffer limit et circulaire et est appel distance. Quand un message arrive au serveur du buffer, il va crer un thread. Ce thread accde au buffer pour lire ou crire un lment. Attention: le buffer peut accepter plusieurs demandes, mais seulement un thread la fois peut accder la rgion critique.

Note: crivez un programme avec passage de message asynchrone et autre avec passage de message synchrone.

b. Implmenter un simple serveur ( et client) de fichiers qui utilise le passage de message asynchrone et synchrone.

Note: dans le cas de passage de message asynchrone vous devez assurer que les donnes seront bien transmises. Soyez crative pour donner des solutions.

5. XML-RPC (Remote Procedure Call) en Java

a. Quelles sont les technologies utilises pour XML-RPC? Expliquez chacunes.

b. Comment une requte est faite en XML-RPC?

c. crivez un programme en Java avec XML-RPC qui implmente un serveur et un client de fichiers.

6. Middleware

a. Dfinissez ce que c'est middleware? Donnez des exemples de middleware.

b. Comment une requte est faite en RMI (Remote Method Invocation)?

c. Implmentez un programme en Java avec RMI qui implmente un serveur et un client de fichiers.

d. Qu'est-ce que c'est CORBA? Quelles sont les avantages de CORBA?

e. Implmentez un programme en Java avec CORBA permettant de faire: laddition, la soustraction et la multiplication de tableaux bidimensionnels.

Note: Utilisez les squences pour implmenter le programme.

Autres questions

a. Expliquez les notions de: SMP (Symmetric MultiProcessing), MPP(Massively Parallel Processing or Massively Parallel Processor).

b. Dfinissez la notion de HyperThreading? Quels sont ses avantages?

Note: (consulter le site Web de l'Intel).

Etude de Cas

a. Implmentez un programme en Java permettant la multiplication parallle (physique) de tableaux bidimensionnels. Le programme doit tre excuter par n diffrents processeurs connects en rseau. Note: Utilisez Java RMI.

b. Implmentez un programme en Java avec CORBA qui cre le fractal Mandelbrot. Le fractal doit tre gnr de faon parallle physique. Note: Utilisez les squences pour transmettre les donnes.

c. Implmentez un programme qui utilise le concept Evolution Strategies pour rsoudre les fonctions n-dimensionnels, non-diffrentiables, non-continues et limits.

d. Implmentez un serveur Web multithreaded qui utilise une liste FIFO pour stocker les connections du demandeur. Le nombre de threads doit tre limit n. Les threads consultent suivant la liste FIFO pour prendre des connections et attendre les requtes que le demandeur envoyer par elles.