license import { Abs , AbsInputs , env , KernelConfig , KernelFunc , TensorInfo , TypedArray } from '@tensorflow/tfjs-core' ; import { MathBackendWebGL } from '../backend_webgl' ; import { simpleAbsImplCPU } from '../kernel_utils/shared' ; import { UnaryOpProgram } from '../unaryop_gpu' ; import { UnaryOpPackedProgram } from '../unaryop_packed_gpu' ; const ABS = `return abs(x);` ; export function abs ( args ) { const { inputs , backend } = args ; const { x } = inputs ; if ( backend . shouldExecuteOnCPU ( [ x ] ) && x . dtype !== 'complex64' ) { const xData = backend . texData . get ( x . dataId ) ; const outValues = simpleAbsImplCPU ( xData . values as TypedArray ) ; return backend . makeTensorInfo ( x . shape , x . dtype , outValues ) ; } let program ; if ( env ( ) . getBool ( 'WEBGL_PACK_UNARY_OPERATIONS' ) ) { program = new UnaryOpPackedProgram ( x . shape , ABS ) ; } else { program = new UnaryOpProgram ( x . shape , ABS ) ; } return backend . runWebGLProgram ( program , [ x ] , x . dtype ) ; } export const absConfig = { kernelName : Abs , backendName : 'webgl' , kernelFunc : abs as { } as KernelFunc } ;