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  }