ADAPTOR Current State
ADAPTOR Input Language: Supported Distributions
ADAPTOR supports the following distributions:
-
block distribution: BLOCK, BLOCK(m)
- block supported in last dimension since version 1.0
- block supported in one dimension since version 2.0
- block full supported since version 3.0
- block(m) full supported since version 5.0
-
cyclic and block-cyclic distribution: CYCLIC, CYCLIC(m)
- cyclic, cyclic(1) full supported since version 3.0
- cyclic(m) supported since version 6.0
-
general block distribution: GEN_BLOCK (int_array)
- full supported since version 4.0
!hpf$ processors P(4)
real, dimension (100) :: A
integer, dimension (4) :: SIZE = (/10, 20, 30, 40/)
!hpf$ distribute (gen_block(SIZE)) onto P :: A
-
indirect distribution: INDIRECT (int_array)
- supported since version 6.0
!hpf$ processors P(4)
real, dimension (100) :: A
integer, dimension (100) :: MAP = (/1,3,4,3,3,2,1,4, ..../)
!hpf$ distribute (indirect(MAP)) onto P :: A
-
arbitrary distribution: ARBITRARY (n, int_array, int_array)
- originally defined by Moreira et al., A System for Dynamic Resource Allocation and Data Distribution.
IBM Research Report RC 20257, 1995.
- supported since version 6.0
- not specified in HPF 2.0 standard, but very useful for load balancing
and more efficient than indirect distributions
!hpf$ processors P(4)
real, dimension (100) :: A
integer, dimension (8) :: SIZES = (/10, 15, 10, 15, 10, 10, 10, 20/)
integer, dimension (8) :: MAP = (/ 1, 2, 4, 3, 3, 2, 4, 1/)
!hpf$ distribute (arbitrary(8, SIZES, MAP)) onto P :: A
The following restrictions are still given:
- If a dimension is CYCLIC(m), INDIRECT or ARBITRARY distributed, one
cannot align to this dimension with stride <> 1.
- Derived type components cannot be mapped.
- Pointers cannot be mapped.
|