Implementation Defined Behaviors

compared with
Current by richard.friedman.at.sun
on Jul 15, 2008 12:58.

Key
This line was removed.
This word was removed. This word was added.
This line was added.

Changes (22)

View page history
h1. Implementation Defined Behaviors in Sun Studio OpenMP 3.0

NOTE: All page numbers refer to the OpenMP Specification Version 3.0 at [http://www.openmp.org/mp-documents/spec30.pdf]
*1. Task scheduling points (see Section 1.3 on page 11):*\\
\\
 
In both tied and untied task regions, task scheduling points may occur only in task, taskwait, explicit or implicit barrier constructs, and at the completion point of the task.\\
\\

*2. Memory model (see Section 1.4.1 on page 13):*
There is no guarantee that memory accesses by multiple threads to the same variable without synchronization are atomic with respect to each other. Several implementation-dependent and application-dependent factors affect whether accesses are atomic or not. Some variables may be larger than the largest atomic memory operation on the target platform. Some variables may be mis-aligned or of unknown alignment and the compiler or the run-time system may need to use multiple loads/stores to access the variable. Sometimes there are faster code sequences that use more loads/stores.
factors affect whether accesses are atomic or not. Some variables may be larger than the largest atomic memory operation on the target platform. Some variables may be mis-aligned or of unknown alignment
and the compiler or the run-time system may need to use multiple loads/stores to access the variable. Sometimes there are faster code sequences that use more loads/stores.

*3. Internal control variables (see Section 2.3.2 on page 29):*
This implementation provides the ability to dynamically adjust the number of threads. Dynamic adjustment is enabled by default. Set the OMP_DYNAMIC environment variable, or call the omp_set_dynamic() routine to disable dynamic adjustment.
When a thread encounters a parallel construct, the number of threads delivered by this implementation is determined according to Algorithm 2.1 pp. 35-36. In exceptional situations, such as when there is a lack of system resources, the number of threads supplied will be less than described in Algorithm 2.1. In these situations, if SUNW_MP_WARN is set to TRUE or a callback function is registered via a call to sunw_mp_register_warn(), a warning message will be issued.
of system resources, the number of threads supplied will be less than described in Algorithm 2.1. In these situations, if SUNW_MP_WARN is set to TRUE or a callback function is registered via a call to sunw_mp_register_warn(), a warning message will be issued.

*5. Loop directive (see Section 2.5.1 on page 38):*
*15. OMP_DYNAMIC environment variable (see Section 4.3 on page 148):*
If the value specified for OMP_DYNAMIC is neither TRUE nor FALSE, then the value will be ignored, and the default value (TRUE) will be used. A warning message will be issued if SUNW_MP_WARN is set to TRUE or a callback function is registered by a call to sunw_mp_register_warn().
callback function is registered by a call to sunw_mp_register_warn().

*16. OMP_NESTED environment variable (see Section 4.4 on page 148):*
*17. OMP_STACKSIZE environment variable (see Section 4.5 on page 149):*
If the value given for OMP_STACKSIZE does not conform to the specified format, then the value will be ignored, and the default value (4 Megabytes for 32-bit applications, and 8 Megabytes for 64-bit applications) will be used. A warning message will be issued if SUNW_MP_WARN is set to TRUE or a callback function is registered by a call to sunw_mp_register_warn().
applications) will be used. A warning message will be issued if SUNW_MP_WARN is set to TRUE or a callback function is registered by a call to sunw_mp_register_warn().

*18. OMP_WAIT_POLICY environment variable (see Section 4.6 on page 150):*
*19. OMP_MAX_ACTIVE_LEVELS environment variable (see Section 4.7 on page 150):*
If the value specified for OMP_MAX_ACTIVE_LEVELS is not a nonnegative integer, then the value will be ignored, and the default value (4) will be used. A warning message will be issued if SUNW_MP_WARN is set to TRUE or a callback function is registered by a call to sunw_mp_register_warn().
to TRUE or a callback function is registered by a call to sunw_mp_register_warn().

*20. OMP_THREAD_LIMIT environment variable (see Section 4.8 on page 151):*
If the value specified for OMP_THREAD_LIMIT is not a positive integer, then the value will be ignored, and the default value (1024) will be used. A warning message will be issued if SUNW_MP_WARN is set to TRUE or a callback function is registered by a call to sunw_mp_register_warn().
or a callback function is registered by a call to sunw_mp_register_warn().

\--------------------------------\-
 
*ITEMS 21-23 APPLY TO FORTRAN ONLY:*
\--------------------------------\-
*21. threadprivate directive (see Section 2.9.2 on page 81):*
If the conditions for values of data in the threadprivate objects of threads (other than the initial thread) to persist between two consecutive active parallel regions do not all hold, then the allocation status of an allocatable array in the second region may be "not currently allocated".
allocation status of an allocatable array in the second region may be "not currently allocated".

*22. shared clause (see Section 2.9.3.2 on page 88):*
Passing a shared variable to a non-intrinsic procedure may result in the value of the shared variable being copied into temporary storage before the procedure reference, and back out of the temporary storage into the actual argument storage after the procedure reference. This copying into and out of temporary storage can occur only if conditions a, b, and c in Section 2.9.3.2 on p. 88 hold.
into the actual argument storage after the procedure reference. This copying into and out of temporary storage can occur only if conditions a, b, and c in Section 2.9.3.2 on p. 88 hold.

*23. Runtime library definitions(see Section 3.1 on page 108):*

The individuals who post here are part of the extended Sun Microsystems community and they might not be employed or in any way formally affiliated with Sun Microsystems. The opinions expressed here are their own, are not necessarily reviewed in advance by anyone but the individual authors, and neither Sun nor any other party necessarily agrees with them.

Copyright 1994-2009 Sun Microsystems, Inc.
Powered by Atlassian Confluence
Sun Guidelines on Public Discourse Privacy Policy Terms of Use Trademarks Site Map Employment Investor Relations Contact