13.11.2016 Views

OpenMP Application Programming Interface Examples

2fZ58Wr

2fZ58Wr

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Fortran<br />

1<br />

Example set_dynamic_nthrs.1.f<br />

S-1 SUBROUTINE DO_BY_16(X, IAM, IPOINTS)<br />

S-2 REAL X(*)<br />

S-3 INTEGER IAM, IPOINTS<br />

S-4 END SUBROUTINE DO_BY_16<br />

S-5<br />

S-6 SUBROUTINE DYNTHREADS(X, NPOINTS)<br />

S-7<br />

S-8 INCLUDE "omp_lib.h" ! or USE OMP_LIB<br />

S-9<br />

S-10 INTEGER NPOINTS<br />

S-11 REAL X(NPOINTS)<br />

S-12<br />

S-13 INTEGER IAM, IPOINTS<br />

S-14<br />

S-15 CALL OMP_SET_DYNAMIC(.FALSE.)<br />

S-16 CALL OMP_SET_NUM_THREADS(16)<br />

S-17<br />

S-18 !$OMP PARALLEL SHARED(X,NPOINTS) PRIVATE(IAM, IPOINTS)<br />

S-19<br />

S-20 IF (OMP_GET_NUM_THREADS() .NE. 16) THEN<br />

S-21 STOP<br />

S-22 ENDIF<br />

S-23<br />

S-24 IAM = OMP_GET_THREAD_NUM()<br />

S-25 IPOINTS = NPOINTS/16<br />

S-26 CALL DO_BY_16(X,IAM,IPOINTS)<br />

S-27<br />

S-28 !$OMP END PARALLEL<br />

S-29<br />

S-30 END SUBROUTINE DYNTHREADS<br />

Fortran<br />

CHAPTER 1. PARALLEL EXECUTION 37

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!