Research Article

Occam-pi for Programming of Massively Parallel Reconfigurable Architectures

Code Example 4

Simplified illustration of Design-I implementation of autofocus criterion calculation in .
PROC autofocus(VAL INT A, P, VAL REAL xintr, xinti, CHAN REAL dinp0?, dinp1?, CHAN REAL res!)
 [(A/P)*2] CHAN REAL doutp:
  [A*2] CHAN REAL32 soutp:
  [A*4] CHAN REAL routp:
  [A] CHAN REAL boutp:
  [A/2] CHAN REAL coutp:
 PAR
  datadist(A,dinp0?,doutp !,doutp !)
  PAR i=0 FOR ((A/P)-1)
   PAR j=0 FOR ((A/P)-1)
    PAR
     split(A,doutp[(i*2)+j]?,soutp[(i*3)+(j*3)]!,soutp[((i*3)+(j*3))+1]!,
         soutp[((i*3)+(j*3))+2]!)
     rangeintp1(xintr,xinti,soutp[(i*6)+(j*5)]?,routp[(i*12)+(j*11)]!)
     rangeintp2(xintr,xinti,soutp[((i*6)+(j*3))+1]?,routp[((i*12)+(j*8))+1]!,
         routp[((i*12)+(j*8))+2]!)
     rangeintp3(xintr,xinti,soutp[((i*6)+(j*1))+2]?,routp[((i*12)+(j*3))+3]!,
       routp[((i*12)+(j*3))+4]!,routp[((i*12)+(j*3))+5]!)
   PAR j=0 FOR (A/P)
    beamintp(xintr,xinti,routp[(i*12)+(j*4)]?,routp[((i*12)+(j*4))+1]!,
       routp[((i*12)+(j*4))+2]!,boutp[(i*3)+j]!)
  PAR j=0 FOR (A/P)
    corr(boutp[i]?,boutp[i+3]?,coutp[i]!)
  corrsum(coutp ?,coutp ?,coutp ?,res!)
: