54
OPENMP A Brief Introduction to OpenMP [U/ Jerry He [email protected] June 19, 2010 Jerry He (Tsinghua University) A Brief Introduction to OpenMP 1 / 31

Biref Introduction to OpenMP

  • Upload
    jerryhe

  • View
    734

  • Download
    1

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Biref Introduction to OpenMP

OPENMPA Brief Introduction to OpenMP

Û[U/ Jerry [email protected]

June 19, 2010

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 1 / 31

Page 2: Biref Introduction to OpenMP

�SN

1 OpenMP0�

2 OpenMPA5

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 2 / 31

Page 3: Biref Introduction to OpenMP

�SN

1 OpenMP0�

2 OpenMPA5

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 2 / 31

Page 4: Biref Introduction to OpenMP

OpenMP000���

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 3 / 31

Page 5: Biref Introduction to OpenMP

OpenMP000���

OpenMP

OpenMP´dOpenMP Architecture Review BoardVÞJÑ�§¿®�2��É�§^u��S�¿1XÚ�õ�§§S�O��@��55º(CompilerDirective)"OpenMP|±�?§�ó�)C�ó!C++ÚFortran¶ |±OpenMP�?Èì�)SunCompiler§GNU CompilerÚIntel Compiler�"OpenMPJøé¿1�{�p��Ä�£ã§§SÏL3 �è¥\\;^�pragma5�²gC�¿ã§dd?Èì�±gÄò§S?1¿1z§¿37��?\\ÓÚp½±9Ï&"�ÀJ�Ñùpragma§½ö?ÈìØ|±OpenMP �§§Sq�òz�Ï~�§S(���G1)§�èE,�±�~$�§�´ØU|^õ�§5\�§S�1"

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 4 / 31

Page 6: Biref Introduction to OpenMP

OpenMP000���

OpenMP

dã´��;.�OpenMP§S�«¿ã§·��±w�§´dG1�èÚ¿1�è��|¤�§¿1�è�«�·�r§��/¿1«0"Ì�§��?\¿1«§ÒgÄ�)Ñõ��§§5¿1��1"

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 5 / 31

Page 7: Biref Introduction to OpenMP

OpenMP000���

XÛ3�襦^

?Èì��

MS VS2008: 3Property–>language¥§support openmp.

gcc: -fopenmp

'u�õ?Èì�|±ë�OpenMP Compilers

�èCz

\\<omp.h>ީ�

¿�\�#pragma�-=�"�è3�openmpeEU?È"

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 6 / 31

Page 8: Biref Introduction to OpenMP

OpenMP000���

OpenMPS��.

¤k��§é�kêâÑk�Ó���µ��!�Ö!��"

�¬êâ�±úk§�±hk"

úkêâ�¤k�§¦^"

hkêâ=�T�§¦^"

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 7 / 31

Page 9: Biref Introduction to OpenMP

OpenMP000���

OpenMPS��.

éA�OpenMP§Sp§z�êâÑk���¯á5"

�k2«a.µShared

�kdêâ���¢~"¤k�§ÓÚÖ�"dêâ�UCéÙ§�§Ñ��"

Private

z��§ÑÕkdêâ"Ù§�§ØU�¯dêâ"UC�=éd�§��"

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 8 / 31

Page 10: Biref Introduction to OpenMP

OpenMP000���

OpenMP$1�

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 9 / 31

Page 11: Biref Introduction to OpenMP

OpenMP000���

¿1«Vg

Mï��¿1«

O\�1�è#pragma ompparallel

^s)Òr\I��3¿1«S��é)å5

¿1«pz��§Ñ¬��1¿1«¥��è"

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 10 / 31

Page 12: Biref Introduction to OpenMP

OpenMP000���

¿1«Vg

��¿1«¥�§�êþ

%@�¹e§¿1«S�§ê=XÚ¥Ø��ê

�{�µsetOMP NUM THREADS=4

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 11 / 31

Page 13: Biref Introduction to OpenMP

OpenMPAAA555

OpenMP’s Hello world Program

1 #i n c l u d e <omp . h>2 #i n c l u d e <s t d i o . h>3 i n t main ( ) {4 #pragma omp p a r a l l e l //come i n t o p a r a l l e l i z a t i o n5 p r i n t f ( ” He l l o wor ld from th r ead %d , n th r e ad s %d\n” ,6 omp get thread num ( ) , omp get num threads ( ) ) ;7 } //come out o f p a r a l l e l i z a t i o n

ÑÑ(J

1 He l l o wor ld from th r ead 0 , n th r e ad s 22 He l l o wor ld from th r ead 1 , n th r e ad s 2

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 12 / 31

Page 14: Biref Introduction to OpenMP

OpenMPAAA555

OpenMP’s for

#pragma omp for ¦^ù��駷�Ò�±r��forÌ��ó�þ£~Xµ1...N¤©��ØÓ�§"ù��é�¡7L;���forÌ�§¦UédforÌ��ó�þ?1©�"

du�21openmp pragma¢3kæ�§·��±r21½õ1openmp pragmaÜ¿¤�1"

1 #pragma omp p a r a l l e l2 #pragma omp f o r3 f o r ( i =0; i<MAX;++ i ) {4 cout<<i<<end l ;5 }

1 #pragma omp p a r a l l e l f o r2 f o r ( i =0; i<MAX;++ i ) {3 cout<<i<<end l ;4 }

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 13 / 31

Page 15: Biref Introduction to OpenMP

OpenMPAAA555

OpenMP’s for

#pragma omp for ¦^ù��駷�Ò�±r��forÌ��ó�þ£~Xµ1...N¤©��ØÓ�§"ù��é�¡7L;���forÌ�§¦UédforÌ��ó�þ?1©�"

du�21openmp pragma¢3kæ�§·��±r21½õ1openmp pragmaÜ¿¤�1"

1 #pragma omp p a r a l l e l2 #pragma omp f o r3 f o r ( i =0; i<MAX;++ i ) {4 cout<<i<<end l ;5 }

1 #pragma omp p a r a l l e l f o r2 f o r ( i =0; i<MAX;++ i ) {3 cout<<i<<end l ;4 }

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 13 / 31

Page 16: Biref Introduction to OpenMP

OpenMPAAA555

if/shared/private�{

c¡®²J�OpenMP�S��.§ùA�'�i^5��êâ��¯a."

1 i n t x [ 5 ]={1 , 2 , 3 , 4 , 5} ;2 i n t y [ 5 ]={2 , 3 , 4 , 5 , 6} ;3 i n t c [ 5 ] ;4 i n t a , b , i ;5 #pragma omp p a r a l l e l f o r p r i v a t e ( a , b , i ) sha r ed ( x , y , c )6 f o r ( i =0; i<5;++ i ) {7 a=x [ i ] ; b=y [ i ] ;8 c [ i ]=a+b ;9 }

10 f o r ( i =0; i<5;++ i )11 p r i n t f ( ”%d ” , c [ i ] ) ;

1 3 5 7 9 11

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 14 / 31

Page 17: Biref Introduction to OpenMP

OpenMPAAA555

if/shared/private�{

c¡®²J�OpenMP�S��.§ùA�'�i^5��êâ��¯a."

1 i n t x [ 5 ]={1 , 2 , 3 , 4 , 5} ;2 i n t y [ 5 ]={2 , 3 , 4 , 5 , 6} ;3 i n t c [ 5 ] ;4 i n t a , b , i ;5 #pragma omp p a r a l l e l f o r p r i v a t e ( a , b , i ) sha r ed ( x , y , c )6 f o r ( i =0; i<5;++ i ) {7 a=x [ i ] ; b=y [ i ] ;8 c [ i ]=a+b ;9 }

10 f o r ( i =0; i<5;++ i )11 p r i n t f ( ”%d ” , c [ i ] ) ;

1 3 5 7 9 11

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 14 / 31

Page 18: Biref Introduction to OpenMP

OpenMPAAA555

if/shared/private�{

c¡®²J�OpenMP�S��.§ùA�'�i^5��êâ��¯a."

1 i n t x [ 5 ]={1 , 2 , 3 , 4 , 5} ;2 i n t y [ 5 ]={2 , 3 , 4 , 5 , 6} ;3 i n t c [ 5 ] ;4 i n t a , b , i ;5 #pragma omp p a r a l l e l f o r p r i v a t e ( a , b , i ) sha r ed ( x , y , c )6 f o r ( i =0; i<5;++ i ) {7 a=x [ i ] ; b=y [ i ] ;8 c [ i ]=a+b ;9 }

10 f o r ( i =0; i<5;++ i )11 p r i n t f ( ”%d ” , c [ i ] ) ;

1 3 5 7 9 11

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 14 / 31

Page 19: Biref Introduction to OpenMP

OpenMPAAA555

default(none|shared)

1 i n t x [ 5 ]={1 , 2 , 3 , 4 , 5} ;2 i n t y [ 5 ]={2 , 3 , 4 , 5 , 6} ;3 i n t c [ 5 ] ;4 i n t a , b , i ;5 #pragma omp p a r a l l e l f o r d e f a u l t ( sha r ed ) p r i v a t e ( a , b , i )6 f o r ( i =0; i<5;++ i ) {7 a=x [ i ] ; b=y [ i ] ;8 c [ i ]=a+b ;9 }

10 f o r ( i =0; i<5;++ i )11 p r i n t f ( ”%d ” , c [ i ] ) ;

%@�default(shared)§Øparallel¬S½Â�CþÙ§CþÑ�shareda."

�^default(private)

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 15 / 31

Page 20: Biref Introduction to OpenMP

OpenMPAAA555

default(none|shared)

1 i n t x [ 5 ]={1 , 2 , 3 , 4 , 5} ;2 i n t y [ 5 ]={2 , 3 , 4 , 5 , 6} ;3 i n t c [ 5 ] ;4 i n t a , b , i ;5 #pragma omp p a r a l l e l f o r d e f a u l t ( sha r ed ) p r i v a t e ( a , b , i )6 f o r ( i =0; i<5;++ i ) {7 a=x [ i ] ; b=y [ i ] ;8 c [ i ]=a+b ;9 }

10 f o r ( i =0; i<5;++ i )11 p r i n t f ( ”%d ” , c [ i ] ) ;

%@�default(shared)§Øparallel¬S½Â�CþÙ§CþÑ�shareda."

�^default(private)

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 15 / 31

Page 21: Biref Introduction to OpenMP

OpenMPAAA555

firstprivate,lastprivate

1 i n t a=10,b=20, c=30,d=40;2 i n t i ;3 p r i n t f ( ”a=%d , b=%d , c=%d , d=%d\n” , a , b , c , d ) ;4 #pragma omp p a r a l l e l f o r p r i v a t e ( a ) f i r s t p r i v a t e (b , d )

l a s t p r i v a t e ( c , d )5 f o r ( i =0; i<1;++ i ) {6 p r i n t f ( ”a=%d , b=%d c=%d , d=%d\n” , a , b , c , d ) ;7 a++;b++;c++;d++;8 }9 p r i n t f ( ”a=%d , b=%d , c=%d , d=%d\n” , a , b , c , d ) ;

(J

1 a=10,b=20, c=30,d=402 a=2,b=20 c=4072624 ,d=403 a=10,b=20, c=4072625 ,d=41

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 16 / 31

Page 22: Biref Introduction to OpenMP

OpenMPAAA555

firstprivate,lastprivate

1 i n t a=10,b=20, c=30,d=40;2 i n t i ;3 p r i n t f ( ”a=%d , b=%d , c=%d , d=%d\n” , a , b , c , d ) ;4 #pragma omp p a r a l l e l f o r p r i v a t e ( a ) f i r s t p r i v a t e (b , d )

l a s t p r i v a t e ( c , d )5 f o r ( i =0; i<1;++ i ) {6 p r i n t f ( ”a=%d , b=%d c=%d , d=%d\n” , a , b , c , d ) ;7 a++;b++;c++;d++;8 }9 p r i n t f ( ”a=%d , b=%d , c=%d , d=%d\n” , a , b , c , d ) ;

o(

privateCþ´�½Â�"

firstprivateCþ3?\¿1«c¬l¡Ó¶CþD�"

lastprivateCþ3Ñ¿1«c¬D��¡Ó¶Cþ"

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 16 / 31

Page 23: Biref Introduction to OpenMP

OpenMPAAA555

8�reduction

1 f l o a t do t p r oduc t ( f l o a t ∗ a ,f l o a t ∗b , i n t N) {

2 f l o a t sum=0.0;3 i n t i ;4 #pragma omp p a r a l l e l f o r

sha r ed ( sum) p r i v a t e ( i )5 f o r ( i =0; i<N;++ i )6 sum+=a [ i ]∗ b [ i ] ;7 r e t u r n sum ;8 }

1 f l o a t do t p r oduc t ( f l o a t ∗ a ,f l o a t ∗b , i n t N) {

2 f l o a t sum=0.0;3 i n t i ;4 #pragma omp p a r a l l e l f o r

r e d u c t i o n (+:sum) p r i v a t e (i )

5 f o r ( i =0; i<N;++ i )6 sum+=a [ i ]∗ b [ i ] ;7 r e t u r n sum ;8 }

|±�8�ö�

+,−, ∗, /, · · ·

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 17 / 31

Page 24: Biref Introduction to OpenMP

OpenMPAAA555

8�reduction

1 f l o a t do t p r oduc t ( f l o a t ∗ a ,f l o a t ∗b , i n t N) {

2 f l o a t sum=0.0;3 i n t i ;4 #pragma omp p a r a l l e l f o r

sha r ed ( sum) p r i v a t e ( i )5 f o r ( i =0; i<N;++ i )6 sum+=a [ i ]∗ b [ i ] ;7 r e t u r n sum ;8 }

1 f l o a t do t p r oduc t ( f l o a t ∗ a ,f l o a t ∗b , i n t N) {

2 f l o a t sum=0.0;3 i n t i ;4 #pragma omp p a r a l l e l f o r

r e d u c t i o n (+:sum) p r i v a t e (i )

5 f o r ( i =0; i<N;++ i )6 sum+=a [ i ]∗ b [ i ] ;7 r e t u r n sum ;8 }

|±�8�ö�

+,−, ∗, /, · · ·

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 17 / 31

Page 25: Biref Introduction to OpenMP

OpenMPAAA555

8�reduction

1 f l o a t do t p r oduc t ( f l o a t ∗ a ,f l o a t ∗b , i n t N) {

2 f l o a t sum=0.0;3 i n t i ;4 #pragma omp p a r a l l e l f o r

sha r ed ( sum) p r i v a t e ( i )5 f o r ( i =0; i<N;++ i )6 sum+=a [ i ]∗ b [ i ] ;7 r e t u r n sum ;8 }

1 f l o a t do t p r oduc t ( f l o a t ∗ a ,f l o a t ∗b , i n t N) {

2 f l o a t sum=0.0;3 i n t i ;4 #pragma omp p a r a l l e l f o r

r e d u c t i o n (+:sum) p r i v a t e (i )

5 f o r ( i =0; i<N;++ i )6 sum+=a [ i ]∗ b [ i ] ;7 r e t u r n sum ;8 }

|±�8�ö�

+,−, ∗, /, · · ·

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 17 / 31

Page 26: Biref Introduction to OpenMP

OpenMPAAA555

�.«critical

1 f l o a t do t p r oduc t ( f l o a t ∗ a , f l o a t ∗b , i n t N) {2 f l o a t sum=0.0;3 i n t i ;4 #pragma omp p a r a l l e l f o r sha r ed ( sum) p r i v a t e ( i )5 f o r ( i =0; i<N;++ i )6 #pragma omp c r i t i c a l7 sum+=a [ i ]∗ b [ i ] ;8 r e t u r n sum ;9 }

��±¦^·¶�.«§½��þ4�atomic"

ë�OpenMP(�©�"

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 18 / 31

Page 27: Biref Introduction to OpenMP

OpenMPAAA555

�.«critical

1 f l o a t do t p r oduc t ( f l o a t ∗ a , f l o a t ∗b , i n t N) {2 f l o a t sum=0.0;3 i n t i ;4 #pragma omp p a r a l l e l f o r sha r ed ( sum) p r i v a t e ( i )5 f o r ( i =0; i<N;++ i )6 #pragma omp c r i t i c a l7 sum+=a [ i ]∗ b [ i ] ;8 r e t u r n sum ;9 }

��±¦^·¶�.«§½��þ4�atomic"

ë�OpenMP(�©�"

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 18 / 31

Page 28: Biref Introduction to OpenMP

OpenMPAAA555

?ÖNÝschedule

�kn«static,dynamic,guidedn«NÝ�ª"

static²þ©�§?È�(½"

dynamic§�¤�¬§2©�¬"

Ódynamic§�O3u¬���¬�ê~�"

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 19 / 31

Page 29: Biref Introduction to OpenMP

OpenMPAAA555

?ÖNÝschedule

�kn«static,dynamic,guidedn«NÝ�ª"

static²þ©�§?È�(½"

dynamic§�¤�¬§2©�¬"

Ódynamic§�O3u¬���¬�ê~�"

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 19 / 31

Page 30: Biref Introduction to OpenMP

OpenMPAAA555

?ÖNÝschedule

�kn«static,dynamic,guidedn«NÝ�ª"

static²þ©�§?È�(½"

dynamic§�¤�¬§2©�¬"

Ódynamic§�O3u¬���¬�ê~�"

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 19 / 31

Page 31: Biref Introduction to OpenMP

OpenMPAAA555

?ÖNÝschedule

�kn«static,dynamic,guidedn«NÝ�ª"

static²þ©�§?È�(½"

dynamic§�¤�¬§2©�¬"

Ódynamic§�O3u¬���¬�ê~�"

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 19 / 31

Page 32: Biref Introduction to OpenMP

OpenMPAAA555

?ÖNÝschedule

�kn«static,dynamic,guidedn«NÝ�ª"

static²þ©�§?È�(½"

dynamic§�¤�¬§2©�¬"

Ódynamic§�O3u¬���¬�ê~�"

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 19 / 31

Page 33: Biref Introduction to OpenMP

OpenMPAAA555

?ÖNÝschedule

schedule(<type> [,<chunk>])�½Ì�NÝ�ª"

1 #pragma omp p a r a l l e l f o r s c h edu l e ( s t a t i c )2 . . .3 #pragma omp p a r a l l e l f o r s c h edu l e ( dynamic , chunk )4 . . .5 #pragma omp p a r a l l e l f o r s c h edu l e ( gu ided , chunk )6 . . .7 #pragma omp p a r a l l e l f o r s c h edu l e ( auto )8 . . . // on l y suppo r t by OpenMP 3 . 0 .

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 20 / 31

Page 34: Biref Introduction to OpenMP

OpenMPAAA555

section

1 #pragma omp s e c t i o n s [ c l a u s e ( s ) ]2 {3 #pragma omp s e c t i o n4 <code b lock1>5 #pragma omp s e c t i o n6 <code b lock2>7 #pragma omp s e c t i o n8 <code b lock3>9 . . .

10 }

|±�clauseskµ

private firstprivate

lastprivate reduction

nowait

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 21 / 31

Page 35: Biref Introduction to OpenMP

OpenMPAAA555

section

1 #pragma omp s e c t i o n s [ c l a u s e ( s ) ]2 {3 #pragma omp s e c t i o n4 <code b lock1>5 #pragma omp s e c t i o n6 <code b lock2>7 #pragma omp s e c t i o n8 <code b lock3>9 . . .

10 }

|±�clauseskµ

private firstprivate

lastprivate reduction

nowait

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 21 / 31

Page 36: Biref Introduction to OpenMP

OpenMPAAA555

barrier,nowait

1 #pragma omp p a r a l l e l2 {3 p r i n t ( a ) ;4 #pragma omp b a r r i e r5 p r i n t ( b ) ;6 #pragma omp f o r7 . . .8 p r i n t ( c ) ;9 #pragma omp f o r nowa i t

10 . . .11 }

Øfor§Nõ�-��¡Û¹kbarrier"

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 22 / 31

Page 37: Biref Introduction to OpenMP

OpenMPAAA555

barrier,nowait

1 #pragma omp p a r a l l e l2 {3 p r i n t ( a ) ;4 #pragma omp b a r r i e r5 p r i n t ( b ) ;6 #pragma omp f o r7 . . .8 p r i n t ( c ) ;9 #pragma omp f o r nowa i t

10 . . .11 }

Øfor§Nõ�-��¡Û¹kbarrier"

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 22 / 31

Page 38: Biref Introduction to OpenMP

OpenMPAAA555

single,master

4,¬�è�k���§�1"

1 #pragma omp p a r a l l e l2 {3 p r i n t ( a ) ;4 #pragma omp s i n g l e5 p r i n t ( b ) ;6 #pragma omp master7 p r i n t ( c ) ;8 }

singleÚmaster�«O"

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 23 / 31

Page 39: Biref Introduction to OpenMP

OpenMPAAA555

single,master

4,¬�è�k���§�1"

1 #pragma omp p a r a l l e l2 {3 p r i n t ( a ) ;4 #pragma omp s i n g l e5 p r i n t ( b ) ;6 #pragma omp master7 p r i n t ( c ) ;8 }

singleÚmaster�«O"

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 23 / 31

Page 40: Biref Introduction to OpenMP

OpenMPAAA555

single,master

4,¬�è�k���§�1"

1 #pragma omp p a r a l l e l2 {3 p r i n t ( a ) ;4 #pragma omp s i n g l e5 p r i n t ( b ) ;6 #pragma omp master7 p r i n t ( c ) ;8 }

singleÚmaster�«O"

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 23 / 31

Page 41: Biref Introduction to OpenMP

OpenMPAAA555

~^�Û¼ê

omp get num procs§�£$1��§�õ?nÅ�?nì�ê

omp get num threads§�£�c¿1«¥¹Ä��§�ê

omp get thread num§�£�§Ò§XJkt�¹Ä�§§�§Ò�0 t-1"

omp set num threads§?U¿1�1�è��§��ê"�§ê�U�L�^�?nìê§d�õ��§¬�N��Ó��?nìþ"d¼ê7L3G1Ü©�N^"

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 24 / 31

Page 42: Biref Introduction to OpenMP

OpenMPAAA555

OpenMP 3.0

Task

¿1i@

��

1 v e c t o r vec (100) ;2 v e c t o r : : i t e r a t o r i t ;3 #pragma omp f o r d e f a u l t (

none ) sha r ed ( vec )4 f o r ( i t=vec . beg in ( ) ; i t<

vec . end ( ) ; i t++)5 //do your work .

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 25 / 31

Page 43: Biref Introduction to OpenMP

OpenMPAAA555

OpenMP 3.0

Task

¿1i@

��

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 25 / 31

Page 44: Biref Introduction to OpenMP

OpenMPAAA555

OpenMP 3.0

Task

¿1i@

��

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 25 / 31

Page 45: Biref Introduction to OpenMP

OpenMPAAA555

Performance:Amdahl’s law

Definition

speedup(p) =1

s+ (1− s)/p(1)

p: core numss: serial code1-s: can parallel code

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 26 / 31

Page 46: Biref Introduction to OpenMP

OpenMPAAA555

Performance:Amdahl’s law

Definition

speedup(p) =1

s+ (1− s)/p(1)

p: core numss: serial code1-s: can parallel code

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 26 / 31

Page 47: Biref Introduction to OpenMP

OpenMPAAA555

One Myth

A program use all cores can scale.

éuG1�èkvk�Ð�`z"

1 doub l e a [ 1 0 0 0 ] [ 1 0 0 0 ] ;2 f o r ( i n t i =0; i <1000; i++)3 f o r ( i n t j =0; j <1000; j++)4 a [ i ] [ j ]=0.0 // or a [ j ] [ i ]=0.05 // c++’s a r r a y i s row− f i r s t .

´Ä��zÜ©�Ñ�"

S�§���. . .

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 27 / 31

Page 48: Biref Introduction to OpenMP

OpenMPAAA555

One Myth

A program use all cores can scale.

éuG1�èkvk�Ð�`z"

1 doub l e a [ 1 0 0 0 ] [ 1 0 0 0 ] ;2 f o r ( i n t i =0; i <1000; i++)3 f o r ( i n t j =0; j <1000; j++)4 a [ i ] [ j ]=0.0 // or a [ j ] [ i ]=0.05 // c++’s a r r a y i s row− f i r s t .

´Ä��zÜ©�Ñ�"

S�§���. . .

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 27 / 31

Page 49: Biref Introduction to OpenMP

OpenMPAAA555

One Myth

A program use all cores can scale.

éuG1�èkvk�Ð�`z"

1 doub l e a [ 1 0 0 0 ] [ 1 0 0 0 ] ;2 f o r ( i n t i =0; i <1000; i++)3 f o r ( i n t j =0; j <1000; j++)4 a [ i ] [ j ]=0.0 // or a [ j ] [ i ]=0.05 // c++’s a r r a y i s row− f i r s t .

´Ä��zÜ©�Ñ�"

S�§���. . .

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 27 / 31

Page 50: Biref Introduction to OpenMP

OpenMPAAA555

One Myth

A program use all cores can scale.

éuG1�èkvk�Ð�`z"

1 doub l e a [ 1 0 0 0 ] [ 1 0 0 0 ] ;2 f o r ( i n t i =0; i <1000; i++)3 f o r ( i n t j =0; j <1000; j++)4 a [ i ] [ j ]=0.0 // or a [ j ] [ i ]=0.05 // c++’s a r r a y i s row− f i r s t .

´Ä��zÜ©�Ñ�"

S�§���. . .

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 27 / 31

Page 51: Biref Introduction to OpenMP

OpenMPAAA555

OpenMP

Demo

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 28 / 31

Page 52: Biref Introduction to OpenMP

OpenMPAAA555

o(

OpenMPJø����§%r��¿1�."

�^u?¿�����S�ªXÚ¥"

A��Ü?ÈìÑ|±OpenMP"

�3�¡|±OpenMP 3.0"

OpenMP 3.0¥�taskA5¦ÙA^�2"

Sun CompileréOpenMP|±�2"

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 29 / 31

Page 53: Biref Introduction to OpenMP

OpenMPAAA555

ë�]�

OpenMP(��Õ

Free lunch is over

Ruud van der Pas: An overview of OpenMP 3.0

Wikipedia OpenMP

OpenMP Application Program Interface Version 3.0 May 2008

Summary of OpenMP 3.0 C/C++ Syntax

Jerry He (Tsinghua University) A Brief Introduction to OpenMP 30 / 31

Page 54: Biref Introduction to OpenMP

OpenMPAAA555

Thanks for your attention!Q & A

ã:Jerry He (Tsinghua University) A Brief Introduction to OpenMP 31 / 31