(args: {
backend: BackendWasm,
inputs: StringSplitInputs,
attrs: StringSplitAttrs
})
| 21 | import {stringSplitImplCPU} from '../kernel_utils/shared'; |
| 22 | |
| 23 | function stringSplit(args: { |
| 24 | backend: BackendWasm, |
| 25 | inputs: StringSplitInputs, |
| 26 | attrs: StringSplitAttrs |
| 27 | }): [TensorInfo, TensorInfo, TensorInfo] { |
| 28 | const {backend, inputs, attrs} = args; |
| 29 | const {input, delimiter} = inputs; |
| 30 | const {skipEmpty} = attrs; |
| 31 | |
| 32 | const inputVals = backend.readSync(input.dataId) as Uint8Array[]; |
| 33 | const delimiterVals = backend.readSync(delimiter.dataId) as Uint8Array[]; |
| 34 | |
| 35 | const [indices, values, shape] = |
| 36 | stringSplitImplCPU(inputVals, delimiterVals[0], skipEmpty); |
| 37 | const outputSize = values.length; |
| 38 | |
| 39 | const indicesOut = backend.makeOutput([outputSize, 2], 'int32'); |
| 40 | const indicesOutVals = backend.typedArrayFromHeap(indicesOut); |
| 41 | indicesOutVals.set(indices); |
| 42 | |
| 43 | const valuesOut = backend.makeOutput([outputSize], 'string'); |
| 44 | const valuesOutData = backend.dataIdMap.get(valuesOut.dataId); |
| 45 | valuesOutData.stringBytes = values; |
| 46 | |
| 47 | const shapeOut = backend.makeOutput([2], 'int32'); |
| 48 | const shapeOutVals = backend.typedArrayFromHeap(shapeOut); |
| 49 | shapeOutVals.set(shape); |
| 50 | |
| 51 | return [indicesOut, valuesOut, shapeOut]; |
| 52 | } |
| 53 | |
| 54 | export const stringSplitConfig: KernelConfig = { |
| 55 | kernelName: StringSplit, |
nothing calls this directly
no test coverage detected
searching dependent graphs…