1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
# Compute Sends and receives for the following HPF fragment
I := { [i,j] : 1 <= i <= 14 && 0 <= j <= 14 };
X := { [i,j] -> [3i,3j] };
Y := { [i,j] -> [i',3j] : 3i-1 <= i'<= 3i};
A := { [i,j] -> [3i,3j] };
D := { [t1,t2] -> [p1,p2,c1,c2,l1,l2] :
t1 = 16c1+4p1+l1
&& t2 = 16c2+4p2+l2
&& 0 <= p1,p2 <= 3
&& 0 <= l1,l2 <= 3 };
P := { [p1,p2,c1,c2,l1,l2] -> [p1,p2]};
C := { [p1,p2,c1,c2,l1,l2] -> [p1,p2,c1,c2]};
own := P(D(A(X))) \I;
own;
need := D(A(Y)) \I;
need;
different := {[p1,p2] -> [q1,q2,c1,c2,l1,l2] : p1 != q1 || p2 != q2};
ship := (need compose (inverse own) ) intersection different;
symbolic P1,P2;
P := {[P1,P2]};
S := range (ship \ P);
S;
codegen S;
|