def _transmit(self, ctx): array.copy(ctx.accum, ctx.src[0]) for i in range(1, self.inum): array.radd(ctx.accum, ctx.srcs[i]) for i in range(self.onum): array.copy(ctx.dsts[i], ctx.accum)
def _backprop(self, ctx): array.copy(ctx.accum, ctx.dst[0]) for i in range(1, self.onum): array.radd(ctx.accum, ctx.dsts[i]) for i in range(self.inum): array.copy(ctx.srcs[i], ctx.accum)
def _backprop(self, ctx): if ctx.grad is not None: array.radd(ctx.grad.data, ctx.dst) array.copy(ctx.src, ctx.dst)