User Tools

Site Tools


tiled_code_generator_dtiler

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
tiled_code_generator_dtiler [2014/12/11 19:50]
yun
tiled_code_generator_dtiler [2017/04/19 13:31] (current)
Line 1: Line 1:
-Tiling is an important program transformation that is used to improve data locality and parallelization granularity. We provide a tiled code generator that produces tiled code that tiles bands of the program dimensions, ​wavefront parallelization ​on shared memory machine ​is also supported+======Tiled Code Generator====== 
 +Tiling is an important program transformation that is used to improve data locality and parallelization granularity. We provide a tiled code generator that produces tiled code with wavefront parallelization ​supported for the shared memory machine. ​
  
 +===Usage===
 +Let's use the classic matrix multiplication as an illustration example, whose alphabets code is the following:
 +<sxh alphabets; gutter:​true>​
 +affine matrix_product {P, Q, R|P>0 && Q>0 && R>0}
 +       ​given ​ float A {i,k| 0<​=i<​P && 0<​=k<​Q};​
 +              float B {k,j| 0<​=k<​Q && 0<​=j<​R}; ​
 +     ​returns ​ float C {i,j,k| 0<​=i<​P && 0<​=j<​R && k==Q};
 +using
 +   float temp_C {i,​j,​k|0<​=i<​P && 0<​=j<​R && 0<​=k<​=Q};​
 +through
 +   ​temp_C[i,​j,​k] = case
 +                      {|k>​0} ​ : temp_C[i,​j,​k-1] + A[i,​k-1]*B[k-1,​j];​
 +                      {|k==0} : 0; 
 +                   esac;
 +   ​C ​     = temp_C;
 +.
 +</​sxh>​
  
 +The tiled code generator is called through ScheduledC, therefore, the first step for the code generation is the same with ScheduledC -- specify spacetime map and memory map. 
tiled_code_generator_dtiler.1418352654.txt.gz · Last modified: 2014/12/11 19:50 by yun