# AlphaZ

### Site Tools

tiled_code_generator_dtiler

# Differences

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

 tiled_code_generator_dtiler [2014/12/11 19:44]yun created tiled_code_generator_dtiler [2017/04/19 13:31] (current) 2014/12/11 19:58 yun 2014/12/11 19:56 yun 2014/12/11 19:52 yun 2014/12/11 19:50 yun 2014/12/11 19:44 yun created Next revision Previous revision 2014/12/11 19:58 yun 2014/12/11 19:56 yun 2014/12/11 19:52 yun 2014/12/11 19:50 yun 2014/12/11 19:44 yun created Line 1: Line 1: - Tiling is an important program transformation that is used to improve data locality and parallelization granularity. ​ + ======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:​ + ​ + 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; + . + ​ + + 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.