...
Identify a set of source elements in
pDimPar
dimension - this applies if there was a parameter filter specified forpDimPar
when running the processMake a set in a dimension of target cube equivalent to
pDimPar
by projection from the source set by utilizing mapping attributesApply modulo allocation algorithm on the target dimension set to allocate target dimension elements to threads
Use mapping attribute to prepare set of source elements in
pDimPar
- the set will reflect the element allocation to threads provided in previous step
Let’s explore the above algorithm on following example:
The number of working threads
pMaxThreads
is set to4
, main thread is not participating in the data processing. Child threads havepThreadID
set to1
,2
and3
. There was a filter applied through process parameter that restrictedpDimPar
element range. Its value was set toA+B+C+D+E+F+G+H+I+J+K+M
pDimPar
dimension elements (source cube):A
,B
,C
,D
,E
,F
,G
,H
,I
,J
,K
,L
,M
,N
,O
,P
Equivalent dimension elements (target cube):
a
,d
,h
,m
Mapping between pDimPar and the equivalent dimension:
pDimPar |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Equivalent |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ad 1) Source set of elements in pDimPar
:
The filter that has been used for elements in
pDimPar
was:A+B+C+D+E+F+G+H+I+J+K+M
The set of source elements is
A
,B
,C
,D
,E
,F
,G
,H
,I
,J
,K
,L
,M
ad 2) Target elements in equivalent dimension to pDimPar
:
Set in equivalent dimension to
pDimPar
is:a
,d
,h
,m
ad 3) Modulo algorithm applied on set as derived in step 2:For the example below, the number of working threads pMaxThreads
is set to 4
, main thread is not participating in the data processing. Child threads have pThreadID
set to 1
, 2
and 3
. For simplicity elements in parallel dimension have symbolic names
Element | a | d | h | m |
---|---|---|---|---|
pThreadID | 1 | 2 | 3 | 1 |
ad 4) Apply mapping on set from step 3) and project pThreadID
to source set of elements in pDimPar
from step 1:
pDimPar |
|
|
|
|
|
|
|
|
|
|
|
|
|
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Equivalent |
|
|
|
|
|
|
|
|
|
|
|
|
|
pThreadID |
|
|
|
|
|
|
|
|
|
|
|
|
|
We can now create list of elements that were assigned to each worker thread:
| Assigned Elements from Equivalent Dimension to | Assigned Elements from |
---|---|---|
|
| |
| a, m |
|
| d |
|
...
| h |
|
...
, |