提交 917ce99d authored 作者: Razvan Pascanu's avatar Razvan Pascanu

functions that return the different kind of arguments of scan

After talking to Pascal we decided that having this kind of funcion can be quite useful, such that not every optimization does this splitting over and over again ( it is really easy to have bugs by either messing up the order or the count).
上级 35dabf14
...@@ -397,6 +397,125 @@ class Scan(Op): ...@@ -397,6 +397,125 @@ class Scan(Op):
rval.lazy = False rval.lazy = False
return rval return rval
def inner_seqs(self):
return self.inputs[:self.n_seqs]
def outer_seqs(self, node):
return node.inputs[1:1+self.n_seqs]
def inner_mitmot(self):
n_taps = sum(len(x) for x in self.tap_array[:self.n_mit_mot])
return self.inputs[self.n_seqs: self.n_seqs + n_taps]
def outer_mitmot(self, node):
return node.inputs[1+self.n_seqs:1+self.n_seqs+self.n_mit_mot]
def inner_mitmot_outs(self):
n_taps = sum(len(x) for x in self.mit_mot_out_slices)
return self.outputs[:n_taps]
def outer_mitmot_outs(self, node):
return node.outputs[:self.n_mit_mot]
def mitmot_taps(self):
return self.tap_array[:self.n_mit_mot]
def mitmot_out_taps(self):
return self.mit_mot_out_slices[:self.n_mit_mot]
def inner_mitsot(self):
n_mitmot_taps = sum(len(x) for x in self.tap_array[:self.n_mit_mot])
ntaps_upto_sit_sot = sum(len(x) for x in
self.tap_array[:(self.n_mit_mot +
self.n_mit_sot)])
return self.inputs[self.n_seqs+n_mitmot_taps:
self.n_seqs+ntaps_upto_sit_sot]
def outer_mitsot(self, node):
offset = 1+self.n_seqs+self.n_mit_mot
return node.inputs[offset:offset+self.n_mit_sot]
def inner_mitsot_outs(self):
n_taps = sum(len(x) for x in self.mit_mot_out_slices)
return self.outputs[n_taps:n_taps+self.n_mit_sot]
def outer_mitsot_outs(self, node):
return node.outputs[self.n_mit_mot:self.n_mit_mot+self.n_mit_sot]
def mitsot_taps(self):
return self.tap_array[self.n_mit_mot:self.n_mit_mot+self.n_mit_sot]
def inner_sitsot(self):
n_taps_upto_sit_sot = sum(len(x) for x in
self.tap_array[:(self.n_mit_mot +
self.n_mit_sot)])
offset = self.n_seqs + n_taps_upto_sit_sot
return self.inputs[offset:offset+self.n_sit_sot]
def outer_sitsot(self,node):
offset = 1+self.n_seqs+self.n_mit_mot + self.n_mit_sot
return node.inputs[offset:offset+self.n_sit_sot]
def inner_sitsot_outs(self):
n_taps = sum(len(x) for x in self.mit_mot_out_slices)
offset = self.n_mit_sot + n_taps
return self.outputs[offset:offset+self.n_sit_sot]
def outer_sitsot_outs(self, node):
offset = self.n_mit_mot + self.n_mit_sot
return node.outputs[offset:offset+self.n_sit_sot]
def outer_nitsot(self, node):
offset = (1 + self.n_seqs+self.n_mit_mot + self.n_mit_sot +
self.n_sit_sot + self.n_shared_outs)
return node.inputs[offset:offset+self.n_nit_sot]
def inner_nitsot_outs(self):
n_taps = sum(len(x) for x in self.mit_mot_out_slices)
offset = self.n_mit_sot + n_taps + self.n_sit_sot
return self.outputs[offset:offset+self.n_nit_sot]
def outer_nitsot_outs(self, node):
offset = (self.n_mit_mot + self.n_mit_sot + self.n_sit_sot)
return node.outputs[offset:offset+self.n_nit_sot]
def inner_shared(self):
n_taps_upto_sit_sot = sum(len(x) for x in
self.tap_array[:(self.n_mit_mot +
self.n_mit_sot)])
offset = self.n_seqs + n_taps_upto_sit_sot + self.n_sit_sot
return self.inputs[offset:offset+self.n_shared_outs]
def outer_shared(self, node):
offset = (1 + self.n_seqs+self.n_mit_mot + self.n_mit_sot +
self.n_sit_sot)
return node.inputs[offset:offset+self.n_shared_outs]
def inner_shared_outs(self):
n_taps = sum(len(x) for x in self.mit_mot_out_slices)
offset = self.n_mit_sot + n_taps + self.n_sit_sot + self.n_nit_sot
return self.outputs[offset:offset+self.n_shared_outs]
def outer_shared_outs(self, node):
offset = ( self.n_mit_mot + self.n_mit_sot + self.n_sit_sot +
self.n_nit_sot)
return node.outputs[offset:offset+self.n_shared_outs]
def inner_non_seqs(self):
n_taps_upto_sit_sot = sum(len(x) for x in
self.tap_array[:(self.n_mit_mot +
self.n_mit_sot)])
offset = (self.n_seqs + n_taps_upto_sit_sot + self.n_sit_sot +
self.n_shared_outs)
return self.inputs[offset:]
def outer_non_seqs(self, node):
offset = ( 1+ self.n_seqs + self.n_mit_mot + self.n_mit_sot +
self.n_sit_sot + self.n_nit_sot + self.n_shared_outs)
return node.inputs[offset:]
def perform( self, node, args, outs): def perform( self, node, args, outs):
""" """
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论