MCPcopy Index your code
hub / github.com/pytorch/pytorch / _MakeDenseSumOps

Method _MakeDenseSumOps

caffe2/python/core.py:800–832  ·  view source on GitHub ↗
(self, generators, out_base_name)

Source from the content-addressed store, hash-verified

798 'input gradient.')
799
800 def _MakeDenseSumOps(self, generators, out_base_name):
801 sum_op_input = []
802 cnt = 0
803
804 assert len(generators) > 1
805
806 first_grad_op = True
807 for generator in generators:
808 grad_op, idx, g, _ = generator
809 assert(type(g) is not GradientSlice)
810 if grad_op:
811 if first_grad_op:
812 first_grad_op = False
813 out = grad_op.output[idx]
814 else:
815 out, cnt = self._DisambiguateGradOpOutput(grad_op, idx, cnt)
816 sum_op_input.append(out)
817 else:
818 self._CheckSumOpsConflict(out_base_name, g)
819 sum_op_input.append(str(g))
820
821 if out_base_name in sum_op_input:
822 # Sum inplace mode works only for the first input
823 # So we do a swap
824 idx = sum_op_input.index(out_base_name)
825 sum_op_input[0], sum_op_input[idx] = (
826 sum_op_input[idx], sum_op_input[0]
827 )
828 sum_ops = [CreateOperator(
829 "Sum",
830 [BlobReference(x) for x in sum_op_input],
831 BlobReference(out_base_name))]
832 return sum_ops, out_base_name
833
834 def _MakeSparseSumOps(self, generators, out_base_name):
835 indices_concat_input = []

Callers 1

_MakeSumOpsMethod · 0.95

Calls 6

_CheckSumOpsConflictMethod · 0.95
CreateOperatorFunction · 0.85
BlobReferenceClass · 0.85
appendMethod · 0.45
indexMethod · 0.45

Tested by

no test coverage detected