MEMORYTOUCH (i64 only)
General Compiler Directive: Ensures that a specific memory location is updated dynamically.
Syntax
- cDEC$ MEMORYTOUCH (array [, schedule-type [ (chunk-size) ]] [, init-type])
- c
Is a c, C, !, or *. (See Syntax Rules for Compiler Directives.)
- array
Is an array of type INTEGER(4), INTEGER(8), REAL(4) or REAL(8).
- schedule-type
Is STATIC, GUIDED, RUNTIME or DYNAMIC, whichever is consistent with the OpenMP conforming processing of the subsequent parallel loops.
- chunk-size
Is an integer expression.
- init-type
Is LOAD or STORE. If init-type is LOAD, the compiler generates an OpenMP loop which fetches elements of array into a temporary variable. If init-type is STORE, the compiler generates an OpenMP loop which sets elements of array to zero.
Description
The MEMORYTOUCH directive ensures that a specific memory location is updated dynamically. This prevents the possibility of multiple, simultaneous writing threads.
This directive supports correctly distributed memory initialization and NUMA pre-fetching.
To use this directive, OpenMP must be enabled.
See Also: General Compiler Directives
Examples
c$DEC memorytouch (ARRAY_A)
c$DEC memorytouch (ARRAY_A, LOAD)
c$DEC memorytouch (ARRAY_A, STATIC (load+jf(3)) )
c$DEC memorytouch (ARRAY_A, GUIDED (20), STORE)