正在加载图片...
S-21 /Print 2+/ S-2 printf("2:Thread#&d:x =$d\n",omp_get_thread_num(),x ) }else /Print 3t/ printf("3:Thread#&d:x &d\n",omp_get_thread_num(),x ) return 0; C/C++ Fortran Example mem_model.If -1 PROGRAM MEMMODEL INCLUDE "omp_lib.h" !or USE OMP_LIB S-3 INTEGER X -4 X=2 9 !SOMP PARALLEL NUM_THREADS(2)SHARED(X) S-8 IF (OMP_GET_THREAD_NUM().EQ.0)THEN s-9 =5 s-10 ELSE S-11 PRINT 1:The following read of x has a race S-12 PRINT *,"1:THREAD#"OMP_GET_THREAD_NUM ()"X ="x s-13 ENDIF S-14 s15 SOMP BARRIER S-16 s-17 IF (OMP_GET_THREAD_NUM().EQ.0)THEN S-18 PRINT 2 S-19 PRINT ,"2:THREAD#"OMP_GET_THREAD_NUM(),"X "X S-20 ES PRINT 3 PRINT *,"3:THREAD#"OMP_GET_THREAD_NUM(),"X ="x ENDIF !SOMP END PARALLEL END PROGRAM MEMMODEL Fortran The following example demonstrates why synchronization is difficult to perform correctly through 34 variables.The value of flag is undefined in both prints on thread I and the value of data is only well-defined in the second print. CHAPTER 2.THE OPENMP MEMORY MODEL 5 S-21 /* Print 2 */ S-22 printf("2: Thread# %d: x = %d\n", omp_get_thread_num(),x ); S-23 } else { S-24 /* Print 3 */ S-25 printf("3: Thread# %d: x = %d\n", omp_get_thread_num(),x ); S-26 } S-27 } S-28 return 0; S-29 } C / C++ Fortran 1 Example mem_model.1f S-1 PROGRAM MEMMODEL S-2 INCLUDE "omp_lib.h" ! or USE OMP_LIB S-3 INTEGER X S-4 S-5 X = 2 S-6 !$OMP PARALLEL NUM_THREADS(2) SHARED(X) S-7 S-8 IF (OMP_GET_THREAD_NUM() .EQ. 0) THEN S-9 X = 5 S-10 ELSE S-11 ! PRINT 1: The following read of x has a race S-12 PRINT *,"1: THREAD# ", OMP_GET_THREAD_NUM(), "X = ", X S-13 ENDIF S-14 S-15 !$OMP BARRIER S-16 S-17 IF (OMP_GET_THREAD_NUM() .EQ. 0) THEN S-18 ! PRINT 2 S-19 PRINT *,"2: THREAD# ", OMP_GET_THREAD_NUM(), "X = ", X S-20 ELSE S-21 ! PRINT 3 S-22 PRINT *,"3: THREAD# ", OMP_GET_THREAD_NUM(), "X = ", X S-23 ENDIF S-24 S-25 !$OMP END PARALLEL S-26 S-27 END PROGRAM MEMMODEL Fortran 2 The following example demonstrates why synchronization is difficult to perform correctly through 3 variables. The value of flag is undefined in both prints on thread 1 and the value of data is only 4 well-defined in the second print. CHAPTER 2. THE OPENMP MEMORY MODEL 5
<<向上翻页向下翻页>>
©2008-现在 cucdc.com 高等教育资讯网 版权所有