Closed hikettei closed 9 months ago
(defun !sin (a) (call (SinNode) a (!copy a :maybe-in-place t)))
A copy of a is overwritten soon, moving elements to new area is rebundant. MoveTensor with :maybe-in-place=t is compiled as:
CL-WAFFE2-REPL> (disassemble-waffe2-ir (!sin (!sin (randn `(3 3))))) disassemble-waffe2-ir: [Forward]: <WfInst[op=ALLOC{INTERNAL}] : TID40883 <= op(TID40883{float, (3 3)} <Input>TID40880{float, (3 3)})> <WfInst[op=SINNODE-CPUTENSOR] : TID40883 <= op(<Input>TID40880{float, (3 3)} TID40883{float, (3 3)})> <WfInst[op=SINNODE-CPUTENSOR] : TID40883 <= op(TID40883{float, (3 3)} TID40883{float, (3 3)})> 3 Instructions | 2 Tensors | 0 Scalars [Pullback]: 0 Instructions | 0 Tensors | 0 Scalars
Changes
[Optimize] maybe-in-place
A copy of a is overwritten soon, moving elements to new area is rebundant. MoveTensor with :maybe-in-place=t is compiled as: