gorgonia.org/gorgonia@v0.9.17/op_math_noextern.go (about) 1 // +build !cuda 2 3 package gorgonia 4 5 func (op elemUnaryOp) CallsExtern() bool { return false } 6 func (op elemBinOp) CallsExtern() bool { return false } 7 func (op linAlgBinOp) CallsExtern() bool { 8 if op.āBinaryOperator != vecDotOperator { 9 return true 10 } 11 return false 12 } 13 14 // NewAddOp creates a new *ExternalOp that wraps an add op 15 func NewAddOp(a, b *Node, ctx ExecutionContext) *ExternalOp { 16 add := newElemBinOp(addOpType, a, b) 17 op := NewExternalOp(add, ctx, nil) 18 op.Device = CPU 19 return op 20 } 21 22 // NewSubOp creates a new *ExternalOp that wraps a sub op 23 func NewSubOp(a, b *Node, ctx ExecutionContext) *ExternalOp { 24 sub := newEBOByType(subOpType, a.t, b.t) 25 op := NewExternalOp(sub, ctx, nil) 26 op.Device = CPU 27 return op 28 } 29 30 // NewHadamardProdOp creates a new *ExternalOp that wraps a mul op 31 func NewHadamardProdOp(a, b *Node, ctx ExecutionContext) *ExternalOp { 32 mul := newEBOByType(mulOpType, a.t, b.t) 33 op := NewExternalOp(mul, ctx, nil) 34 op.Device = CPU 35 return op 36 }