Home My Page Projects Code Snippets Project Openings diderot
Summary Activity Tracker Tasks SCM

SCM Repository

[diderot] Diff of /branches/charisee/src/compiler/high-to-mid/probe.sml
ViewVC logotype

Diff of /branches/charisee/src/compiler/high-to-mid/probe.sml

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2416, Mon Aug 19 12:57:45 2013 UTC revision 2417, Mon Aug 19 14:15:03 2013 UTC
# Line 270  Line 270 
270    
271      fun evalPosition(position)=let      fun evalPosition(position)=let
272    
273          fun generate(0, body, param, args)=          fun generate(0, deltas',body, param, args)=
274              let              let
275                  val k=evalDelta(0 ,deltas)                  val k=evalDelta(0 ,deltas')
276                  val x= DstOp.EvalKernel(2*s, h, 0, k)                  val x= DstOp.EvalKernel(2*s, h, 0, k)
277    
278                  val arg= assign(v, x, position[0])                  val arg= assign(v, x, position[0])
279              in args@ [arg] end              in
280                    (body@[E.Tensor(id,[])],  param@[E.TEN], args@[arg])
281          (* (body@[E.Tensor(id,[])],  param@[E.TEN], args@arg) end*)              end
282    
283          | generate(i, body, param, args)=          | generate(i, deltas',body, param, args)=
284              let              let
285                  val k=evalDelta(i ,deltas)                  val k=evalDelta(i ,deltas')
286                  val x= DstOp.EvalKernel(2*s, h, i, k)                  val x= DstOp.EvalKernel(2*s, h, i, k)
287    
288                  val arg= assign(v, x, position[i])                  val arg= assign(v, x, position[i])
289              in   generate(i-1, body@[E.Tensor(id,[])],  param@[E.TEN], args@[arg]) end              in   generate(i-1,deltas', body@[E.Tensor(id,[])],  param@[E.TEN], args@[arg]) end
290    
291    
292    
293          val (body, param, args)=generate(dimk, [],[],[])  
294            fun onedirection(0,code)=code
295            | onedirection(direction,code) =let
296                        (*deltas-> deltas' need to be rewritten to reflect direction
297                            Delta(i, j)=> i, is kenel,j is direction of result.
298                        *)
299                    val (body, param, args)=generate(dimk, deltas',[],[],[])
300    
301          val einexp=E.EIN{          val einexp=E.EIN{
302                  params=param @ [E.FLD, E.TEN]                  params=param @ [E.FLD, E.TEN]
# Line 299  Line 307 
307          val r=S.transform(EinOp.Probe,[dimk])          val r=S.transform(EinOp.Probe,[dimk])
308          val t=R.App(r, [img, position])          val t=R.App(r, [img, position])
309          val t'=R.App(einexp, args@ [t])          val t'=R.App(einexp, args@ [t])
310          in  t' end              in  onedirection(direction-1,code@[t']) end
311    
312        in
313            ondirection(dimk, [])
314        end
315    
316    
317      (*      (*
318      call evalPosition on each position      on
319            returns code, where each element is a direction in result
320      val positionE=evalPosition(position)      val positionE=evalPosition(position)
321     val e= S.transform(EinOp.AddTensor,dim)     val e= S.transform(EinOp.AddTensor,dim)
322      in R.App(e, positionE) end      in R.App(e, positionE) end
# Line 313  Line 325 
325    
326    
327    
328      (*using sum hmm*)      (*using sum hmmmm
329      fun generate( paramk, indexk, bodyk, argk,0)=      fun generate( paramk, indexk, bodyk, argk,0)=
330          let          let
331             val einexp= E.EIN{             val einexp= E.EIN{
# Line 335  Line 347 
347    
348    
349    
     (*Add each tensors*)  
350      in      in
351    
352    
353      generate([],[],[], [],dimk)      generate([],[],[], [],dimk)
354        *)
355    
356  end  end
357    end    end

Legend:
Removed from v.2416  
changed lines
  Added in v.2417

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0