task dependence An ordering relation between two sibling tasks:the dependent task and a previously generated predecessor task.The task dependence is fulfilled when the predecessor 3 task has completed. 45 dependent task A task that because of a task dependence cannot be executed until its predecessor tasks have completed. mutually exclusive Tasks that may be executed in any order.but not at the same time. tasks > predecessor task A task that must complete before its dependent tasks can be executed. 8 task synchronization A taskwait,taskgroup,or a barrier construct construct task generating A construct that generates one or more explicit tasks. construct 18 target task able and ask that is generated data,target exit data,or target update consiruct. taskgroup set A set of tasks that are logically grouped by a taskgroup region. 131.2.6 Data Terminology variable A named data storage block,for which the value can be defined and redefined during 15 the execuion of aprogram 167 COMMENT:An aray element is a variable that is part of another variable. 18 scalar variable For C/C++.a scalar variable,as defined by the base language. 2 For Fortran,a scalar variable with intrinsic type,as defined by the base language, excluding character type 1 aggregate variable A variable,such as an array or structure.composed of other variables. 22 array section A designated subset of the elements of an array that is specified using a subscript 23 notation that can select more than one element. 24 array item An array,an array section,or an array element 第 shape-operator ForC/C++an array shaping operator that reinterprets a pointer expression as an array with one or more specified dimensions. OpenMP API-Version 5.0 November 2018
1 task dependence An ordering relation between two sibling tasks: the dependent task and a previously 2 generated predecessor task. The task dependence is fulfilled when the predecessor 3 task has completed. 4 dependent task A task that because of a task dependence cannot be executed until its predecessor 5 tasks have completed. mutually exclusive tasks 6 Tasks that may be executed in any order, but not at the same time. 7 predecessor task A task that must complete before its dependent tasks can be executed. task synchronization construct 8 A taskwait, taskgroup, or a barrier construct. task generating construct 9 A construct that generates one or more explicit tasks. 10 target task A mergeable and untied task that is generated by a target, target enter 11 data, target exit data, or target update construct. 12 taskgroup set A set of tasks that are logically grouped by a taskgroup region. 13 1.2.6 Data Terminology 14 variable A named data storage block, for which the value can be defined and redefined during 15 the execution of a program. 16 COMMENT: An array element or structure element is a variable that is 17 part of another variable. 18 scalar variable For C/C++, a scalar variable, as defined by the base language. 19 For Fortran, a scalar variable with intrinsic type, as defined by the base language, 20 excluding character type. 21 aggregate variable A variable, such as an array or structure, composed of other variables. 22 array section A designated subset of the elements of an array that is specified using a subscript 23 notation that can select more than one element. 24 array item An array, an array section, or an array element. 25 shape-operator For C/C++, an array shaping operator that reinterprets a pointer expression as an 26 array with one or more specified dimensions. 12 OpenMP API – Version 5.0 November 2018
implicit array For C/C++.the set of array elements of non-array type T that may be accessed by 3 rthat is either a pointer to type T 4 For Fortran,the set of array elements for a given array pointer. COMMENT:For C/C++,the implicit array for pointer p with type T 6 ()[10]consists of all accessible elements p[ill],for all i and j=0..9. base pointer that isused by a given value 89 array section to refer indirectly to its storage.where the lvalue expression or array section is part of the implicit array for that Ivalue pointer expression. 10 For Fortran,a data pointer that appears last in the designator for a given variable or array section,where the variable or array section is part of the pointer target for that 12 data pointer. 1 COMMENT:For the array section (*p0).xo[k1].p1->p2[k2].x1[k3]x2[4][0:n].where identifiers pi have a 15 pointer type declaration and identifiers xi have an array type declaration, 16 the base pointer is:(*p0).xO[k1].p1->p2 1 named pointer For C/C++.the base pointer of a given Ivalue expression or array section.or the base 18 pointer of one of its named pointers. 19 For Fortran,the base pointer of a given variable or array section,or the base pointer 20 of one of its named pointers. COMMENT:For the array section 22 (p)xo[k1].p1->p2[k2].x1[k3]x[:]where identifiers pi have a 2324 c array type 25 containing array For C/C++,a non-subscripted array (a containing array)that appears in a given 26 Ivalue expression or array section,where the lvalue expression or array section is part of that containing array. 289 For Fortran,an array (a containing array)without the POINTER attribute and without a subscript list that appears in the designator of a given variable or array 30 section,where the variable or array section is part of that containing array. 9 COMMENT:For the array section 32 (*p0).x0[k1].p1->p2[k2].x1[k3].x2[4][0:nl.where identifiers pi have a 33 345 e com CHAPTER 1.INTRODUCTION 13
1 implicit array For C/C++, the set of array elements of non-array type T that may be accessed by 2 applying a sequence of [] operators to a given pointer that is either a pointer to type T 3 or a pointer to a multidimensional array of elements of type T. 4 For Fortran, the set of array elements for a given array pointer. 5 COMMENT: For C/C++, the implicit array for pointer p with type T 6 (*)[10] consists of all accessible elements p[i][j], for all i and j=0..9. 7 base pointer For C/C++, an lvalue pointer expression that is used by a given lvalue expression or 8 array section to refer indirectly to its storage, where the lvalue expression or array 9 section is part of the implicit array for that lvalue pointer expression. 10 For Fortran, a data pointer that appears last in the designator for a given variable or 11 array section, where the variable or array section is part of the pointer target for that 12 data pointer. 13 COMMENT: For the array section 14 (*p0).x0[k1].p1->p2[k2].x1[k3].x2[4][0:n], where identifiers pi have a 15 pointer type declaration and identifiers xi have an array type declaration, 16 the base pointer is: (*p0).x0[k1].p1->p2. 17 named pointer For C/C++, the base pointer of a given lvalue expression or array section, or the base 18 pointer of one of its named pointers. 19 For Fortran, the base pointer of a given variable or array section, or the base pointer 20 of one of its named pointers. 21 COMMENT: For the array section 22 (*p0).x0[k1].p1->p2[k2].x1[k3].x2[4][0:n], where identifiers pi have a 23 pointer type declaration and identifiers xi have an array type declaration, 24 the named pointers are: p0, (*p0).x0[k1].p1, and (*p0).x0[k1].p1->p2. 25 containing array For C/C++, a non-subscripted array (a containing array) that appears in a given 26 lvalue expression or array section, where the lvalue expression or array section is part 27 of that containing array. 28 For Fortran, an array (a containing array) without the POINTER attribute and 29 without a subscript list that appears in the designator of a given variable or array 30 section, where the variable or array section is part of that containing array. 31 COMMENT: For the array section 32 (*p0).x0[k1].p1->p2[k2].x1[k3].x2[4][0:n], where identifiers pi have a 33 pointer type declaration and identifiers xi have an array type declaration, 34 the containing arrays are: (*p0).x0[k1].p1->p2[k2].x1 and 35 (*p0).x0[k1].p1->p2[k2].x1[k3].x2. CHAPTER 1. INTRODUCTION 13
base array For C/C++,a containing array of a given Ivalue expression or array section that does 2 not appear in the expression of any of its other containing arrays. 4 For Fortran.a containing array of a given variable or array section that does not appear in the designator of any of its other containing arrays 5 COMMENT:For the array section (*p0).xo[kI].pl->p2[k2].x1[k3].x2[4][0:n].where identifiers pi have a > pointer type declaration and identifiers xi have an array type declaration. the base array is:(*p0).xO[k1].pl->p2[k2].x1[k3]x2. 8 named array For C/C++.a containing array of a given Ivalue expression or array section.or a containing array of one of its named pointers. 1 For Fortran,a containing array of a given variable or array section,or a containing 12 array of one of its named pointers. 3 COMMENT:For the array section 1516 the named arrays are:(p0).x0.(*p0).xo[k1].p1->p2[k2].x1.and 17 (*p0).x0k1pl->p2k2]x1k3]x2. base expression The base array of a given array section or array element,if it exists:otherwise.the 19 base pointer of the array section or array element. 2 COMMENT:For the array section (*po).xo[k1].p1->p2[k2].x1[k3].x2[4][0:n],where identifiers pi have a pointer type declaration and identifiers xi have an array type declaration, 23 the base expression is:(p0).xO[k1].pl->p2[k2].x1[k3].x2. 品 More examples for C/C++: 25 The base expression for x[i]and for x[i:n]is x,if x is an array or pointer. The base expression for x[5][i]and for x[5][i:n]is x,if x is a pointer to 27 an array or x is 2-dimensional array. 28 .The base expression for y[5][i]and for y[5][i:n]is y[5].if y is an array of pointers ory isa pointer to apointe 30 Examples for Fortran 37 The base expression for x(i)and for x(i:j)is x. 32 attached pointer A pointer variable in a device data environment to which the effect of a map clause 33 assigns the address of an object,minus some offset,that is created in the device data 4 35 the device data environment. g OpenMP API-Version 5.0 November 2018
1 base array For C/C++, a containing array of a given lvalue expression or array section that does 2 not appear in the expression of any of its other containing arrays. 3 For Fortran, a containing array of a given variable or array section that does not 4 appear in the designator of any of its other containing arrays. 5 COMMENT: For the array section 6 (*p0).x0[k1].p1->p2[k2].x1[k3].x2[4][0:n], where identifiers pi have a 7 pointer type declaration and identifiers xi have an array type declaration, 8 the base array is: (*p0).x0[k1].p1->p2[k2].x1[k3].x2. 9 named array For C/C++, a containing array of a given lvalue expression or array section, or a 10 containing array of one of its named pointers. 11 For Fortran, a containing array of a given variable or array section, or a containing 12 array of one of its named pointers. 13 COMMENT: For the array section 14 (*p0).x0[k1].p1->p2[k2].x1[k3].x2[4][0:n], where identifiers pi have a 15 pointer type declaration and identifiers xi have an array type declaration, 16 the named arrays are: (*p0).x0, (*p0).x0[k1].p1->p2[k2].x1, and 17 (*p0).x0[k1].p1->p2[k2].x1[k3].x2. 18 base expression The base array of a given array section or array element, if it exists; otherwise, the 19 base pointer of the array section or array element. 20 COMMENT: For the array section 21 (*p0).x0[k1].p1->p2[k2].x1[k3].x2[4][0:n], where identifiers pi have a 22 pointer type declaration and identifiers xi have an array type declaration, 23 the base expression is: (*p0).x0[k1].p1->p2[k2].x1[k3].x2. 24 More examples for C/C++: 25 • The base expression for x[i] and for x[i:n] is x, if x is an array or pointer. 26 • The base expression for x[5][i] and for x[5][i:n] is x, if x is a pointer to 27 an array or x is 2-dimensional array. 28 • The base expression for y[5][i] and for y[5][i:n] is y[5], if y is an array 29 of pointers or y is a pointer to a pointer. 30 Examples for Fortran: 31 • The base expression for x(i) and for x(i:j) is x. 32 attached pointer A pointer variable in a device data environment to which the effect of a map clause 33 assigns the address of an object, minus some offset, that is created in the device data 34 environment. The pointer is an attached pointer for the remainder of its lifetime in 35 the device data environment. 14 OpenMP API – Version 5.0 November 2018
simply contiguous An array section that statically can be determined to have contiguous storage or that. 3 array section in Fortran.has the CONTIGUOUS attribute structure A structure is a variable that contains one or more variables g For C/C++:Implemented using struct types. For C++:Implemented using class types. For Fortran:Implemented using derived types 7 private variable With respect to a given set of task regions or SIMD lanes that bind to the same parallel region,a variable for which the name provides access to a different block of storage for each task region or SIMD lane. A variable that is part of another variable (as an array or structure element)cannot be 1 made private independently of other components 1 shared variable With respect to a given set of task regions that bind to the same parallel region.a variable for which the name provides access to the same block of storage for each task region. 15 A variable that is part of another variable (as an array or structure element)cannot be sh dependently of the other componehts,exce中6ai位0 data members of 18 threadprivate variable A variable that is replicated,one instance per thread,by the OpenMP 19 implementation.Its name then provides access to a different block of storage for each 20 thread. 22 Avriable that is part of another vari able(a made threadprivate independently of the other components.except for static data 23 members of C++classes 24 threadprivate memory The set of threadprivate variables associated with each thread. 25 data environment The variables associated with the execution of a given region 26 device data The initial data environment associated with a device environment 27 device address An implementation-defined reference to an address in a device data environment 28 device pointer A variable that contains a device address. mapped variable An original variable in a data environment with a corresponding variable in a device 3 data environment 31 COMMENT:The original and corresponding variables may share storage. CHAPTER 1.INTRODUCTION 15
simply contiguous array section 1 An array section that statically can be determined to have contiguous storage or that, 2 in Fortran, has the CONTIGUOUS attribute. 3 structure A structure is a variable that contains one or more variables. 4 For C/C++: Implemented using struct types. 5 For C++: Implemented using class types. 6 For Fortran: Implemented using derived types. 7 private variable With respect to a given set of task regions or SIMD lanes that bind to the same 8 parallel region, a variable for which the name provides access to a different 9 block of storage for each task region or SIMD lane. 10 A variable that is part of another variable (as an array or structure element) cannot be 11 made private independently of other components. 12 shared variable With respect to a given set of task regions that bind to the same parallel region, a 13 variable for which the name provides access to the same block of storage for each 14 task region. 15 A variable that is part of another variable (as an array or structure element) cannot be 16 shared independently of the other components, except for static data members of 17 C++ classes. 18 threadprivate variable A variable that is replicated, one instance per thread, by the OpenMP 19 implementation. Its name then provides access to a different block of storage for each 20 thread. 21 A variable that is part of another variable (as an array or structure element) cannot be 22 made threadprivate independently of the other components, except for static data 23 members of C++ classes. 24 threadprivate memory The set of threadprivate variables associated with each thread. 25 data environment The variables associated with the execution of a given region. device data environment 26 The initial data environment associated with a device. 27 device address An implementation-defined reference to an address in a device data environment. 28 device pointer A variable that contains a device address. 29 mapped variable An original variable in a data environment with a corresponding variable in a device 30 data environment. 31 COMMENT: The original and corresponding variables may share storage. CHAPTER 1. INTRODUCTION 15
TABLE 1.1:Map-Type Decay of Map Type Combinations to from tofrom release delete alloc alloc allocalloc alloc release delete to alloc alloc to release delete from alloc alloc from from release delete tofrom I alloc I to from I tofrom release delete map-type decay The process used to determine the final map type when mapping a variable with a 2 deh the final map type that the combnation ofhe 45 mappable type A type that is valid for a mapped variable.If a type is composed from other types (such as the type of an array or structure element)and any of the other types are not 6 mappable then the type is not mappable. 7 8 COMMENT:Pointer types are mappable but the memory block to which the pointer refers is not mapped. 9 For C.the type must be a complete type. For C++,the type must be a complete type. 心 In addition.for class types: sed in any target region must appear in a 14 For Fortran,no restrictions on the type except that for derived types: 1 All type-bound procedures accessed in any target region must appear in a 16 declare target directive. 17 defined For variables.the property of having a valid value 18 For C.for the contents of variables,the property of having a valid value For C++,for the contents of variables of POD(plain old data)type,the property of 20 having a valid value. For variables of non-POD class type,the property of having been constructed but not 22 subsequentlydestructed 23 For Fortran,for the contents of variables,the property of having a valid value.For 24 the allocation or association status of variables,the property of having a valid status. 25 COMMENT:Programs that rely upon variables that are not defined are non-conforming programs 27 class type For C++.variables declared with one of the class,struct,or union keywords OpenMP API-Version 5.0 November 2018
TABLE 1.1: Map-Type Decay of Map Type Combinations alloc to from tofrom release delete alloc alloc alloc alloc alloc release delete to alloc to alloc to release delete from alloc alloc from from release delete tofrom alloc to from tofrom release delete 1 map-type decay The process used to determine the final map type when mapping a variable with a 2 user defined mapper. Table 1.1 shows the final map type that the combination of the 3 two map types determines. 4 mappable type A type that is valid for a mapped variable. If a type is composed from other types 5 (such as the type of an array or structure element) and any of the other types are not 6 mappable then the type is not mappable. 7 COMMENT: Pointer types are mappable but the memory block to which 8 the pointer refers is not mapped. 9 For C, the type must be a complete type. 10 For C++, the type must be a complete type. 11 In addition, for class types: 12 • All member functions accessed in any target region must appear in a 13 declare target directive. 14 For Fortran, no restrictions on the type except that for derived types: 15 • All type-bound procedures accessed in any target region must appear in a 16 declare target directive. 17 defined For variables, the property of having a valid value. 18 For C, for the contents of variables, the property of having a valid value. 19 For C++, for the contents of variables of POD (plain old data) type, the property of 20 having a valid value. 21 For variables of non-POD class type, the property of having been constructed but not 22 subsequently destructed. 23 For Fortran, for the contents of variables, the property of having a valid value. For 24 the allocation or association status of variables, the property of having a valid status. 25 COMMENT: Programs that rely upon variables that are not defined are 26 non-conforming programs. 27 class type For C++, variables declared with one of the class, struct, or union keywords. 16 OpenMP API – Version 5.0 November 2018