# OpenMP* Implementation-Defined Behaviors

This topic summarizes the behaviors that are described as implementation defined in the OpenMP* API specification.

### Note

Internal Control Variables (ICVs) mentioned below are discussed in the OpenMP API specification.

Name | Description
--- | ---
single construct | The first thread that encounters the single construct executes the structured block.
teams construct | The number of teams that are created is equal to 1 if you don't specify the num_teams clause.
dist_schedule clause, distribute construct | If you don't specify the dist_schedule clause, then the schedule for the distribute construct is static.
omp_set_num_threads routine | If the argument is not a positive integer, then Intel's OpenMP implementation sets the value of the first element of the nthreads-var ICV of the current task to 1.
omp_set_max_active_levels routine | If the argument is a negative integer this call is ignored and the last valid setting is used.
omp_get_max_active_levels routine | When called from within any explicit parallel region the binding thread set, and binding region, if required, for the omp_get_max_active_levels region is the current task region.
OMP_SCHEDULE environment variable | If the value of the variable does not conform to the specified format then the value of the run-sched-var ICV is set to static.
OMP_NUM_THREADS environment variable | If any value of the list specified in the environment variable is negative then the whole list is ignored. If any value of the list is zero then this value is set to 1.
OMP_PROC_BIND environment variable | If the value is not true, false, or a comma separated list of master (deprecated), primary, close, or spread, then Intel's OpenMP implementation sets the value of bind-var ICV to false.
OMP_DYNAMIC environment variable | If the value is neither true nor false, then the implementation sets the value of dyn-var ICV to false.
OMP_NESTED environment variable | If the value is neither true nor false, then the implementation sets the value of nest-var ICV to false.
OMP_STACKSIZE environment variable | If the value does not conform to the specified format or the implementation cannot provide a stack of the specified size, then Intel's OpenMP implementation sets the value of stacksize-var ICV to the default size, which is specified as being from 1MB to 4MB depending on the architecture. On Linux* or macOS*, the implementation can set the value of stacksize-var ICV up to 256MB, respecting the operating system's stack size limit.
OMP_MAX_ACTIVE_LEVELS environment variable | If the value is a negative integer or is greater than the number of parallel levels an implementation can support, then Intel's OpenMP implementation sets the value of the max-active-levels-var ICV to 1.
OMP_THREAD_LIMIT environment variable | If the requested value is greater than the number of threads an implementation can support, or if the value is a negative integer, then Intel's OpenMP implementation sets the value of the thread-limit-var ICV to the maximum number of threads supported on a particular platform. If the requested value is zero then the implementation sets the value of the thread-limit-var ICV to 1.
Runtime library definitions | Intel's OpenMP implementation provides both the include file omp.h and omp-tools.h .

Parent topic: OpenMP* Support