Technical data

Cray Standard C/C++ Reference Manual
#ifdef _CRAY
#define Pragma(S) _Pragma(S)
#else
#define Pragma(S)
#endif
When this definition is used on a UNICOS or UNICOS/mk system, the
directives are interpreted as intended; when used on another vendors system,
the directives are removed.
Macros are expanded in the string literal argument for _Pragma in an identical
fashion to the general specification of a #pragma directive:
#define NUM_CHUNKS 8
_Pragma("_CRI parallel numchunks(NUM_CHUNKS)")
The following example shows the expanded code, which is the only situation in
which macros are expanded inside of string literals:
#pragma _CRI taskloop numchunks(8)
3.5 General Directives
General directives specify compiler actions that are specific to the directive and
have no similarities to the other types of directives. The following sections
describe general directives.
3.5.1 besu Directive
The besu directive indicates that n BESUs (barrier/eureka synchronization
units) should be allocated for use in the compilation unit. The format of this
directive is as follows:
#pragma _CRI besu n
The sum of the BESU counts specified with directives in a program is recorded at
link time and placed in the a.out header. The operating system allocates the
specified number to the application team at program startup. As a special case,
the operating system does not allocate a BESU if the BESU count in the a.out
header is 1 and the program used one PE.
48 S217936