MCPcopy Index your code
hub / github.com/tinygrad/tinygrad / addmulsub_kernel

Method addmulsub_kernel

test/unit/test_gradient.py:147–153  ·  view source on GitHub ↗
(C:UOp, D:UOp, E:UOp, A:UOp, B:UOp)

Source from the content-addressed store, hash-verified

145
146 def test_custom_kernel_three_output_backward(self):
147 def addmulsub_kernel(C:UOp, D:UOp, E:UOp, A:UOp, B:UOp) -> UOp:
148 C, D, E, A, B = C.flatten(), D.flatten(), E.flatten(), A.flatten(), B.flatten()
149 i = UOp.range(C.numel(), 0)
150 store_c = C[i].store(A[i] + B[i])
151 store_d = D[i].store(A[i] * B[i])
152 store_e = E[i].store(A[i] - B[i])
153 return UOp.group(store_c, store_d, store_e).end(i).sink(arg=KernelInfo(name="addmulsub")).simplify()
154 def backward_addmulsub(grad_c, grad_d, grad_e, call):
155 _c, _d, _e, a, b = call.src[1:]
156 grad_a = (Tensor(grad_c) + Tensor(grad_d) * Tensor(b) + Tensor(grad_e)).uop

Callers

nothing calls this directly

Calls 9

KernelInfoClass · 0.90
flattenMethod · 0.80
numelMethod · 0.80
rangeMethod · 0.45
storeMethod · 0.45
simplifyMethod · 0.45
sinkMethod · 0.45
endMethod · 0.45
groupMethod · 0.45

Tested by

no test coverage detected