(args: {
backend: BackendWasm,
inputs: StringNGramsInputs,
attrs: StringNGramsAttrs
})
| 21 | import {stringNGramsImplCPU} from '../kernel_utils/shared'; |
| 22 | |
| 23 | function stringNGrams(args: { |
| 24 | backend: BackendWasm, |
| 25 | inputs: StringNGramsInputs, |
| 26 | attrs: StringNGramsAttrs |
| 27 | }): [TensorInfo, TensorInfo] { |
| 28 | const {backend, inputs, attrs} = args; |
| 29 | const {data, dataSplits} = inputs; |
| 30 | const { |
| 31 | separator, |
| 32 | nGramWidths, |
| 33 | leftPad, |
| 34 | rightPad, |
| 35 | padWidth, |
| 36 | preserveShortSequences, |
| 37 | } = attrs; |
| 38 | |
| 39 | const $data = backend.readSync(data.dataId) as Uint8Array[]; |
| 40 | const $dataSplits = backend.readSync(dataSplits.dataId) as Int32Array; |
| 41 | |
| 42 | const [nGrams, nGramsSplits] = stringNGramsImplCPU( |
| 43 | $data, $dataSplits, separator, nGramWidths, leftPad, rightPad, padWidth, |
| 44 | preserveShortSequences); |
| 45 | |
| 46 | const nGramsOut = backend.makeOutput([nGrams.length], 'string'); |
| 47 | const nGramsOutData = backend.dataIdMap.get(nGramsOut.dataId); |
| 48 | nGramsOutData.stringBytes = nGrams; |
| 49 | |
| 50 | const nGramsSplitsOut = backend.makeOutput(dataSplits.shape, 'int32'); |
| 51 | const nGramsSplitsOutVals = backend.typedArrayFromHeap(nGramsSplitsOut); |
| 52 | nGramsSplitsOutVals.set(nGramsSplits); |
| 53 | |
| 54 | return [nGramsOut, nGramsSplitsOut]; |
| 55 | } |
| 56 | |
| 57 | export const stringNGramsConfig: KernelConfig = { |
| 58 | kernelName: StringNGrams, |
nothing calls this directly
no test coverage detected
searching dependent graphs…