Research Article

Task-Level Data Model for Hardware Synthesis Based on Concurrent Collections

Listing 15

Textual TLDM specification of tiled Cholesky.
<> :: (top_level) // top level task, single instance
{
<> :: [ data_type p ] ; // no domain for scalar variable
// data A [ p ] [ p] [ p+1 ]
[ p ] ->  <A_dom : a0,a1,a2> {0<=a0<p; 0<=a1<p; 0<=a2<p+1;};
<A_dom > :: [ array_A ] ;
// task seqCholesky
[ p ] -> < task1_dom:k>{0<=k<p;};
<task1_dom > :: (task1) {body_id(“seqCholesky”);};
[ A k , k , k ] -> (task1:k) - > [ A k , k , k + 1 ] ;
//task TriSolve
[ p ] ->  <task2_dom : k,j>{0 < = k<p; k+1 < = j<p;};
<task2_dom > :: (task2) {body_id(“TriSolve”);};
// task Update
[ p ] ->  <task3_dom:k,j,i > { 0 < = k<p; k+1 < = j<p; k+1 < = i < = j;};
<task3_dom > :: (task3) {body_id(“Update”);};
[ A j , k , k + 1 ] , [ A i , k , k + 1 ] -> (task3 : k,j,i) -> [ A j , i , k + 1 ] ;
//dependence
(task2 : k,j) -> (task3 : k,j,(k+1)..j)
} ;