biref introduction to openmp
DESCRIPTION
TRANSCRIPT
OPENMPA Brief Introduction to OpenMP
Û[U/ Jerry [email protected]
June 19, 2010
Jerry He (Tsinghua University) A Brief Introduction to OpenMP 1 / 31
�SN
1 OpenMP0�
2 OpenMPA5
Jerry He (Tsinghua University) A Brief Introduction to OpenMP 2 / 31
�SN
1 OpenMP0�
2 OpenMPA5
Jerry He (Tsinghua University) A Brief Introduction to OpenMP 2 / 31
OpenMP000���
Jerry He (Tsinghua University) A Brief Introduction to OpenMP 3 / 31
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
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
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
OpenMP000���
OpenMPS��.
¤k��§é�kêâÑk�Ó���µ��!�Ö!��"
�¬êâ�±úk§�±hk"
úkêâ�¤k�§¦^"
hkêâ=�T�§¦^"
Jerry He (Tsinghua University) A Brief Introduction to OpenMP 7 / 31
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
OpenMP000���
OpenMP$1�
Jerry He (Tsinghua University) A Brief Introduction to OpenMP 9 / 31
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
OpenMP000���
¿1«Vg
��¿1«¥�§�êþ
%@�¹e§¿1«S�§ê=XÚ¥Ø��ê
�{�µsetOMP NUM THREADS=4
Jerry He (Tsinghua University) A Brief Introduction to OpenMP 11 / 31
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
OpenMPAAA555
?ÖNÝschedule
�kn«static,dynamic,guidedn«NÝ�ª"
static²þ©�§?È�(½"
dynamic§�¤�¬§2©�¬"
Ódynamic§�O3u¬���¬�ê~�"
Jerry He (Tsinghua University) A Brief Introduction to OpenMP 19 / 31
OpenMPAAA555
?ÖNÝschedule
�kn«static,dynamic,guidedn«NÝ�ª"
static²þ©�§?È�(½"
dynamic§�¤�¬§2©�¬"
Ódynamic§�O3u¬���¬�ê~�"
Jerry He (Tsinghua University) A Brief Introduction to OpenMP 19 / 31
OpenMPAAA555
?ÖNÝschedule
�kn«static,dynamic,guidedn«NÝ�ª"
static²þ©�§?È�(½"
dynamic§�¤�¬§2©�¬"
Ódynamic§�O3u¬���¬�ê~�"
Jerry He (Tsinghua University) A Brief Introduction to OpenMP 19 / 31
OpenMPAAA555
?ÖNÝschedule
�kn«static,dynamic,guidedn«NÝ�ª"
static²þ©�§?È�(½"
dynamic§�¤�¬§2©�¬"
Ódynamic§�O3u¬���¬�ê~�"
Jerry He (Tsinghua University) A Brief Introduction to OpenMP 19 / 31
OpenMPAAA555
?ÖNÝschedule
�kn«static,dynamic,guidedn«NÝ�ª"
static²þ©�§?È�(½"
dynamic§�¤�¬§2©�¬"
Ódynamic§�O3u¬���¬�ê~�"
Jerry He (Tsinghua University) A Brief Introduction to OpenMP 19 / 31
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
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
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
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
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
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
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
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
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
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
OpenMPAAA555
OpenMP 3.0
Task
¿1i@
��
Jerry He (Tsinghua University) A Brief Introduction to OpenMP 25 / 31
OpenMPAAA555
OpenMP 3.0
Task
¿1i@
��
Jerry He (Tsinghua University) A Brief Introduction to OpenMP 25 / 31
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
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
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
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
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
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
OpenMPAAA555
OpenMP
Demo
Jerry He (Tsinghua University) A Brief Introduction to OpenMP 28 / 31
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
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
OpenMPAAA555
Thanks for your attention!Q & A
ã:Jerry He (Tsinghua University) A Brief Introduction to OpenMP 31 / 31