fakultät für informatik informatik 12 technische universität dortmund optimizations peter...
TRANSCRIPT
![Page 1: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/1.jpg)
fakultät für informatikinformatik 12
technische universität dortmund
Optimizations
Peter MarwedelTU DortmundInformatik 12
Germany
2010/01/13
Gra
phic
s: ©
Ale
xand
ra N
olte
, Ges
ine
Mar
wed
el, 2
003
![Page 2: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/2.jpg)
- 2 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Structure of this course
2:Specification
3: ES-hardware
4: system software (RTOS, middleware, …)
8:Test
5: Validation & Evaluation (energy, cost, performance, …)
7: Optimization
6: Application mapping
App
licat
ion
Kno
wle
dge Design
repositoryDesign
Numbers denote sequence of chapters
![Page 3: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/3.jpg)
- 3 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Task-level concurrency management
Granularity: size of tasks (e.g. in instructions)
Readable specifications and efficient implementations can possibly require different task structures.
Granularity changes
![Page 4: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/4.jpg)
- 4 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Merging of tasks
Reduced overhead of context switches,More global optimization of machine code,Reduced overhead for inter-process/task communication.
![Page 5: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/5.jpg)
- 5 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Splitting of tasks
No blocking of resources while waiting for input,more flexibility for scheduling, possibly improved result.
![Page 6: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/6.jpg)
- 6 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Merging and splitting of tasks
The most appropriate task graph granularity depends upon the context merging and splitting may be required.
Merging and splitting of tasks should be done automatically, depending upon the context.
![Page 7: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/7.jpg)
- 7 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Automated rewriting of the task system- Example -
![Page 8: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/8.jpg)
- 8 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Attributes of a system that needs rewriting
Tasks blocking after they have already started running
![Page 9: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/9.jpg)
- 9 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Work by Cortadella et al.
1. Transform each of the tasks into a Petri net,2. Generate one global Petri net from the nets of the tasks,3. Partition global net into “sequences of transition”4. Generate one task from each such sequence
Mature, commercial approach not yet available
![Page 10: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/10.jpg)
- 10 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Result, as published by Cortadella
Reads only at the beginning
Initialization task
Always true
Nevertrue
![Page 11: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/11.jpg)
- 11 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Optimized version of Tin
Tin () {READ (IN, sample, 1);sum += sample; i++;DATA = sample; d = DATA;L0: if (i < N) return;DATA = sum/N; d = DATA;d = d*c; WRITE(OUT,d,1);sum = 0; i = 0;return;}
Always true
j==i-1j i
Never true
![Page 12: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/12.jpg)
- 12 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Task-level concurrency management (2)
The dynamic behavior of applications getting more attention.
Energy consumption reduction is the main target. Some classes of applications (i.e. video processing) have
a considerable variation in processing power requirements depending on input data.
Static design-time methods becoming insufficient. Runtime-only methods not feasible for embedded
systems.
How about mixed approaches?
![Page 13: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/13.jpg)
- 13 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Example of a mixed TCM
[IMEC, Belgium, http://www.imec.be/]
…or they can define a probability for violating the deadline.
t
Deadline
Task1
Task2
Task3
Static (compile-time) methods can ensure WCET feasible schedules, but waste energy in the average case.
t
E
Deadline
Runtime scheduler selects the most energy saving, deadline preserving combination.
t
Deadline
Mixed methods use compile-time analysis to define a set of possible execution parameters for each task.
![Page 14: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/14.jpg)
- 14 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Floating-point to fixed point conversion
Pros: Lower cost Faster Lower power consumption Sufficient SQNR, if properly scaled Suitable for portable applications
Cons: Decreased dynamic range Finite word-length effect, unless properly scaled
• Overflow and excessive quantization noise Extra programming effort
© Ki-Il Kum, et al. (Seoul National University): A Floating-point To Fixed-point C Converter For Fixed-point Digital Signal Processors, 2nd SUIF Workshop, 1996
![Page 15: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/15.jpg)
- 15 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Fixed-Point Data Format
S 1 0 0 . . . 0 0 0 0 1 0
hypothetical binary point
IWL=3
S 1 0 0 . . . 0 0 0 0 1 0
(a) Integer
(b) Fixed-Point
FWL
© Ki-Il Kum, et al
• Floating-Point vs. Fixed-Point• Floating-Point vs. Fixed-Point • Integer vs. Fixed-Point• Integer vs. Fixed-Point
exponent, mantissa Floating-Point
• automatic computation and update of each exponent at run-time
Fixed-Point• implicit exponent• determined off-line
exponent, mantissa Floating-Point
• automatic computation and update of each exponent at run-time
Fixed-Point• implicit exponent• determined off-line
![Page 16: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/16.jpg)
- 16 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Assignment and Addition/Subtraction
Assume y = x, with-x (IWL=2) and-y (IWL=3):
s
s
x
x>>1
y
s
Let result = x + y:
equalizing each IWL
sy
sresult
+
© Ki-Il Kum, et al
s
x
x>>1
s
![Page 17: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/17.jpg)
- 17 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Multiplication
Assume result = x * y, with-x (IWL=2) and-y (IWL=3)-> result (IWL=2+3)
s
x
* y
s
s
result
© Ki-Il Kum, et al
s
s
![Page 18: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/18.jpg)
- 18 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Development Procedure
Range EstimationC Program
Execution
Floating-PointC Program
Fixed-PointC Program
Floating-Point to
Fixed-PointC Program Converter
RangeEstimator
Manualspecification
IWL information
© Ki-Il Kum, et al
![Page 19: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/19.jpg)
- 19 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Range Estimator
C pre-processor
C front-end
ID assignment
Subroutine call insertion
SUIF-to-C converter
Floating-PointC Program
Range EstimationC Program
IWLInformation
Execution
float iir1(float x){ static float s = 0; float y;
y = 0.9 * s + x; range(y, 0); s = y; range(s, 1);
return y;}
float iir1(float x){ static float s = 0; float y;
y = 0.9 * s + x; range(y, 0); s = y; range(s, 1);
return y;}
Range Estimation C Program
© Ki-Il Kum, et al
![Page 20: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/20.jpg)
- 20 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Operations in fixed point program
0.9 x 215siwl=4.xxxxxxxxxxxx
*
+
xiwl=0.xxxxxxxxxxxx
>>5overflow if
result
![Page 21: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/21.jpg)
- 21 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Floating-Point to Fixed-Point Program Converter
int iir1(int x){ static int s = 0; int y; y=sll(mulh(29491,s)+ (x>> 5),1); s = y; return y;}
Fixed-Point C Program
mulh to access the upper
half of the multiplied result
target dependent implementation
sll to remove 2nd sign bit opt. overflow check
© Ki-Il Kum, et al
![Page 22: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/22.jpg)
- 22 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Performance Comparison- Machine Cycles -
Fourth Order IIR Filter
215
2980
0
1000
2000
3000
4000
Fixed-Point (16b) Floating-Point
Cycles
© Ki-Il Kum, et al
![Page 23: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/23.jpg)
- 23 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Performance Comparison- Machine Cycles -
ADPCM
26718
61401
125249
020000400006000080000
100000120000140000
Fixed-Point(16b)
Fixed-Point(32b)
Floating-Point
Cycles
© Ki-Il Kum, et al
![Page 24: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/24.jpg)
- 24 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Performance Comparison- SNR -
ADPCM
0
5
10
15
20
25
A B C D
SNR (dB)
Fixed-Point (16b)Fixed-Point (32b)Floating-Point
© Ki-Il Kum, et al
![Page 25: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/25.jpg)
fakultät für informatikinformatik 12
technische universität dortmund
High-level software transformations
Peter MarwedelTU DortmundInformatik 12
Germany
Gra
phic
s: ©
Ale
xand
ra N
olte
, Ges
ine
Mar
wed
el, 2
003
![Page 26: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/26.jpg)
- 26 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Impact of memory allocation on efficiency
Array p[j][k]Row major order (C)
Column major order (FORTRAN)
j=0
j=1
j=2
…
…
k=0
k=1
k=2
j=0
j=1
…
j=0
j=1
…
j=0
j=1
…
![Page 27: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/27.jpg)
- 27 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Best performance if innermost loop corresponds to rightmost array index
Two loops, assuming row major order (C):for (k=0; k<=m; k++) for (j=0; j<=n; j++) for (j=0; j<=n; j++) ) for (k=0; k<=m; k++) p[j][k] = ... p[j][k] = ...
For row major order
j=0
j=1
j=2
Good cache behavior Poor cache behavior
Same behavior for homogeneous memory access, but:
memory architecture dependent optimization
![Page 28: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/28.jpg)
- 28 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Program transformation “Loop interchange”
(SUIF interchanges array indexes instead of loops)
Improved localityExample:…#define iter 400000int a[20][20][20];void computeijk() {int i,j,k;
for (i = 0; i < 20; i++) {for (j = 0; j < 20; j++) {
for (k = 0; k < 20; k++) {a[i][j][k] += a[i][j][k];}}}}
void computeikj() {int i,j,k;for (i = 0; i < 20; i++) {
for (j = 0; j < 20; j++) {for (k = 0; k < 20; k++) {
a[i][k][j] += a[i][k][j] ;}}}}…start=time(&start);for(z=0;z<iter;z++)computeijk();
end=time(&end); printf("ijk=%16.9f\n",1.0*difftime(end,start));
![Page 29: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/29.jpg)
- 29 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Results:strong influence of the memory architecture
Loop structure: i j k
Tim
e [s
]
[Till Buchwald, Diploma thesis, Univ. Dortmund, Informatik 12, 12/2004]
Ti C6xx~ 57%
Intel Pentium3.2 %
Sun SPARC35%
Processorreduction to [%]
Dramatic impact of locality
Not always the same impact ..
![Page 30: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/30.jpg)
- 30 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Transformations“Loop fusion” (merging), “loop fission”
for(j=0; j<=n; j++) for (j=0; j<=n; j++) p[j]= ... ; {p[j]= ... ;for (j=0; j<=n; j++) , p[j]= p[j] + ...} p[j]= p[j] + ...
Loops small enough to Better locality for allow zero overhead access to p.Loops Better chances for
parallel execution.
Which of the two versions is best?Architecture-aware compiler should select best version.
![Page 31: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/31.jpg)
- 31 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Example: simple loops
void ss1() {int i,j; for (i=0;i<size;i++){ for (j=0;j<size;j++){ a[i][j]+= 17;}} for(i=0;i<size;i++){ for (j=0;j<size;j++){ b[i][j]-=13;}}}
void ms1() {int i,j; for (i=0;i< size;i++){ for (j=0;j<size;j++){ a[i][j]+=17; } for (j=0;j<size;j++){ b[i][j]-=13; }}}
void mm1() {int i,j; for(i=0;i<size;i++){ for(j=0;j<size;j++){ a[i][j] += 17; b[i][j] -= 13;}}}
#define size 30#define iter 40000int a[size][size];float b[size][size];
#define size 30#define iter 40000int a[size][size];float b[size][size];
![Page 32: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/32.jpg)
- 32 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Results: simple loops
Runtime
0
20
40
60
80
100
120
X86 gcc 3.2 -03 x86 gcc 2.95 -o3 Sparc gcc 3xo1 Sparc gcc 3x o3
Plattform
%
Merged loops superior; except Sparc with –o3
Merged loops superior; except Sparc with –o3
ss1
ms1
mm1
(100% ≙ max)
![Page 33: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/33.jpg)
- 33 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Loop unrolling
for (j=0; j<=n; j++) p[j]= ... ;
for (j=0; j<=n; j+=2) {p[j]= ... ; p[j+1]= ...}
factor = 2Better locality for access to p.Less branches per execution of the loop. More opportunities for optimizations.Tradeoff between code size and improvement. Extreme case: completely unrolled loop (no branch).
![Page 34: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/34.jpg)
- 34 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Example: matrixmult
#define s 30#define iter 4000int a[s][s],b[s][s],c[s][s];void compute(){int i,j,k; for(i=0;i<s;i++){ for(j=0;j<s;j++){ for(k=0;k<s;k++){ c[i][k]+= a[i][j]*b[j][k];}}}}
extern void compute2() {int i, j, k; for (i = 0; i < 30; i++) { for (j = 0; j < 30; j++) { for (k = 0; k <= 28; k += 2) {{int *suif_tmp; suif_tmp = &c[i][k]; *suif_tmp= *suif_tmp+a[i][j]*b[j][k];} {int *suif_tmp; suif_tmp=&c[i][k+1]; *suif_tmp=*suif_tmp +a[i][j]*b[j][k+1]; }}}} return;}
![Page 35: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/35.jpg)
- 35 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Results
Ti C6xx
Intel PentiumSun SPARCProcessor
Benefits quite small; penalties may be large [Till Buchwald, Diploma thesis, Univ. Dortmund, Informatik 12, 12/2004]
factorfactor
![Page 36: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/36.jpg)
- 36 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Results: benefits for loop dependences
Small benefits;
Ti C6xx
Processorreduction to [%]
#define s 50#define iter 150000int a[s][s], b[s][s];void compute() { int i,k; for (i = 0; i < s; i++) { for (k = 1; k < s; k++) { a[i][k] = b[i][k]; b[i][k] = a[i][k-1];}}}
[Till Buchwald, Diploma thesis, Univ. Dortmund, Informatik 12, 12/2004]
factor
![Page 37: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/37.jpg)
- 37 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Program transformationLoop tiling/loop blocking: - Original version -
for (i=1; i<=N; i++)for(k=1; k<=N; k++){
r=X[i,k]; /* to be allocated to a register*/for (j=1; j<=N; j++)
Z[i,j] += r* Y[k,j]} % Never reusing information in the cache for Y and Z if N
is large or cache is small (2 N³ references for Z).
j++
k++
i++ j++
k++
i++
j++
k++
i++
![Page 38: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/38.jpg)
- 38 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Loop tiling/loop blocking- tiled version -
for (kk=1; kk<= N; kk+=B) for (jj=1; jj<= N; jj+=B) for (i=1; i<= N; i++) for (k=kk; k<= min(kk+B-1,N); k++){ r=X[i][k]; /* to be allocated to a register*/ for (j=jj; j<= min(jj+B-1, N); j++) Z[i][j] += r* Y[k][j] }
Reuse factor of B for Z, N for Y
O(N³/B) accesses to main memory
k++, j++
jj
kk
j++
k++
i++
jj
k++
i++
Same elements for next iteration of i
Compiler should select best option
Monica Lam: The Cache Performance and Optimization of Blocked Algorithms, ASPLOS, 1991
![Page 39: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/39.jpg)
- 39 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Example
In practice, results by Buchwald are disappointing.One of the few cases where an improvement was achieved:Source: similar to matrix mult.
[Till Buchwald, Diploma thesis, Univ. Dortmund, Informatik 12, 12/2004]
Tiling-factor
SPARC
Pentium
![Page 40: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/40.jpg)
- 40 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Transformation “Loop nest splitting”
Example: Separation of margin handling
+
many if-statements for margin-checking
no checking,efficient
only few margin elements to be processed
![Page 41: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/41.jpg)
- 41 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
if (x>=10||y>=14) for (; y<49; y++) for (k=0; k<9; k++) for (l=0; l<9;l++ ) for (i=0; i<4; i++) for (j=0; j<4;j++) { then_block_1; then_block_2}else {y1=4*y; for (k=0; k<9; k++) {x2=x1+k-4; for (l=0; l<9; ) {y2=y1+l-4; for (i=0; i<4; i++) {x3=x1+i; x4=x2+i; for (j=0; j<4;j++) {y3=y1+j; y4=y2+j; if (0 || 35<x3 ||0 || 48<y3) then-block-1; else else-block-1; if (x4<0|| 35<x4||y4<0||48<y4) then_block_2; else else_block_2;}}}}}}
Loop nest splitting at University of DortmundLoop nest from MPEG-4 full search motion estimation
for (z=0; z<20; z++) for (x=0; x<36; x++) {x1=4*x; for (y=0; y<49; y++) {y1=4*y; for (k=0; k<9; k++) {x2=x1+k-4; for (l=0; l<9; ) {y2=y1+l-4; for (i=0; i<4; i++) {x3=x1+i; x4=x2+i; for (j=0; j<4;j++) {y3=y1+j; y4=y2+j; if (x3<0 || 35<x3||y3<0||48<y3) then_block_1; else else_block_1; if (x4<0|| 35<x4||y4<0||48<y4) then_block_2; else else_block_2;}}}}}}
for (z=0; z<20; z++) for (x=0; x<36; x++) {x1=4*x; for (y=0; y<49; y++)
analysis of polyhedral domains, selection with genetic algorithm
[H. Falk et al., Inf 12, UniDo, 2002]
![Page 42: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/42.jpg)
- 42 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Results for loop nest splitting- Execution times -
0%
10%
20%
30%
40%
50%
60%
70%
80%
90%
100%
110%Cavity Motion Estimation QSDPCM
[H. Falk et al., Inf 12, UniDo, 2002]
![Page 43: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/43.jpg)
- 43 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Results for loop nest splitting- Code sizes -
[Falk, 2002]
0%
20%
40%
60%
80%
100%
120%
140%
160%
180%
200%Cavity Motion Estimation QSDPCM
![Page 44: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/44.jpg)
- 44 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Array folding
Initial arrays
![Page 45: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/45.jpg)
- 45 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Array folding
Unfolded arrays
Unfolded arrays
![Page 46: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/46.jpg)
- 46 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Inter-array folding
Intra-array folding
![Page 47: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/47.jpg)
- 47 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Application
Array folding is implemented in the DTSE optimization proposed by IMEC. Array folding adds div and mod ops. Optimizations required to remove these costly operations.
At IMEC, ADOPT address optimizations perform this task.For example, modulo operations are replaced by pointers (indexes) which are incremented and reset.
![Page 48: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/48.jpg)
- 48 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Results (Mcycles for cavity benchmark)
ADOPT&DTSE required to achieve real benefit
[C.Ghez et al.: Systematic high-level Address Code Transformations for Piece-wise Linear Indexing: Illustration on a Medical Imaging Algorithm, IEEE WS on Signal Processing System: design & implementation, 2000, pp. 623-632]
![Page 49: Fakultät für informatik informatik 12 technische universität dortmund Optimizations Peter Marwedel TU Dortmund Informatik 12 Germany 2010/01/13 Graphics:](https://reader036.vdocuments.site/reader036/viewer/2022062417/55204d6349795902118b8e57/html5/thumbnails/49.jpg)
- 49 -technische universitätdortmund
fakultät für informatik
p. marwedel, informatik 12, 2010
Summary
Task concurrency management• Re-partitioning of computations into tasks• Dynamic exploitation of slack
Floating-point to fixed point conversion• Range estimation• Conversion• Analysis of the results
High-level loop transformations• Fusion• Unrolling• Tiling• Loop nest splitting• Array folding