Παραλληλη/κατανεμημενη επεξεργασια και εφαρμογεσ Εισαγωγή στο ...

coleslawokraSoftware and s/w Development

Dec 1, 2013 (3 years and 8 months ago)

68 views

Π
ΑΡΑΛΛΗΛΗ
/
ΚΑΤΑΝΕΜΗΜΕΝΗ

ΕΠΕΞΕΡΓΑΣΙΑ

ΚΑΙ

ΕΦΑΡΜΟΓΕΣ

Εισαγωγή στο
O
penMP

Π
ΕΡΙΕΧΟΜΕΝΑ


Εισαγωγή


Σύνταξη στη
C/C++


Hello World


Σύνταξη στη
C/C++


Κανόνας του τραπεζίου


Υπολογισμός π


Αναφορές



Ε
ΙΣΑΓΩΓΗ


Shared memory
συστήματα


Pthreads


OpenMP


Java threads


Το
OpenMP

είναι προγραμματισμός σε πιο

υψηλό


επίπεδο από το
Pthreads


Πρέπει να το υποστηρίζει ο
compiler


gcc
:
-
fopenmp





Ε
ΙΣΑΓΩΓΗ


OpenMP


SPMD

(Υπάρχει η δυνατότητα και για
MPMD
)


Βασίζεται στα νήματα


Μνήμη


Κοινή μεταξύ των
threads


Τοπική για κάθε
thread
(τα άλλα δεν έχουν πρόσβαση)


Σ
ΥΝΤΑΞΗ

ΣΤΗ

C
/
C
++


#include <
omp.h
>


#
pragma

omp

directive [ clauses [ ] ]


directive:
parallel, parallel for


clause:
num_threads

(number of threads)


#

pragma

omp

parallel
\


num_threads
(
thread_count
)


int

omp_get_thread_num

()
: thread id


int

omp_get_num_threads

()
:

αριθμός
threads

H
ELLO

W
ORLD

#include <
stdio.h
>

#include <
stdlib.h
>

#include <
omp.h
>


void Hello(void);


int

main(
int

argc
, char*
argv
[]){



int

thread_count

=
strtol
(
argv
[1], NULL, 10);


#
pragma

omp

parallel
num_threads
(
thread_count
)


Hello();



return 0;

}


void Hello(void){



int

my_rank

=
omp_get_thread_num
()
;


int

thread_count

=
omp_get_num_threads
();



printf
("Hello from thread %d of %d
\
n",
my_rank
,
thread_count
);

}


Σ
ΥΝΤΑΞΗ

ΣΤΗ

C/C++


implicit barrier


parallel


for


single


_OPENMP:
δείχνει αν υποστηρίζει ο
compiler
OpenMP


Προσοχή στα

«κρίσιμα τμήματα»


#
pragma

omp

critical


Μεταβλητές


private
: clause


shared
: clause


Reduction clause


reduction (+,
-
,*:
μεταβλητή
)


Σ
ΥΝΤΑΞΗ

ΣΤΗ

C/C++


parallel for directive


Πρέπει να ξέρουμε από πριν τον αριθμό των
επαναλήψεων


No data dependence


Όχι
if

με
return

Α
ΝΑΦΟΡΕΣ


Peter S. Pacheco, An Introduction to Parallel
Programming, Morgan Kaufmann, 2011


Thomas
Rauber
,
Gudula

Runger
, Parallel
Programming for
Multicore

and Cluster Systems,
Springer, 2010