Title: FADA: Fuzzy Array Dataflow Analysis. ADaAn: Array Dataflow Analyzer.
1FADA Fuzzy Array Dataflow Analysis. ADaAn
Array Dataflow Analyzer.
By M. BELAOUCHAbem_at_prism.uvsq.fr
- Work directed by D. Barthou and S. Touati
- PRiSM laboratory - University of Versailles
- ARPA-informal seminar
- 19/02/2008
2Introduction
- Technological barrier reached (soon ?)
- Parallelization
- Automatic (icc,)
- Bad detection Padua, 2001, 2006
- Led by directives (OpenMP, MPI,)
- Parallelism detection
- We need an efficient Dataflow analysis method.
3Outline
- FADA
- Exact analysis
- Fuzzy Analysis (FADA)
- FADA Vs. State-of-art
- Applications parallel work
- Implementation ADaAn
- Conclusion
4Dependence Analysis, the Evolution
Parametric Integer Programming (PIP)
Feautriers Exact Analysis
Fuzzy Analysis FADA
Exact Analysis (PETIT)
Adaptation of PETIT
Parametric solver (Omega)
1990
1995
2000
ZIV, MIV, GCD, BanerjeeTest
Region Analysis (PIPS)
Hybrid Analysis (Polaris)
5Exact Analysis (Feautriers modeling)
Array Dataflow Analysis (ADA)
Which Operation writes the value of Ti,j read
by S1 during iteration (ir, jr, kr) ?
for (i1 iltN i) for (j1 jltM
j) S0 Ti,j0 for (k1 kltL
k) S1 Ti,j Ti,j Ai,kBk,j
ADA works only for static control programs
P. Feautrier Dataflow Analysis of scalar and
array references. International Journal of
Parallel Computing, 20(1)23-53, 1991.
6FADA (Fuzzy Array Dataflow Analysis)
Can ltS0,iwgt be the source of A read by ltS2,irgt ?
for (i1 iltN i) if( c(i) ) S0
A else S1 A
endif S2 A endfor
J-F. Collard, D. Barthou, P. Feautrier. Fuzzy
Array dataflow analysis. ACM Symp. On Principles
and Practice of Parallel Programming,
30(8)29-101, Aug. 1995.
7Reducing Fuzziness
8Structural Analysis
FADA proves, there is no dependence carried by
the i-loop
for (i1 iltN i) if( c(i) ) S0
A else S1 A
endif S2 A
endfor
Structural property of an if-then-else construct
One and only one branch can be executed during a
given iteration.
FADA can deduce that the value of A read by
S2 is produced during the same iteration by S0
or S1.
9Iterative Analysis
Improved Version
iterative analysis compare two non-affine
constraints by comparing the source of referenced
variables (Here, A-cells).
FADA proves, there is no dependence at all
for (i1 iltN i) if (Ai-1) S0
Bi-1 if(!Ai) S1 Bi
- FADAs inference
- May be there is a confilct on Bi, between S0
during i1, and S1 during i. - FADA Compares if-conditions, and deduces
- S0 can not be executed during iteration i1 if S1
was executed during i. (for kgt0 or klt1)
Aik
FADA can deduce source of B-cells, read by
S0, can not be an S1 operation.
10Translating Properties
- A demonstrator, with external/internal knowledge
(iterative analysis, structural analysis,) - Desired cases
- Obtain trivial values true/false
- Interpret all non affine constraints (and solve
the rest using a parametric solver)
11FADA, a global view
Program
basic analysis
- advanced analyses
- Structural analysis
- Iterative analysis
- Translating properties
Parameterized Definitions
Exact Definitions
12Hybrid Analysis
Rus Rauchwerger Work
Regions
DS out, anti,flow
Program
USR
USR
DS
No
Yes
- Statically
- Building Regions, Ds And predicate DSEmpty
- Dynamically
- Check the predicate and branch to the correct
version
PDAG
Sequential Version
Parallel Version
USR Uniform Sets of References PDAG Predicate
Directed Acyclic Graph DS dependencies Set RO
Read Only WR Write first (write, read) RW Read
first (read, write).
13Hybrid Analysis Vs. Fuzzy Analysis
HA FADA
Input restrictions -no while loops support (Warning). -no aliasing -no aliasing
Method Region-computation based Instance-wise Seek-definitions based
Assertion Code generation Theoretically Well defined Less defined.
Interprocedural Natural Passes by summarizing
Albert dont agree, I think that recurrence
operator (On USR sets) do not handle while loops
(the operator requires upper and lower bounds).
14FADA Vs. State of the art
While and if-then construct handling Comparing non affine entities Dynamic analysis
PIPS Yes No No
PETIT Yes No No
FADA Yes Yes, and all analysis will be done statically. No
HA Yes Yes, but comparison will be performed dynamically. Yes
15Outline
- FADA
- Applications parallel work
- Parallelism detection
- Improving communications
- Source to source transformations
- Implementation ADaAn
- Conclusion
16FADAs Applications
1. Parallelism detection
No dependence carried by the i-loop
No dependence at all
for (i1 iltN i) if( c(i) ) S0
A else S1 A
endif S3 A
endfor
for (i1 iltN i) if (Ai-1)
Bi-1 Ai-2 if(!Ai)
Bi
Example 1
Example 2
17Applications
2. Improve synchronizations and communications
pragma omp parallel cyclic for (i1 iltN
i) j0 while (f(Ai,j))
Baf(i),bj j pragma
omp parallel cyclic for (i1 iltN i)
j0 while (f(Ai,j))
Baf(i),bj j
We can remove the implicit barrier
18Applications
3. Source-to-source transformations
pragma unroll(2) merge(while) for() j0 while(q(i,j)) ai ai j for() j0 while(q(i,j) q(i1,j)) aiai ai1ai1 j while(q(i,j)) ai ai j while(q(i1,j)) ai1 ai1 j
A simplified deep-jam example
19Irregular code transformation
Main idea
G
G
20Outline
- FADA
- Applications parallel work
- ADaAn
- Input
- Preprocessing
- output
- Conclusion
21ADaAn (Array Dataflow Analyzer)
Overview
Program
Preprocessing
FADAs basic analysis
PIPlib
BeeCl_at_ck
Polylib
FADAs advanced analyses
SWI-PROLOG
Verification code
Definitions
Dependence graph
22ADaAn (Array Dataflow Analyzer)
Overview
Program
Preprocessing
FADAs basic analysis
PIPlib
BeeCl_at_ck
Polylib
FADAs advanced analyses
SWI-PROLOG
Verification code
Definitions
Dependence graph
23ADaAn
Output
Program
Preprocessing
FADAs basic analysis
PIPlib
BeeCl_at_ck
Polylib
FADAs advanced analyses
SWI-PROLOG
Verification code
Definitions
Dependence graph
24ADaAn
In progress
- Achieved
- Basic analysis
- Structural Analysis
- In progress
- Parametric PROLOG-like demonstrator (for
Iterative analysis and Translating properties)