Example 3-19, Strip mined code -33 – Intel ARCHITECTURE IA-32 User Manual

Page 213

Advertising
background image

Coding for SIMD Architectures

3

3-33

The main loop consists of two functions: transformation and lighting.
For each object, the main loop calls a transformation routine to update
some data, then calls the lighting routine to further work on the data. If
the size of array

v[Num]

is larger than the cache, then the coordinates for

v[i]

that were cached during

Transform(v[i])

will be evicted from

the cache by the time we do

Lighting(v[i])

. This means that

v[i]

will have to be fetched from main memory a second time, reducing
performance.

for (i=0; i<Num; i++) {

Lighting(v[i]);

}

....

}

Example 3-19 Strip Mined Code

main()

{

Vertex_rec v[Num];

....

for (i=0; i < Num; i+=strip_size) {

for (j=i; j < min(Num, i+strip_size); j++) {

Transform(v[j]);

}

for (j=i; j < min(Num, i+strip_size); j++) {

Lighting(v[j]);

}

}

}

Example 3-18 Pseudo-code Before Strip Mining (continued)

Advertising