Neural Net Forward Phase Array

Sanjay Rajopadhye

Colorado State University

SetDirectory["~svr/alpha/NeuralNets/CS560Spring2008"]

load["TwoPhases.a"];

analyze[]; show[]

getOccurs[reduce[___]]

serializeReduce[{6,1,2}, "YAcc.(p,n->p,n-1)"];

getOccurs[reduce[___]]

serializeReduce[{6,4,2}, "ZAcc.(m,p->m,p-1)"];

Now, let's try to do a few transformations without normalizing for some time.

schedule[scheduleType -> sameLinearPart]

show[]

So now we have to do the appropriate changes of bases to get the program to match our view (as drawn on the board).  We will use the non-square change-of basis to align the 1D variables into2D space.

?changeOfBasis

changeOfBasis["y1.(p->p,N+1)", {"p", "n"}];

changeOfBasis["y2.(p->p,N+2)", {"p", "n"}];

Now, let's see what the program looks like (we still haven't normalized it)

show[]

changeOfBasis["ZAcc.(m,p-> p,m+N+3)", {"p", "n"}];

normalize[]; simplifySystem[]; show[]

changeOfBasis["z1.(m->0,m+N+1)", {"p","n"}];

normalize[]; show[]

schedule[scheduleType -> sameLinearPart]

Why can't we find a schedule?  What if we don't constrain the scheduler?

schedule[];

Draw out the domains and the dependences, and I hope you will see.