| United States-English |
|
|
|
![]() |
Parallel Programming Guide for HP-UX Systems > Chapter 4 OpenMPHP’s implementation of OpenMP |
|
This section discusses HP’s implementation of OpenMP. HP OpenMP directives are only accepted if the command-line option +Oopenmp is given.
+Oopenmp is accepted at all optimization levels. However, the following differences exist between Itanium®-based and PA-RISC architectures. OpenMP is accepted at all optimization levels on Itanium®-based architectures. Parallelization directives and worksharing directives can be compiled at any optimization level from +O0 through +O4. Additionally, OpenMP will interoperate with +objdebug, +noobjdebug, and -g. Therefore, source-level debugging of parallelized applications is supported subject to the same restrictions of debugging at +O2 or below. The following limitations exist for OpenMP on PA-RISC architectures. For parallel and work-shared directives (including the clauses for these directives), code is parallelized only at optimization levels +O3 or +O4. The parallel and work-shared directives are listed in Table 4-1 “Parallel and work-shared directives”. When using optimization levels +O0 through +O2:
When using optimization levels +O3 and +O4:
Table 4-1 Parallel and work-shared directives
Nested parallelism is now supported dynamically, and with the use of the NUM_THREADS clause on the Parallel directive, finer-grained control of parallelism is possible. This also allows parallelized code to use parallel versions of MLIB. Additionally, statically-nested parallelization is enabled. There are two portable timing routines: DOUBLE PRECISION OMP_GET_WTIME() DOUBLE PRECISION OMP_GET_WTICK() Nested lock routines are as follows:
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||