From 16d628bc8388107ca282298d4b1c30a309a3655b Mon Sep 17 00:00:00 2001 From: Ann Yuan Date: Fri, 20 Dec 2019 08:41:58 -0500 Subject: [PATCH 01/34] setup --- tfjs-backend-wasm/src/cc/BUILD | 22 ++++++ tfjs-backend-wasm/src/cc/kernels/ScatterND.cc | 34 ++++++++++ tfjs-backend-wasm/src/cc/kernels/ScatterND.h | 30 +++++++++ tfjs-backend-wasm/src/cc/scatter_impl.cc | 28 ++++++++ tfjs-backend-wasm/src/cc/scatter_impl.h | 26 +++++++ tfjs-backend-wasm/src/kernels/ScatterND.ts | 67 +++++++++++++++++++ tfjs-backend-wasm/src/kernels/all_kernels.ts | 1 + tfjs-backend-wasm/src/setup_test.ts | 1 + tfjs-core/src/ops/scatter_nd.ts | 3 +- 9 files changed, 211 insertions(+), 1 deletion(-) create mode 100644 tfjs-backend-wasm/src/cc/kernels/ScatterND.cc create mode 100644 tfjs-backend-wasm/src/cc/kernels/ScatterND.h create mode 100644 tfjs-backend-wasm/src/cc/scatter_impl.cc create mode 100644 tfjs-backend-wasm/src/cc/scatter_impl.h create mode 100644 tfjs-backend-wasm/src/kernels/ScatterND.ts diff --git a/tfjs-backend-wasm/src/cc/BUILD b/tfjs-backend-wasm/src/cc/BUILD index efa73a29516..b0e2ead3fd2 100644 --- a/tfjs-backend-wasm/src/cc/BUILD +++ b/tfjs-backend-wasm/src/cc/BUILD @@ -114,6 +114,16 @@ tfjs_cc_library( ], ) +tfjs_cc_library( + name = "scatter_impl", + srcs = ["scatter_impl.cc"], + hdrs = ["scatter_impl.h"], + deps = [ + ":backend", + ":util", + ], +) + tfjs_cc_library( name = "transpose_impl", srcs = ["transpose_impl.cc"], @@ -172,6 +182,7 @@ tfjs_cc_library( ":Relu", ":Relu6", ":ResizeBilinear", + ":ScatterND", ":Sigmoid", ":Sub", ":Tile", @@ -586,6 +597,17 @@ tfjs_unit_test( ], ) +tfjs_cc_library( + name = "ScatterND", + hdrs = ["kernels/ScatterND.h"], + srcs = ["kernels/ScatterND.cc"], + deps = [ + ":backend", + ":unary", + ":scatter_impl", + ], +) + tfjs_cc_library( name = "Sigmoid", srcs = ["kernels/Sigmoid.cc"], diff --git a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc new file mode 100644 index 00000000000..52977384ecf --- /dev/null +++ b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc @@ -0,0 +1,34 @@ +/* Copyright 2019 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ===========================================================================*/ + +#ifdef __EMSCRIPTEN__ +#include +#endif + +#include "src/cc/kernels/ScatterND.h" + +#include "src/cc/backend.h" +#include "src/cc/util.h" + +namespace tfjs { +namespace wasm { +extern "C" { +#ifdef __EMSCRIPTEN__ +EMSCRIPTEN_KEEPALIVE +#endif + +void ScatterND() {} +} // extern "C" +} // namespace wasm +} // namespace tfjs diff --git a/tfjs-backend-wasm/src/cc/kernels/ScatterND.h b/tfjs-backend-wasm/src/cc/kernels/ScatterND.h new file mode 100644 index 00000000000..1c2c833de6e --- /dev/null +++ b/tfjs-backend-wasm/src/cc/kernels/ScatterND.h @@ -0,0 +1,30 @@ +/* Copyright 2019 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ===========================================================================*/ + +#ifndef KERNELS_SCATTERND_H_ +#define KERNELS_SCATTERND_H_ + +#include + +namespace tfjs { +namespace wasm { +extern "C" { + +void ScatterND(); +} + +} // namespace wasm +} // namespace tfjs + +#endif // KERNELS_SCATTERND_H_ diff --git a/tfjs-backend-wasm/src/cc/scatter_impl.cc b/tfjs-backend-wasm/src/cc/scatter_impl.cc new file mode 100644 index 00000000000..b9817604a10 --- /dev/null +++ b/tfjs-backend-wasm/src/cc/scatter_impl.cc @@ -0,0 +1,28 @@ +/* Copyright 2019 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ===========================================================================*/ + +#ifdef __EMSCRIPTEN__ +#include +#endif + +#include "src/cc/scatter_impl.h" + +#include "src/cc/backend.h" +#include "src/cc/util.h" + +namespace tfjs { +namespace wasm { +void scatter() {} +} // namespace wasm +} // namespace tfjs diff --git a/tfjs-backend-wasm/src/cc/scatter_impl.h b/tfjs-backend-wasm/src/cc/scatter_impl.h new file mode 100644 index 00000000000..4bc3bd02ed8 --- /dev/null +++ b/tfjs-backend-wasm/src/cc/scatter_impl.h @@ -0,0 +1,26 @@ +/* Copyright 2019 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ===========================================================================*/ + +#ifndef SCATTER_IMPL_H_ +#define SCATTER_IMPL_H_ + +namespace tfjs { +namespace wasm { + +void scatter(); + +} // namespace wasm +} // namespace tfjs + +#endif // SCATTER_IMPL_H_ diff --git a/tfjs-backend-wasm/src/kernels/ScatterND.ts b/tfjs-backend-wasm/src/kernels/ScatterND.ts new file mode 100644 index 00000000000..22495740f3f --- /dev/null +++ b/tfjs-backend-wasm/src/kernels/ScatterND.ts @@ -0,0 +1,67 @@ +/** + * @license + * Copyright 2019 Google Inc. All Rights Reserved. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * ============================================================================= + */ + +import {NamedAttrMap, NamedTensorInfoMap, registerKernel, TensorInfo, util} from '@tensorflow/tfjs-core'; + +import {BackendWasm} from '../backend_wasm'; + +interface ScatterNDInputs extends NamedTensorInfoMap { + x: TensorInfo; +} + +interface ScatterNDAttrs extends NamedAttrMap { + newWidth: number; + newHeight: number; + alignCorners: boolean; +} + +let wasmScatterND: (xId: number, outId: number) => void; + +function setup(backend: BackendWasm): void { + wasmScatterND = backend.wasm.cwrap('ScatterND', null /*void*/, [ + 'number', // xId + 'number' // outId + ]); +} + +function scatterND( + args: + {backend: BackendWasm, inputs: ScatterNDInputs, attrs: ScatterNDAttrs}): + TensorInfo { + const {backend, inputs, attrs} = args; + const {x} = inputs; + + const out = backend.makeOutput([], x.dtype); + if (util.sizeFromShape(x.shape) === 0) { + return out; + } + + const xData = backend.dataIdMap.get(x.dataId); + + const xId = xData.id; + const outId = backend.dataIdMap.get(out.dataId).id; + wasmScatterND(xId, outId); + + return out; +} + +registerKernel({ + kernelName: 'ScatterND', + backendName: 'wasm', + setupFunc: setup, + kernelFunc: scatterND +}); diff --git a/tfjs-backend-wasm/src/kernels/all_kernels.ts b/tfjs-backend-wasm/src/kernels/all_kernels.ts index 389be69b21b..b152d0da41a 100644 --- a/tfjs-backend-wasm/src/kernels/all_kernels.ts +++ b/tfjs-backend-wasm/src/kernels/all_kernels.ts @@ -57,6 +57,7 @@ import './Relu6'; import './Reshape'; import './ResizeBilinear'; import './Rsqrt'; +import './ScatterND'; import './Sigmoid'; import './Sin'; import './Slice'; diff --git a/tfjs-backend-wasm/src/setup_test.ts b/tfjs-backend-wasm/src/setup_test.ts index 12f7d05bb2a..06cc9b84982 100644 --- a/tfjs-backend-wasm/src/setup_test.ts +++ b/tfjs-backend-wasm/src/setup_test.ts @@ -125,6 +125,7 @@ const TEST_FILTERS: TestFilter[] = [ 'gradient' // Not yet implemented. ] }, + {include: 'scatter '}, { include: 'abs ', excludes: [ diff --git a/tfjs-core/src/ops/scatter_nd.ts b/tfjs-core/src/ops/scatter_nd.ts index 494ad992feb..4d2e2ba02d8 100644 --- a/tfjs-core/src/ops/scatter_nd.ts +++ b/tfjs-core/src/ops/scatter_nd.ts @@ -49,7 +49,8 @@ function scatterND_( return ENGINE.runKernelFunc( backend => backend.scatterND($indices, $updates, shape), - {$indices, $updates}); + {indices: $indices, updates: $updates}, null /* backward */, 'ScatterND', + {shape}); } export const scatterND = op({scatterND_}); From ab89a56b6880ab70914cc1d257b9a3295e0e26d8 Mon Sep 17 00:00:00 2001 From: Ann Yuan Date: Fri, 20 Dec 2019 09:43:53 -0500 Subject: [PATCH 02/34] things compile --- tfjs-backend-wasm/package.json | 4 ++-- tfjs-backend-wasm/src/cc/kernels/ScatterND.cc | 2 +- tfjs-backend-wasm/src/cc/kernels/ScatterND.h | 2 +- tfjs-backend-wasm/src/kernels/ScatterND.ts | 22 ++++++++++++------- tfjs-backend-wasm/src/setup_test.ts | 2 +- tfjs-backend-wasm/yarn.lock | 14 +++--------- 6 files changed, 22 insertions(+), 24 deletions(-) diff --git a/tfjs-backend-wasm/package.json b/tfjs-backend-wasm/package.json index 07c08f53ed8..4dff790a75c 100644 --- a/tfjs-backend-wasm/package.json +++ b/tfjs-backend-wasm/package.json @@ -32,7 +32,7 @@ "path": false }, "peerDependencies": { - "@tensorflow/tfjs-core": "1.5.0" + "@tensorflow/tfjs-core": "link:../tfjs-core" }, "dependencies": { "@types/emscripten": "~0.0.34" @@ -40,7 +40,7 @@ "devDependencies": { "@bazel/bazel": "^0.28.0", "@bazel/buildifier": "0.29.0", - "@tensorflow/tfjs-core": "1.5.0", + "@tensorflow/tfjs-core": "link:../tfjs-core", "@types/jasmine": "~2.8.6", "clang-format": "~1.2.4", "jasmine": "~3.1.0", diff --git a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc index 52977384ecf..db73743ed1c 100644 --- a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc +++ b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc @@ -28,7 +28,7 @@ extern "C" { EMSCRIPTEN_KEEPALIVE #endif -void ScatterND() {} +void ScatterND(size_t indices_id, size_t updates_id, size_t out_id) {} } // extern "C" } // namespace wasm } // namespace tfjs diff --git a/tfjs-backend-wasm/src/cc/kernels/ScatterND.h b/tfjs-backend-wasm/src/cc/kernels/ScatterND.h index 1c2c833de6e..c9eeee1a53c 100644 --- a/tfjs-backend-wasm/src/cc/kernels/ScatterND.h +++ b/tfjs-backend-wasm/src/cc/kernels/ScatterND.h @@ -21,7 +21,7 @@ namespace tfjs { namespace wasm { extern "C" { -void ScatterND(); +void ScatterND(size_t indices_id, size_t updates_id, size_t out_id); } } // namespace wasm diff --git a/tfjs-backend-wasm/src/kernels/ScatterND.ts b/tfjs-backend-wasm/src/kernels/ScatterND.ts index 22495740f3f..e09a2032c11 100644 --- a/tfjs-backend-wasm/src/kernels/ScatterND.ts +++ b/tfjs-backend-wasm/src/kernels/ScatterND.ts @@ -29,11 +29,13 @@ interface ScatterNDAttrs extends NamedAttrMap { alignCorners: boolean; } -let wasmScatterND: (xId: number, outId: number) => void; +let wasmScatterND: (indicesId: number, updatesId: number, outId: number) => + void; function setup(backend: BackendWasm): void { wasmScatterND = backend.wasm.cwrap('ScatterND', null /*void*/, [ - 'number', // xId + 'number', // indicesId + 'number', // updatesId 'number' // outId ]); } @@ -43,18 +45,22 @@ function scatterND( {backend: BackendWasm, inputs: ScatterNDInputs, attrs: ScatterNDAttrs}): TensorInfo { const {backend, inputs, attrs} = args; - const {x} = inputs; + const {indices, updates} = inputs; + const {shape} = attrs; - const out = backend.makeOutput([], x.dtype); - if (util.sizeFromShape(x.shape) === 0) { + const out = backend.makeOutput(shape as number[], updates.dtype); + if (util.sizeFromShape(shape as number[]) === 0) { return out; } - const xData = backend.dataIdMap.get(x.dataId); + const indicesData = backend.dataIdMap.get(indices.dataId); + const indicesId = indicesData.id; + + const updatesData = backend.dataIdMap.get(updates.dataId); + const updatesId = updatesData.id; - const xId = xData.id; const outId = backend.dataIdMap.get(out.dataId).id; - wasmScatterND(xId, outId); + wasmScatterND(indicesId, updatesId, outId); return out; } diff --git a/tfjs-backend-wasm/src/setup_test.ts b/tfjs-backend-wasm/src/setup_test.ts index 06cc9b84982..faa2cb33338 100644 --- a/tfjs-backend-wasm/src/setup_test.ts +++ b/tfjs-backend-wasm/src/setup_test.ts @@ -125,7 +125,7 @@ const TEST_FILTERS: TestFilter[] = [ 'gradient' // Not yet implemented. ] }, - {include: 'scatter '}, + {include: 'scatterND '}, { include: 'abs ', excludes: [ diff --git a/tfjs-backend-wasm/yarn.lock b/tfjs-backend-wasm/yarn.lock index ec0c945a012..ac1064763a2 100644 --- a/tfjs-backend-wasm/yarn.lock +++ b/tfjs-backend-wasm/yarn.lock @@ -73,17 +73,9 @@ resolved "https://registry.yarnpkg.com/@bazel/hide-bazel-files/-/hide-bazel-files-0.38.3.tgz#e98231d3d360d51860d9c1a7c3345b40dab4cf81" integrity sha512-o+dNkfDm3qxWQ8h/04cWuTcjR7qnjZi3pQGv4aklVb16oPWx2jF8BzbkwvWuIkdbOl9VnqYP0vaHzwQVJRRcIA== -"@tensorflow/tfjs-core@1.5.0": - version "1.5.0" - resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-core/-/tfjs-core-1.5.0.tgz#a011a68882068d91d82410bb71aa0220867286bc" - integrity sha512-UcTAoVNmBxJLktGWUNbSq7ZEgBvjD0SWS0QcRBMgs93AeLM3xhlyo8MqECQsvCkuReDZwVHhX2fjMrf2M3R99w== - dependencies: - "@types/offscreencanvas" "~2019.3.0" - "@types/seedrandom" "2.4.27" - "@types/webgl-ext" "0.0.30" - "@types/webgl2" "0.0.4" - node-fetch "~2.1.2" - seedrandom "2.4.3" +"@tensorflow/tfjs-core@link:../tfjs-core": + version "0.0.0" + uid "" "@types/emscripten@~0.0.34": version "0.0.34" From b9ee891d19b8e96521d886564d724982e5aacb8b Mon Sep 17 00:00:00 2001 From: Ann Yuan Date: Fri, 20 Dec 2019 11:03:15 -0500 Subject: [PATCH 03/34] compiling --- tfjs-backend-wasm/src/cc/kernels/ScatterND.cc | 6 +++- tfjs-backend-wasm/src/cc/kernels/ScatterND.h | 4 ++- tfjs-backend-wasm/src/kernels/ClipByValue.ts | 19 +----------- tfjs-backend-wasm/src/kernels/ScatterND.ts | 29 ++++++++++++++----- tfjs-core/src/index.ts | 6 ++-- 5 files changed, 34 insertions(+), 30 deletions(-) diff --git a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc index db73743ed1c..01cc310f824 100644 --- a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc +++ b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc @@ -21,6 +21,8 @@ #include "src/cc/backend.h" #include "src/cc/util.h" +#include "src/cc/scatter_impl.h" + namespace tfjs { namespace wasm { extern "C" { @@ -28,7 +30,9 @@ extern "C" { EMSCRIPTEN_KEEPALIVE #endif -void ScatterND(size_t indices_id, size_t updates_id, size_t out_id) {} +void ScatterND(size_t indices_id, size_t updates_id, size_t slice_rank, + size_t num_updates, size_t slice_size, size_t* strides_ptr, + size_t* shape_ptr, size_t out_id) {} } // extern "C" } // namespace wasm } // namespace tfjs diff --git a/tfjs-backend-wasm/src/cc/kernels/ScatterND.h b/tfjs-backend-wasm/src/cc/kernels/ScatterND.h index c9eeee1a53c..ca108012ef0 100644 --- a/tfjs-backend-wasm/src/cc/kernels/ScatterND.h +++ b/tfjs-backend-wasm/src/cc/kernels/ScatterND.h @@ -21,7 +21,9 @@ namespace tfjs { namespace wasm { extern "C" { -void ScatterND(size_t indices_id, size_t updates_id, size_t out_id); +void ScatterND(size_t indices_id, size_t updates_id, size_t slice_rank, + size_t num_updates, size_t slice_size, size_t* strides_ptr, + size_t* shape_ptr, size_t out_id); } } // namespace wasm diff --git a/tfjs-backend-wasm/src/kernels/ClipByValue.ts b/tfjs-backend-wasm/src/kernels/ClipByValue.ts index 2e3f529addb..a666401d0a9 100644 --- a/tfjs-backend-wasm/src/kernels/ClipByValue.ts +++ b/tfjs-backend-wasm/src/kernels/ClipByValue.ts @@ -1,23 +1,6 @@ /** * @license - * Copyright 2019 Google Inc. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ============================================================================= - */ - -/** - * @license - * Copyright 2019 Google Inc. All Rights Reserved. + * Copyright 2019 Google LLC. All Rights Reserved. * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at diff --git a/tfjs-backend-wasm/src/kernels/ScatterND.ts b/tfjs-backend-wasm/src/kernels/ScatterND.ts index e09a2032c11..bdf23e32528 100644 --- a/tfjs-backend-wasm/src/kernels/ScatterND.ts +++ b/tfjs-backend-wasm/src/kernels/ScatterND.ts @@ -15,27 +15,33 @@ * ============================================================================= */ -import {NamedAttrMap, NamedTensorInfoMap, registerKernel, TensorInfo, util} from '@tensorflow/tfjs-core'; +import {NamedAttrMap, NamedTensorInfoMap, registerKernel, scatter_nd_util, Tensor, TensorInfo, util} from '@tensorflow/tfjs-core'; import {BackendWasm} from '../backend_wasm'; interface ScatterNDInputs extends NamedTensorInfoMap { - x: TensorInfo; + indices: TensorInfo; + updates: TensorInfo; } interface ScatterNDAttrs extends NamedAttrMap { - newWidth: number; - newHeight: number; - alignCorners: boolean; + shape: number[]; } -let wasmScatterND: (indicesId: number, updatesId: number, outId: number) => +let wasmScatterND: ( + indicesId: number, updatesId: number, sliceRank: number, numUpdates: number, + sliceSize: number, strides: Uint8Array, shape: Uint8Array, outId: number) => void; function setup(backend: BackendWasm): void { wasmScatterND = backend.wasm.cwrap('ScatterND', null /*void*/, [ 'number', // indicesId 'number', // updatesId + 'number', // sliceRank + 'number', // numUpdates + 'number', // sliceSize + 'array', // strides + 'array', // shape 'number' // outId ]); } @@ -53,14 +59,23 @@ function scatterND( return out; } + const {sliceRank, numUpdates, sliceSize, strides} = + scatter_nd_util.calculateShapes( + updates as Tensor, indices as Tensor, shape); + const indicesData = backend.dataIdMap.get(indices.dataId); const indicesId = indicesData.id; const updatesData = backend.dataIdMap.get(updates.dataId); const updatesId = updatesData.id; + const stridesBytes = new Uint8Array(new Int32Array(strides).buffer); + const shapeBytes = new Uint8Array(new Int32Array(shape).buffer); + const outId = backend.dataIdMap.get(out.dataId).id; - wasmScatterND(indicesId, updatesId, outId); + wasmScatterND( + indicesId, updatesId, sliceRank, numUpdates, sliceSize, stridesBytes, + shapeBytes, outId); return out; } diff --git a/tfjs-core/src/index.ts b/tfjs-core/src/index.ts index c03e1591962..01680c4455e 100644 --- a/tfjs-core/src/index.ts +++ b/tfjs-core/src/index.ts @@ -29,7 +29,6 @@ import './engine'; // Register backend-agnostic flags. import './flags'; - // backend_cpu.ts and backend_webgl.ts are standalone files and should be // explicitly included here. import './backends/webgl/backend_webgl'; @@ -38,7 +37,6 @@ import './backends/cpu/backend_cpu'; import './backends/cpu/all_kernels'; // Import all kernels from webgl. import './backends/webgl/all_kernels'; - import './platforms/platform_browser'; import './platforms/platform_node'; @@ -47,6 +45,7 @@ import * as backend_util from './backends/backend_util'; import * as io from './io/io'; import * as math from './math'; import * as browser from './ops/browser'; +import * as scatter_nd_util from './ops/scatter_nd_util'; import * as slice_util from './ops/slice_util'; import * as serialization from './serialization'; import {setOpHandler} from './tensor'; @@ -99,7 +98,8 @@ export { backend_util, webgl, tensor_util, - slice_util + slice_util, + scatter_nd_util }; // Backend specific. From 212d7f9077b05106b3a482528ae7dc11cbfae019 Mon Sep 17 00:00:00 2001 From: Ann Yuan Date: Fri, 20 Dec 2019 13:17:28 -0500 Subject: [PATCH 04/34] compiles --- tfjs-backend-wasm/src/cc/kernels/ScatterND.cc | 15 ++++++++++++++- tfjs-backend-wasm/src/cc/kernels/ScatterND.h | 2 +- tfjs-backend-wasm/src/cc/scatter_impl.cc | 8 +++++++- tfjs-backend-wasm/src/cc/scatter_impl.h | 8 +++++++- tfjs-backend-wasm/src/index_test.ts | 19 +++++++++++++++++-- tfjs-backend-wasm/src/kernels/ScatterND.ts | 9 +++++---- 6 files changed, 51 insertions(+), 10 deletions(-) diff --git a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc index 01cc310f824..49926152c5e 100644 --- a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc +++ b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc @@ -32,7 +32,20 @@ EMSCRIPTEN_KEEPALIVE void ScatterND(size_t indices_id, size_t updates_id, size_t slice_rank, size_t num_updates, size_t slice_size, size_t* strides_ptr, - size_t* shape_ptr, size_t out_id) {} + size_t* shape_ptr, size_t output_size, size_t out_id) { + auto& indices_info = backend::get_tensor_info(indices_id); + auto& updates_info = backend::get_tensor_info(updates_id); + const std::vector& strides = + std::vector(strides_ptr, strides_ptr + slice_rank); + const std::vector& shape = + std::vector(shape_ptr, shape_ptr + output_size); + + const int* indices_buf = indices_info.i32(); + const float* updates_buf = updates_info.f32(); + auto& out_info = backend::get_tensor_info(out_id); + tfjs::wasm::scatter(indices_id, updates_id, slice_rank, num_updates, + slice_size, strides, shape, out_id); +} } // extern "C" } // namespace wasm } // namespace tfjs diff --git a/tfjs-backend-wasm/src/cc/kernels/ScatterND.h b/tfjs-backend-wasm/src/cc/kernels/ScatterND.h index ca108012ef0..c598142b1f7 100644 --- a/tfjs-backend-wasm/src/cc/kernels/ScatterND.h +++ b/tfjs-backend-wasm/src/cc/kernels/ScatterND.h @@ -23,7 +23,7 @@ extern "C" { void ScatterND(size_t indices_id, size_t updates_id, size_t slice_rank, size_t num_updates, size_t slice_size, size_t* strides_ptr, - size_t* shape_ptr, size_t out_id); + size_t* shape_ptr, size_t output_size, size_t out_id); } } // namespace wasm diff --git a/tfjs-backend-wasm/src/cc/scatter_impl.cc b/tfjs-backend-wasm/src/cc/scatter_impl.cc index b9817604a10..d20f16cc489 100644 --- a/tfjs-backend-wasm/src/cc/scatter_impl.cc +++ b/tfjs-backend-wasm/src/cc/scatter_impl.cc @@ -16,6 +16,9 @@ #include #endif +#include +#include + #include "src/cc/scatter_impl.h" #include "src/cc/backend.h" @@ -23,6 +26,9 @@ namespace tfjs { namespace wasm { -void scatter() {} +void scatter(size_t indices_id, size_t updates_id, size_t slice_rank, + size_t num_updates, size_t slice_size, + const std::vector& strides_ptr, + const std::vector& shape_ptr, size_t out_id) {} } // namespace wasm } // namespace tfjs diff --git a/tfjs-backend-wasm/src/cc/scatter_impl.h b/tfjs-backend-wasm/src/cc/scatter_impl.h index 4bc3bd02ed8..5084217257e 100644 --- a/tfjs-backend-wasm/src/cc/scatter_impl.h +++ b/tfjs-backend-wasm/src/cc/scatter_impl.h @@ -15,10 +15,16 @@ #ifndef SCATTER_IMPL_H_ #define SCATTER_IMPL_H_ +#include +#include + namespace tfjs { namespace wasm { -void scatter(); +void scatter(size_t indices_id, size_t updates_id, size_t slice_rank, + size_t num_updates, size_t slice_size, + const std::vector& strides_ptr, + const std::vector& shape_ptr, size_t out_id); } // namespace wasm } // namespace tfjs diff --git a/tfjs-backend-wasm/src/index_test.ts b/tfjs-backend-wasm/src/index_test.ts index 370615f2cf3..42b8da49ee8 100644 --- a/tfjs-backend-wasm/src/index_test.ts +++ b/tfjs-backend-wasm/src/index_test.ts @@ -58,8 +58,8 @@ describeWithFlags('wasm init', BROWSER_ENVS, () => { }, 100); // Silences backend registration warnings. - spyOn(console, 'warn'); - spyOn(console, 'log'); + // spyOn(console, 'warn'); + // spyOn(console, 'log'); }); afterEach(() => { @@ -92,4 +92,19 @@ describeWithFlags('wasm init', BROWSER_ENVS, () => { expect(() => setWasmPath('too/late')) .toThrowError(/The WASM backend was already initialized. Make sure/); }); + + fit('should work for 2d', async () => { + const indices = tf.tensor1d([0, 4, 2], 'int32'); + const updates = tf.tensor2d( + [100, 101, 102, 777, 778, 779, 1000, 1001, 1002], [3, 3], 'int32'); + const shape = [5, 3]; + const result = tf.scatterND(indices, updates, shape); + expect(result.shape).toEqual(shape); + expect(result.dtype).toEqual(updates.dtype); + const resultData = await result.data(); + console.log(Array.from(resultData)); + // expectArraysClose( + // await result.data(), + // [100, 101, 102, 0, 0, 0, 1000, 1001, 1002, 0, 0, 0, 777, 778, 779]); + }); }); diff --git a/tfjs-backend-wasm/src/kernels/ScatterND.ts b/tfjs-backend-wasm/src/kernels/ScatterND.ts index bdf23e32528..a24ebf57532 100644 --- a/tfjs-backend-wasm/src/kernels/ScatterND.ts +++ b/tfjs-backend-wasm/src/kernels/ScatterND.ts @@ -30,8 +30,8 @@ interface ScatterNDAttrs extends NamedAttrMap { let wasmScatterND: ( indicesId: number, updatesId: number, sliceRank: number, numUpdates: number, - sliceSize: number, strides: Uint8Array, shape: Uint8Array, outId: number) => - void; + sliceSize: number, strides: Uint8Array, shape: Uint8Array, + outputSize: number, outId: number) => void; function setup(backend: BackendWasm): void { wasmScatterND = backend.wasm.cwrap('ScatterND', null /*void*/, [ @@ -42,6 +42,7 @@ function setup(backend: BackendWasm): void { 'number', // sliceSize 'array', // strides 'array', // shape + 'number', // outputSize 'number' // outId ]); } @@ -59,7 +60,7 @@ function scatterND( return out; } - const {sliceRank, numUpdates, sliceSize, strides} = + const {sliceRank, numUpdates, sliceSize, strides, outputSize} = scatter_nd_util.calculateShapes( updates as Tensor, indices as Tensor, shape); @@ -75,7 +76,7 @@ function scatterND( const outId = backend.dataIdMap.get(out.dataId).id; wasmScatterND( indicesId, updatesId, sliceRank, numUpdates, sliceSize, stridesBytes, - shapeBytes, outId); + shapeBytes, outputSize, outId); return out; } From 50493700b9ab91f00c76167b678c9dffd106451f Mon Sep 17 00:00:00 2001 From: Ann Yuan Date: Fri, 20 Dec 2019 14:22:45 -0500 Subject: [PATCH 05/34] compiles --- tfjs-backend-wasm/src/cc/kernels/ScatterND.cc | 7 ++++--- tfjs-backend-wasm/src/cc/scatter_impl.cc | 13 ++++++++++--- tfjs-backend-wasm/src/cc/scatter_impl.h | 6 +++--- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc index 49926152c5e..8e4f9ee027d 100644 --- a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc +++ b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc @@ -42,9 +42,10 @@ void ScatterND(size_t indices_id, size_t updates_id, size_t slice_rank, const int* indices_buf = indices_info.i32(); const float* updates_buf = updates_info.f32(); - auto& out_info = backend::get_tensor_info(out_id); - tfjs::wasm::scatter(indices_id, updates_id, slice_rank, num_updates, - slice_size, strides, shape, out_id); + auto& out_info = backend::get_tensor_info_out(out_id); + float* out_buf = out_info.f32_write(); + tfjs::wasm::scatter(indices_buf, updates_buf, slice_rank, num_updates, + slice_size, strides, shape, out_buf); } } // extern "C" } // namespace wasm diff --git a/tfjs-backend-wasm/src/cc/scatter_impl.cc b/tfjs-backend-wasm/src/cc/scatter_impl.cc index d20f16cc489..c6955c83250 100644 --- a/tfjs-backend-wasm/src/cc/scatter_impl.cc +++ b/tfjs-backend-wasm/src/cc/scatter_impl.cc @@ -26,9 +26,16 @@ namespace tfjs { namespace wasm { -void scatter(size_t indices_id, size_t updates_id, size_t slice_rank, - size_t num_updates, size_t slice_size, +void scatter(const int* indices_ptr, const float* updates_ptr, + size_t slice_rank, size_t num_updates, size_t slice_size, const std::vector& strides_ptr, - const std::vector& shape_ptr, size_t out_id) {} + const std::vector& shape_ptr, float* out_buf_ptr) { + for (size_t i = 0; i < num_updates; ++i) { + size_t index = 0; + for (size_t j = 0; j < slice_rank; ++j) { + // int dim = indices + } + } +} } // namespace wasm } // namespace tfjs diff --git a/tfjs-backend-wasm/src/cc/scatter_impl.h b/tfjs-backend-wasm/src/cc/scatter_impl.h index 5084217257e..4dfcd48ff9c 100644 --- a/tfjs-backend-wasm/src/cc/scatter_impl.h +++ b/tfjs-backend-wasm/src/cc/scatter_impl.h @@ -21,10 +21,10 @@ namespace tfjs { namespace wasm { -void scatter(size_t indices_id, size_t updates_id, size_t slice_rank, - size_t num_updates, size_t slice_size, +void scatter(const int* indices_ptr, const float* updates_ptr, + size_t slice_rank, size_t num_updates, size_t slice_size, const std::vector& strides_ptr, - const std::vector& shape_ptr, size_t out_id); + const std::vector& shape_ptr, float* out_buf_ptr); } // namespace wasm } // namespace tfjs From 8c007175529f35ab4dbab118debbb2ac22b032cf Mon Sep 17 00:00:00 2001 From: Ann Yuan Date: Fri, 20 Dec 2019 15:04:05 -0500 Subject: [PATCH 06/34] basic --- tfjs-backend-wasm/src/cc/scatter_impl.cc | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tfjs-backend-wasm/src/cc/scatter_impl.cc b/tfjs-backend-wasm/src/cc/scatter_impl.cc index c6955c83250..92238d1b24b 100644 --- a/tfjs-backend-wasm/src/cc/scatter_impl.cc +++ b/tfjs-backend-wasm/src/cc/scatter_impl.cc @@ -31,9 +31,15 @@ void scatter(const int* indices_ptr, const float* updates_ptr, const std::vector& strides_ptr, const std::vector& shape_ptr, float* out_buf_ptr) { for (size_t i = 0; i < num_updates; ++i) { - size_t index = 0; + size_t flattened_index = 0; for (size_t j = 0; j < slice_rank; ++j) { - // int dim = indices + int dim = indices_ptr[i * slice_rank + j]; + flattened_index += dim * strides_ptr[j]; + } + + for (size_t k = 0; k < slice_size; ++k) { + out_buf_ptr[flattened_index * slice_size + k] = + updates_ptr[i * slice_size + k]; } } } From f11541c3a1bc4ac56c9d75dfd032f24af510f5e1 Mon Sep 17 00:00:00 2001 From: Ann Yuan Date: Fri, 20 Dec 2019 16:13:13 -0500 Subject: [PATCH 07/34] almost --- tfjs-backend-wasm/src/cc/kernels/ScatterND.cc | 2 +- tfjs-backend-wasm/src/cc/scatter_impl.cc | 8 +++- tfjs-backend-wasm/src/cc/scatter_impl.h | 3 +- tfjs-backend-wasm/src/index_test.ts | 38 ++++++++++++++++++- 4 files changed, 47 insertions(+), 4 deletions(-) diff --git a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc index 8e4f9ee027d..f9dd84a928d 100644 --- a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc +++ b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc @@ -45,7 +45,7 @@ void ScatterND(size_t indices_id, size_t updates_id, size_t slice_rank, auto& out_info = backend::get_tensor_info_out(out_id); float* out_buf = out_info.f32_write(); tfjs::wasm::scatter(indices_buf, updates_buf, slice_rank, num_updates, - slice_size, strides, shape, out_buf); + slice_size, strides, shape, output_size, out_buf); } } // extern "C" } // namespace wasm diff --git a/tfjs-backend-wasm/src/cc/scatter_impl.cc b/tfjs-backend-wasm/src/cc/scatter_impl.cc index 92238d1b24b..1effc45faad 100644 --- a/tfjs-backend-wasm/src/cc/scatter_impl.cc +++ b/tfjs-backend-wasm/src/cc/scatter_impl.cc @@ -29,7 +29,12 @@ namespace wasm { void scatter(const int* indices_ptr, const float* updates_ptr, size_t slice_rank, size_t num_updates, size_t slice_size, const std::vector& strides_ptr, - const std::vector& shape_ptr, float* out_buf_ptr) { + const std::vector& shape_ptr, size_t output_size, + float* out_buf_ptr) { + for (size_t i = 0; i < output_size; ++i) { + out_buf_ptr[i] = 0; + } + for (size_t i = 0; i < num_updates; ++i) { size_t flattened_index = 0; for (size_t j = 0; j < slice_rank; ++j) { @@ -39,6 +44,7 @@ void scatter(const int* indices_ptr, const float* updates_ptr, for (size_t k = 0; k < slice_size; ++k) { out_buf_ptr[flattened_index * slice_size + k] = + out_buf_ptr[flattened_index * slice_size + k] + updates_ptr[i * slice_size + k]; } } diff --git a/tfjs-backend-wasm/src/cc/scatter_impl.h b/tfjs-backend-wasm/src/cc/scatter_impl.h index 4dfcd48ff9c..3721a0ee1af 100644 --- a/tfjs-backend-wasm/src/cc/scatter_impl.h +++ b/tfjs-backend-wasm/src/cc/scatter_impl.h @@ -24,7 +24,8 @@ namespace wasm { void scatter(const int* indices_ptr, const float* updates_ptr, size_t slice_rank, size_t num_updates, size_t slice_size, const std::vector& strides_ptr, - const std::vector& shape_ptr, float* out_buf_ptr); + const std::vector& shape_ptr, size_t output_size, + float* out_buf_ptr); } // namespace wasm } // namespace tfjs diff --git a/tfjs-backend-wasm/src/index_test.ts b/tfjs-backend-wasm/src/index_test.ts index 42b8da49ee8..8097407b810 100644 --- a/tfjs-backend-wasm/src/index_test.ts +++ b/tfjs-backend-wasm/src/index_test.ts @@ -93,7 +93,7 @@ describeWithFlags('wasm init', BROWSER_ENVS, () => { .toThrowError(/The WASM backend was already initialized. Make sure/); }); - fit('should work for 2d', async () => { + it('should work for 2d', async () => { const indices = tf.tensor1d([0, 4, 2], 'int32'); const updates = tf.tensor2d( [100, 101, 102, 777, 778, 779, 1000, 1001, 1002], [3, 3], 'int32'); @@ -107,4 +107,40 @@ describeWithFlags('wasm init', BROWSER_ENVS, () => { // await result.data(), // [100, 101, 102, 0, 0, 0, 1000, 1001, 1002, 0, 0, 0, 777, 778, 779]); }); + + it('should work for multiple 1d', async () => { + const indices = tf.tensor1d([0, 4, 2], 'int32'); + const updates = tf.tensor1d([100, 101, 102], 'float32'); + const shape = [5]; + const result = tf.scatterND(indices, updates, shape); + expect(result.shape).toEqual(shape); + expect(result.dtype).toEqual(updates.dtype); + const resultData = await result.data(); + console.log(Array.from(resultData)); + // expectArraysClose(await result.data(), [100, 0, 102, 0, 101]); + }); + + it('should work for high rank indices', async () => { + const indices = tf.tensor2d([0, 2, 0, 1], [2, 2], 'int32'); + const updates = tf.tensor1d([10, 20], 'float32'); + const shape = [3, 3]; + const result = tf.scatterND(indices, updates, shape); + expect(result.shape).toEqual(shape); + expect(result.dtype).toEqual(updates.dtype); + const resultData = await result.data(); + console.log(Array.from(resultData)); + // expectArraysClose(await result.data(), [0, 20, 10, 0, 0, 0, 0, 0, 0]); + }); + + it('should sum the duplicated indices', async () => { + const indices = tf.tensor1d([0, 4, 2, 1, 3, 0], 'int32'); + const updates = tf.tensor1d([10, 20, 30, 40, 50, 60], 'float32'); + const shape = [8]; + const result = tf.scatterND(indices, updates, shape); + expect(result.shape).toEqual(shape); + expect(result.dtype).toEqual(updates.dtype); + const resultData = await result.data(); + console.log(Array.from(resultData)); + // expectArraysClose(await result.data(), [70, 40, 30, 50, 20, 0, 0, 0]); + }); }); From 03c67b7e4751d3c6b652df3540215e56821ef647 Mon Sep 17 00:00:00 2001 From: Ann Yuan Date: Fri, 20 Dec 2019 16:16:35 -0500 Subject: [PATCH 08/34] lint --- tfjs-backend-wasm/src/cc/kernels/ScatterND.cc | 2 ++ tfjs-backend-wasm/src/kernels/ScatterND.ts | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc index f9dd84a928d..915b40947d3 100644 --- a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc +++ b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc @@ -18,6 +18,8 @@ #include "src/cc/kernels/ScatterND.h" +#include + #include "src/cc/backend.h" #include "src/cc/util.h" diff --git a/tfjs-backend-wasm/src/kernels/ScatterND.ts b/tfjs-backend-wasm/src/kernels/ScatterND.ts index a24ebf57532..1193195e842 100644 --- a/tfjs-backend-wasm/src/kernels/ScatterND.ts +++ b/tfjs-backend-wasm/src/kernels/ScatterND.ts @@ -55,8 +55,8 @@ function scatterND( const {indices, updates} = inputs; const {shape} = attrs; - const out = backend.makeOutput(shape as number[], updates.dtype); - if (util.sizeFromShape(shape as number[]) === 0) { + const out = backend.makeOutput(shape, updates.dtype); + if (util.sizeFromShape(shape) === 0) { return out; } From 926f275ff76808ac9581ea7b516aa32000bad9d0 Mon Sep 17 00:00:00 2001 From: Ann Yuan Date: Fri, 20 Dec 2019 16:20:20 -0500 Subject: [PATCH 09/34] testfix --- tfjs-backend-wasm/src/index_test.ts | 101 ++++++++--------- tfjs-backend-wasm/yarn.lock | 165 +++++++++++++++------------- 2 files changed, 137 insertions(+), 129 deletions(-) diff --git a/tfjs-backend-wasm/src/index_test.ts b/tfjs-backend-wasm/src/index_test.ts index 8097407b810..36f5ec1bd3f 100644 --- a/tfjs-backend-wasm/src/index_test.ts +++ b/tfjs-backend-wasm/src/index_test.ts @@ -93,54 +93,55 @@ describeWithFlags('wasm init', BROWSER_ENVS, () => { .toThrowError(/The WASM backend was already initialized. Make sure/); }); - it('should work for 2d', async () => { - const indices = tf.tensor1d([0, 4, 2], 'int32'); - const updates = tf.tensor2d( - [100, 101, 102, 777, 778, 779, 1000, 1001, 1002], [3, 3], 'int32'); - const shape = [5, 3]; - const result = tf.scatterND(indices, updates, shape); - expect(result.shape).toEqual(shape); - expect(result.dtype).toEqual(updates.dtype); - const resultData = await result.data(); - console.log(Array.from(resultData)); - // expectArraysClose( - // await result.data(), - // [100, 101, 102, 0, 0, 0, 1000, 1001, 1002, 0, 0, 0, 777, 778, 779]); - }); - - it('should work for multiple 1d', async () => { - const indices = tf.tensor1d([0, 4, 2], 'int32'); - const updates = tf.tensor1d([100, 101, 102], 'float32'); - const shape = [5]; - const result = tf.scatterND(indices, updates, shape); - expect(result.shape).toEqual(shape); - expect(result.dtype).toEqual(updates.dtype); - const resultData = await result.data(); - console.log(Array.from(resultData)); - // expectArraysClose(await result.data(), [100, 0, 102, 0, 101]); - }); - - it('should work for high rank indices', async () => { - const indices = tf.tensor2d([0, 2, 0, 1], [2, 2], 'int32'); - const updates = tf.tensor1d([10, 20], 'float32'); - const shape = [3, 3]; - const result = tf.scatterND(indices, updates, shape); - expect(result.shape).toEqual(shape); - expect(result.dtype).toEqual(updates.dtype); - const resultData = await result.data(); - console.log(Array.from(resultData)); - // expectArraysClose(await result.data(), [0, 20, 10, 0, 0, 0, 0, 0, 0]); - }); - - it('should sum the duplicated indices', async () => { - const indices = tf.tensor1d([0, 4, 2, 1, 3, 0], 'int32'); - const updates = tf.tensor1d([10, 20, 30, 40, 50, 60], 'float32'); - const shape = [8]; - const result = tf.scatterND(indices, updates, shape); - expect(result.shape).toEqual(shape); - expect(result.dtype).toEqual(updates.dtype); - const resultData = await result.data(); - console.log(Array.from(resultData)); - // expectArraysClose(await result.data(), [70, 40, 30, 50, 20, 0, 0, 0]); - }); + // it('should work for 2d', async () => { + // const indices = tf.tensor1d([0, 4, 2], 'int32'); + // const updates = tf.tensor2d( + // [100, 101, 102, 777, 778, 779, 1000, 1001, 1002], [3, 3], 'int32'); + // const shape = [5, 3]; + // const result = tf.scatterND(indices, updates, shape); + // expect(result.shape).toEqual(shape); + // expect(result.dtype).toEqual(updates.dtype); + // const resultData = await result.data(); + // console.log(Array.from(resultData)); + // // expectArraysClose( + // // await result.data(), + // // [100, 101, 102, 0, 0, 0, 1000, 1001, 1002, 0, 0, 0, 777, 778, + // 779]); + // }); + + // it('should work for multiple 1d', async () => { + // const indices = tf.tensor1d([0, 4, 2], 'int32'); + // const updates = tf.tensor1d([100, 101, 102], 'float32'); + // const shape = [5]; + // const result = tf.scatterND(indices, updates, shape); + // expect(result.shape).toEqual(shape); + // expect(result.dtype).toEqual(updates.dtype); + // const resultData = await result.data(); + // console.log(Array.from(resultData)); + // // expectArraysClose(await result.data(), [100, 0, 102, 0, 101]); + // }); + + // it('should work for high rank indices', async () => { + // const indices = tf.tensor2d([0, 2, 0, 1], [2, 2], 'int32'); + // const updates = tf.tensor1d([10, 20], 'float32'); + // const shape = [3, 3]; + // const result = tf.scatterND(indices, updates, shape); + // expect(result.shape).toEqual(shape); + // expect(result.dtype).toEqual(updates.dtype); + // const resultData = await result.data(); + // console.log(Array.from(resultData)); + // // expectArraysClose(await result.data(), [0, 20, 10, 0, 0, 0, 0, 0, 0]); + // }); + + // it('should sum the duplicated indices', async () => { + // const indices = tf.tensor1d([0, 4, 2, 1, 3, 0], 'int32'); + // const updates = tf.tensor1d([10, 20, 30, 40, 50, 60], 'float32'); + // const shape = [8]; + // const result = tf.scatterND(indices, updates, shape); + // expect(result.shape).toEqual(shape); + // expect(result.dtype).toEqual(updates.dtype); + // const resultData = await result.data(); + // console.log(Array.from(resultData)); + // // expectArraysClose(await result.data(), [70, 40, 30, 50, 20, 0, 0, 0]); + // }); }); diff --git a/tfjs-backend-wasm/yarn.lock b/tfjs-backend-wasm/yarn.lock index ac1064763a2..4ce2f89c464 100644 --- a/tfjs-backend-wasm/yarn.lock +++ b/tfjs-backend-wasm/yarn.lock @@ -69,9 +69,9 @@ "@bazel/buildifier-win32_x64" "0.29.0" "@bazel/hide-bazel-files@latest": - version "0.38.3" - resolved "https://registry.yarnpkg.com/@bazel/hide-bazel-files/-/hide-bazel-files-0.38.3.tgz#e98231d3d360d51860d9c1a7c3345b40dab4cf81" - integrity sha512-o+dNkfDm3qxWQ8h/04cWuTcjR7qnjZi3pQGv4aklVb16oPWx2jF8BzbkwvWuIkdbOl9VnqYP0vaHzwQVJRRcIA== + version "1.0.0" + resolved "https://registry.yarnpkg.com/@bazel/hide-bazel-files/-/hide-bazel-files-1.0.0.tgz#779070dcb5ae121ff6c72d73bf3fb7bf68285d75" + integrity sha512-dfw2W7xDUPlRMcDMVO8gDkX9Xb7Thy3sP4PDODv+eiHOvwIi116X/wwy7mQUZISkJdEJ1zWy9ydpzvfetpYh4w== "@tensorflow/tfjs-core@link:../tfjs-core": version "0.0.0" @@ -82,7 +82,12 @@ resolved "https://registry.yarnpkg.com/@types/emscripten/-/emscripten-0.0.34.tgz#12b4a344274fb102ff2f6c877b37587bc3e46008" integrity sha512-QSb9ojDincskc+uKMI0KXp8e1NALFINCrMlp8VGKGcTSxeEyRTTKyjWw75NYrCZHUsVEEEpr1tYHpbtaC++/sQ== -"@types/estree@*", "@types/estree@0.0.39": +"@types/estree@*": + version "0.0.40" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.40.tgz#0e6cb9b9bbd098031fa19e4b4e8131bc70e5de13" + integrity sha512-p3KZgMto/JyxosKGmnLDJ/dG5wf+qTRMUjHJcspC2oQKa4jP7mz+tv0ND56lLBu3ojHlhzY33Ol+khLyNmilkA== + +"@types/estree@0.0.39": version "0.0.39" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== @@ -93,9 +98,9 @@ integrity sha512-056oRlBBp7MDzr+HoU5su099s/s7wjZ3KcHxLfv+Byqb9MwdLUvsfLgw1VS97hsh3ddxSPyQu+olHMnoVTUY6g== "@types/node@*": - version "12.11.2" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.11.2.tgz#75ba3beda30d690b89a5089ca1c6e8e386150b76" - integrity sha512-dsfE4BHJkLQW+reOS6b17xhZ/6FB1rB8eRRvO08nn5o+voxf3i74tuyFWNH6djdfgX7Sm5s6LD8t6mJug4dpDw== + version "12.12.21" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.21.tgz#aa44a6363291c7037111c47e4661ad210aded23f" + integrity sha512-8sRGhbpU+ck1n0PGAUgVrWrWdjSW2aqNeyC15W88GRsMpSwzv6RJGlLhE7s2RhVSOdyDmxbqlWSeThq4/7xqlA== "@types/offscreencanvas@~2019.3.0": version "2019.3.0" @@ -361,9 +366,9 @@ better-assert@~1.0.0: callsite "1.0.0" big-integer@^1.6.17: - version "1.6.47" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.47.tgz#e1e9320e26c4cc81f64fbf4b3bb20e025bf18e2d" - integrity sha512-9t9f7X3as2XGX8b52GqG6ox0GvIdM86LyIXASJnDCFhYNgt+A+MByQZ3W2PyMRZjEvG5f8TEbSPfEotVuMJnQg== + version "1.6.48" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.48.tgz#8fd88bd1632cba4a1c8c3e3d7159f08bb95b4b9e" + integrity sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w== binary-extensions@^1.0.0: version "1.13.1" @@ -378,15 +383,22 @@ binary@~0.3.0: buffers "~0.1.1" chainsaw "~0.1.0" +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + blob@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== bluebird@^3.3.0: - version "3.7.1" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.1.tgz#df70e302b471d7473489acf26a93d63b53f874de" - integrity sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg== + version "3.7.2" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" + integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== bluebird@~3.4.1: version "3.4.7" @@ -837,9 +849,9 @@ copy-descriptor@^0.1.0: integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= core-js@^2.2.0: - version "2.6.10" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.10.tgz#8a5b8391f8cc7013da703411ce5b585706300d7f" - integrity sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA== + version "2.6.11" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" + integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== core-util-is@~1.0.0: version "1.0.2" @@ -1264,6 +1276,11 @@ fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -1288,9 +1305,9 @@ finalhandler@1.1.2: unpipe "~1.0.0" find-cache-dir@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.1.0.tgz#9935894999debef4cf9f677fdf646d002c4cdecb" - integrity sha512-zw+EFiNBNPgI2NTrKkDd1xd7q0cs6wr/iWnr/oUkI0yF9K9GqQ+riIt4aiyFaaqpaWbxPrJXHI+QvmNUQbX+0Q== + version "3.2.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.2.0.tgz#e7fe44c1abc1299f516146e563108fd1006c1874" + integrity sha512-1JKclkYYsf1q9WIJKLZa9S9muC+08RIjzAlLrK4QcYLJMS6mk9yombQ9qf+zJ7H9LS800k0s44L4sDq9VYzqyg== dependencies: commondir "^1.0.1" make-dir "^3.0.0" @@ -1374,12 +1391,12 @@ fs.realpath@^1.0.0: integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= fsevents@^1.2.7: - version "1.2.9" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f" - integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw== + version "1.2.11" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.11.tgz#67bf57f4758f02ede88fb2a1712fef4d15358be3" + integrity sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw== dependencies: + bindings "^1.5.0" nan "^2.12.1" - node-pre-gyp "^0.12.0" fstream@^1.0.12: version "1.0.12" @@ -1439,19 +1456,7 @@ glob@^5.0.15: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.1.1, glob@^7.1.4: - version "7.1.5" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.5.tgz#6714c69bee20f3c3e64c4dd905553e532b40cdc0" - integrity sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ== - dependencies: - fs.realpath "^1.0.0" - inflight "^1.0.4" - inherits "2" - minimatch "^3.0.4" - once "^1.3.0" - path-is-absolute "^1.0.0" - -glob@^7.0.6, glob@^7.1.3: +glob@^7.0.0, glob@^7.0.6, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -1463,12 +1468,7 @@ glob@^7.0.6, glob@^7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.2.0: - version "4.2.2" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" - integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q== - -graceful-fs@^4.1.2, graceful-fs@^4.1.6: +graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: version "4.2.3" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== @@ -1598,9 +1598,9 @@ https-browserify@^1.0.0: integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= https-proxy-agent@^2.2.1: - version "2.2.2" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.2.tgz#271ea8e90f836ac9f119daccd39c19ff7dfb0793" - integrity sha512-c8Ndjc9Bkpfx/vCJueCPy0jlP4ccCCSNDp8xwCZzPjKJUm+B+u9WX2x98Qx4n1PiMNTWo3D7KK5ifNV/yJyRzg== + version "2.2.4" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" + integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== dependencies: agent-base "^4.3.0" debug "^3.1.0" @@ -2245,17 +2245,17 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@1.40.0: - version "1.40.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" - integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== +mime-db@1.42.0: + version "1.42.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.42.0.tgz#3e252907b4c7adb906597b4b65636272cf9e7bac" + integrity sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ== mime-types@~2.1.24: - version "2.1.24" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" - integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ== + version "2.1.25" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.25.tgz#39772d46621f93e2a80a856c53b86a62156a6437" + integrity sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg== dependencies: - mime-db "1.40.0" + mime-db "1.42.0" mime@^2.3.1: version "2.4.4" @@ -2380,10 +2380,10 @@ node-fetch@~2.1.2: resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.1.2.tgz#ab884e8e7e57e38a944753cec706f788d1768bb5" integrity sha1-q4hOjn5X44qUR1POxwb3iNF2i7U= -node-pre-gyp@^0.12.0: - version "0.12.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" - integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A== +node-pre-gyp@*: + version "0.14.0" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" + integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== dependencies: detect-libc "^1.0.2" mkdirp "^0.5.1" @@ -2394,7 +2394,7 @@ node-pre-gyp@^0.12.0: rc "^1.2.7" rimraf "^2.6.1" semver "^5.3.0" - tar "^4" + tar "^4.4.2" nopt@3.x: version "3.0.6" @@ -2434,14 +2434,21 @@ normalize-path@^3.0.0: integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== npm-bundled@^1.0.1: - version "1.0.6" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" - integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g== + version "1.1.1" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" + integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== + dependencies: + npm-normalize-package-bin "^1.0.1" + +npm-normalize-package-bin@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" + integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== npm-packlist@^1.1.6, npm-packlist@^1.4.1: - version "1.4.6" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.6.tgz#53ba3ed11f8523079f1457376dd379ee4ea42ff4" - integrity sha512-u65uQdb+qwtGvEJh/DgQgW1Xg7sqeNbmxYyrvlNznaVTjV3E5P6F/EFjM+BVHXl7JJlsdG8A64M0XI8FI/IOlg== + version "1.4.7" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.7.tgz#9e954365a06b80b18111ea900945af4f88ed4848" + integrity sha512-vAj7dIkp5NhieaGZxBJB8fF4R0078rqsmhJcAfXZ6O7JJhjhPK96n5Ry1oZcfLXgfun0GWTZPOxaEyqv8GBykQ== dependencies: ignore-walk "^3.0.1" npm-bundled "^1.0.1" @@ -2957,17 +2964,17 @@ resolve@1.1.7, resolve@1.1.x: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@1.12.0, resolve@^1.1.6, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.3.2: +resolve@1.12.0: version "1.12.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== dependencies: path-parse "^1.0.6" -resolve@^1.10.0: - version "1.13.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.13.1.tgz#be0aa4c06acd53083505abb35f4d66932ab35d16" - integrity sha512-CxqObCX8K8YtAhOBRg+lrcdn+LK+WYOS8tSjqSFbjtrI5PnS63QPhZl4+yKfrU9tdsbMu9Anr/amegT87M9Z6w== +resolve@^1.1.6, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.3.2: + version "1.14.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.14.1.tgz#9e018c540fcf0c427d678b9931cbf45e984bcaff" + integrity sha512-fn5Wobh4cxbLzuHaE+nphztHy43/b++4M6SsGFC2gB8uYwf0C8LcarfCz1un7UTW8OFQg9iNjZ4xpcFVGebDPg== dependencies: path-parse "^1.0.6" @@ -3037,9 +3044,9 @@ rollup-plugin-terser@~5.1.3: terser "^4.1.0" rollup-plugin-typescript2@~0.25.2: - version "0.25.2" - resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.25.2.tgz#1a165df08560902da45b355413464caca1765d3a" - integrity sha512-+tpZj/ZIf2lwjyjX6xEW1S5Y38/21TB3p6poLodISIia8owMMfIKuFFnWcESE4FPBHkR8XPKqjY0PH9IUJJK+Q== + version "0.25.3" + resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.25.3.tgz#a5fb2f0f85488789334ce540abe6c7011cbdf40f" + integrity sha512-ADkSaidKBovJmf5VBnZBZe+WzaZwofuvYdzGAKTN/J4hN7QJCFYAq7IrH9caxlru6T5qhX41PNFS1S4HqhsGQg== dependencies: find-cache-dir "^3.0.0" fs-extra "8.1.0" @@ -3186,9 +3193,9 @@ snapdragon@^0.8.1: use "^3.1.0" socket.io-adapter@~1.1.0: - version "1.1.1" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" - integrity sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs= + version "1.1.2" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz#ab3f0d6f66b8fc7fca3959ab5991f82221789be9" + integrity sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g== socket.io-client@2.1.1: version "2.1.1" @@ -3447,7 +3454,7 @@ supports-color@^6.1.0: dependencies: has-flag "^3.0.0" -tar@^4: +tar@^4.4.2: version "4.4.13" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== @@ -3461,9 +3468,9 @@ tar@^4: yallist "^3.0.3" terser@^4.1.0: - version "4.4.2" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.4.2.tgz#448fffad0245f4c8a277ce89788b458bfd7706e8" - integrity sha512-Uufrsvhj9O1ikwgITGsZ5EZS6qPokUOkCegS7fYOdGTv+OA90vndUbU6PEjr5ePqHfNUbGyMO7xyIZv2MhsALQ== + version "4.4.3" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.4.3.tgz#401abc52b88869cf904412503b1eb7da093ae2f0" + integrity sha512-0ikKraVtRDKGzHrzkCv5rUNDzqlhmhowOBqC0XqUHFpW+vJ45+20/IFBcebwKfiS2Z9fJin6Eo+F1zLZsxi8RA== dependencies: commander "^2.20.0" source-map "~0.6.1" From b1729fc6bf79141e48b6733f96e6c2a793799eb6 Mon Sep 17 00:00:00 2001 From: Ann Yuan Date: Fri, 20 Dec 2019 16:29:48 -0500 Subject: [PATCH 10/34] initialization --- tfjs-backend-wasm/src/cc/scatter_impl.cc | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tfjs-backend-wasm/src/cc/scatter_impl.cc b/tfjs-backend-wasm/src/cc/scatter_impl.cc index 1effc45faad..a025572ca27 100644 --- a/tfjs-backend-wasm/src/cc/scatter_impl.cc +++ b/tfjs-backend-wasm/src/cc/scatter_impl.cc @@ -31,9 +31,8 @@ void scatter(const int* indices_ptr, const float* updates_ptr, const std::vector& strides_ptr, const std::vector& shape_ptr, size_t output_size, float* out_buf_ptr) { - for (size_t i = 0; i < output_size; ++i) { - out_buf_ptr[i] = 0; - } + // Initialize output to 0. + memset(out_buf_ptr, 0, output_size * sizeof(float)); for (size_t i = 0; i < num_updates; ++i) { size_t flattened_index = 0; From fe1b327696166e29a2cb2d1827be27c231ecdb7d Mon Sep 17 00:00:00 2001 From: Ann Yuan Date: Fri, 20 Dec 2019 16:45:47 -0500 Subject: [PATCH 11/34] pass --- tfjs-backend-wasm/src/cc/scatter_impl.cc | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/tfjs-backend-wasm/src/cc/scatter_impl.cc b/tfjs-backend-wasm/src/cc/scatter_impl.cc index a025572ca27..80a69ca339e 100644 --- a/tfjs-backend-wasm/src/cc/scatter_impl.cc +++ b/tfjs-backend-wasm/src/cc/scatter_impl.cc @@ -41,11 +41,18 @@ void scatter(const int* indices_ptr, const float* updates_ptr, flattened_index += dim * strides_ptr[j]; } + out_buf_ptr += flattened_index * slice_size; + for (size_t k = 0; k < slice_size; ++k) { - out_buf_ptr[flattened_index * slice_size + k] = - out_buf_ptr[flattened_index * slice_size + k] + - updates_ptr[i * slice_size + k]; + *out_buf_ptr += updates_ptr[i * slice_size + k]; + // *out_buf_ptr += *updates_ptr; + out_buf_ptr++; + // updates_ptr++; } + + // updates_ptr += slice_size; + + out_buf_ptr -= (flattened_index * slice_size + slice_size); } } } // namespace wasm From 201374660f457e10d29db676fd5aaea2178c5ec6 Mon Sep 17 00:00:00 2001 From: Ann Yuan Date: Fri, 20 Dec 2019 16:49:36 -0500 Subject: [PATCH 12/34] use pointer --- tfjs-backend-wasm/src/cc/scatter_impl.cc | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/tfjs-backend-wasm/src/cc/scatter_impl.cc b/tfjs-backend-wasm/src/cc/scatter_impl.cc index 80a69ca339e..65820068fb4 100644 --- a/tfjs-backend-wasm/src/cc/scatter_impl.cc +++ b/tfjs-backend-wasm/src/cc/scatter_impl.cc @@ -44,14 +44,13 @@ void scatter(const int* indices_ptr, const float* updates_ptr, out_buf_ptr += flattened_index * slice_size; for (size_t k = 0; k < slice_size; ++k) { - *out_buf_ptr += updates_ptr[i * slice_size + k]; - // *out_buf_ptr += *updates_ptr; + *out_buf_ptr += *updates_ptr; + out_buf_ptr++; - // updates_ptr++; + updates_ptr++; } - // updates_ptr += slice_size; - + updates_ptr += (slice_size - slice_size); out_buf_ptr -= (flattened_index * slice_size + slice_size); } } From a25a047d4c73f80942fe59a99f5d7a0da5e405ca Mon Sep 17 00:00:00 2001 From: Ann Yuan Date: Fri, 20 Dec 2019 17:00:26 -0500 Subject: [PATCH 13/34] clean --- tfjs-backend-wasm/src/cc/kernels/ScatterND.cc | 4 +--- tfjs-backend-wasm/src/cc/scatter_impl.cc | 9 ++++----- tfjs-backend-wasm/src/cc/scatter_impl.h | 3 +-- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc index 915b40947d3..6245733a0b7 100644 --- a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc +++ b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc @@ -39,15 +39,13 @@ void ScatterND(size_t indices_id, size_t updates_id, size_t slice_rank, auto& updates_info = backend::get_tensor_info(updates_id); const std::vector& strides = std::vector(strides_ptr, strides_ptr + slice_rank); - const std::vector& shape = - std::vector(shape_ptr, shape_ptr + output_size); const int* indices_buf = indices_info.i32(); const float* updates_buf = updates_info.f32(); auto& out_info = backend::get_tensor_info_out(out_id); float* out_buf = out_info.f32_write(); tfjs::wasm::scatter(indices_buf, updates_buf, slice_rank, num_updates, - slice_size, strides, shape, output_size, out_buf); + slice_size, strides, output_size, out_buf); } } // extern "C" } // namespace wasm diff --git a/tfjs-backend-wasm/src/cc/scatter_impl.cc b/tfjs-backend-wasm/src/cc/scatter_impl.cc index 65820068fb4..4b48a904433 100644 --- a/tfjs-backend-wasm/src/cc/scatter_impl.cc +++ b/tfjs-backend-wasm/src/cc/scatter_impl.cc @@ -28,8 +28,7 @@ namespace tfjs { namespace wasm { void scatter(const int* indices_ptr, const float* updates_ptr, size_t slice_rank, size_t num_updates, size_t slice_size, - const std::vector& strides_ptr, - const std::vector& shape_ptr, size_t output_size, + const std::vector& strides_ptr, size_t output_size, float* out_buf_ptr) { // Initialize output to 0. memset(out_buf_ptr, 0, output_size * sizeof(float)); @@ -37,8 +36,9 @@ void scatter(const int* indices_ptr, const float* updates_ptr, for (size_t i = 0; i < num_updates; ++i) { size_t flattened_index = 0; for (size_t j = 0; j < slice_rank; ++j) { - int dim = indices_ptr[i * slice_rank + j]; - flattened_index += dim * strides_ptr[j]; + flattened_index += *indices_ptr * strides_ptr[j]; + + indices_ptr++; } out_buf_ptr += flattened_index * slice_size; @@ -50,7 +50,6 @@ void scatter(const int* indices_ptr, const float* updates_ptr, updates_ptr++; } - updates_ptr += (slice_size - slice_size); out_buf_ptr -= (flattened_index * slice_size + slice_size); } } diff --git a/tfjs-backend-wasm/src/cc/scatter_impl.h b/tfjs-backend-wasm/src/cc/scatter_impl.h index 3721a0ee1af..b117a899b0c 100644 --- a/tfjs-backend-wasm/src/cc/scatter_impl.h +++ b/tfjs-backend-wasm/src/cc/scatter_impl.h @@ -23,8 +23,7 @@ namespace wasm { void scatter(const int* indices_ptr, const float* updates_ptr, size_t slice_rank, size_t num_updates, size_t slice_size, - const std::vector& strides_ptr, - const std::vector& shape_ptr, size_t output_size, + const std::vector& strides_ptr, size_t output_size, float* out_buf_ptr); } // namespace wasm From b32ba77abe13f4acebc5d9271c4f82446bfb5cb9 Mon Sep 17 00:00:00 2001 From: Ann Yuan Date: Fri, 20 Dec 2019 17:04:43 -0500 Subject: [PATCH 14/34] clean --- tfjs-backend-wasm/src/cc/kernels/ScatterND.cc | 2 +- tfjs-backend-wasm/src/cc/kernels/ScatterND.h | 2 +- tfjs-backend-wasm/src/kernels/ScatterND.ts | 8 +++----- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc index 6245733a0b7..4c44b6e11dd 100644 --- a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc +++ b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc @@ -34,7 +34,7 @@ EMSCRIPTEN_KEEPALIVE void ScatterND(size_t indices_id, size_t updates_id, size_t slice_rank, size_t num_updates, size_t slice_size, size_t* strides_ptr, - size_t* shape_ptr, size_t output_size, size_t out_id) { + size_t output_size, size_t out_id) { auto& indices_info = backend::get_tensor_info(indices_id); auto& updates_info = backend::get_tensor_info(updates_id); const std::vector& strides = diff --git a/tfjs-backend-wasm/src/cc/kernels/ScatterND.h b/tfjs-backend-wasm/src/cc/kernels/ScatterND.h index c598142b1f7..83cdd20eb8b 100644 --- a/tfjs-backend-wasm/src/cc/kernels/ScatterND.h +++ b/tfjs-backend-wasm/src/cc/kernels/ScatterND.h @@ -23,7 +23,7 @@ extern "C" { void ScatterND(size_t indices_id, size_t updates_id, size_t slice_rank, size_t num_updates, size_t slice_size, size_t* strides_ptr, - size_t* shape_ptr, size_t output_size, size_t out_id); + size_t output_size, size_t out_id); } } // namespace wasm diff --git a/tfjs-backend-wasm/src/kernels/ScatterND.ts b/tfjs-backend-wasm/src/kernels/ScatterND.ts index 1193195e842..d783d9d4bee 100644 --- a/tfjs-backend-wasm/src/kernels/ScatterND.ts +++ b/tfjs-backend-wasm/src/kernels/ScatterND.ts @@ -30,8 +30,8 @@ interface ScatterNDAttrs extends NamedAttrMap { let wasmScatterND: ( indicesId: number, updatesId: number, sliceRank: number, numUpdates: number, - sliceSize: number, strides: Uint8Array, shape: Uint8Array, - outputSize: number, outId: number) => void; + sliceSize: number, strides: Uint8Array, outputSize: number, + outId: number) => void; function setup(backend: BackendWasm): void { wasmScatterND = backend.wasm.cwrap('ScatterND', null /*void*/, [ @@ -41,7 +41,6 @@ function setup(backend: BackendWasm): void { 'number', // numUpdates 'number', // sliceSize 'array', // strides - 'array', // shape 'number', // outputSize 'number' // outId ]); @@ -71,12 +70,11 @@ function scatterND( const updatesId = updatesData.id; const stridesBytes = new Uint8Array(new Int32Array(strides).buffer); - const shapeBytes = new Uint8Array(new Int32Array(shape).buffer); const outId = backend.dataIdMap.get(out.dataId).id; wasmScatterND( indicesId, updatesId, sliceRank, numUpdates, sliceSize, stridesBytes, - shapeBytes, outputSize, outId); + outputSize, outId); return out; } From a637383022558cbc0ed7eb89f0f980f6b895ad69 Mon Sep 17 00:00:00 2001 From: Ann Yuan Date: Fri, 20 Dec 2019 17:06:32 -0500 Subject: [PATCH 15/34] clean --- tfjs-backend-wasm/src/index_test.ts | 56 ++--------------------------- 1 file changed, 2 insertions(+), 54 deletions(-) diff --git a/tfjs-backend-wasm/src/index_test.ts b/tfjs-backend-wasm/src/index_test.ts index 36f5ec1bd3f..370615f2cf3 100644 --- a/tfjs-backend-wasm/src/index_test.ts +++ b/tfjs-backend-wasm/src/index_test.ts @@ -58,8 +58,8 @@ describeWithFlags('wasm init', BROWSER_ENVS, () => { }, 100); // Silences backend registration warnings. - // spyOn(console, 'warn'); - // spyOn(console, 'log'); + spyOn(console, 'warn'); + spyOn(console, 'log'); }); afterEach(() => { @@ -92,56 +92,4 @@ describeWithFlags('wasm init', BROWSER_ENVS, () => { expect(() => setWasmPath('too/late')) .toThrowError(/The WASM backend was already initialized. Make sure/); }); - - // it('should work for 2d', async () => { - // const indices = tf.tensor1d([0, 4, 2], 'int32'); - // const updates = tf.tensor2d( - // [100, 101, 102, 777, 778, 779, 1000, 1001, 1002], [3, 3], 'int32'); - // const shape = [5, 3]; - // const result = tf.scatterND(indices, updates, shape); - // expect(result.shape).toEqual(shape); - // expect(result.dtype).toEqual(updates.dtype); - // const resultData = await result.data(); - // console.log(Array.from(resultData)); - // // expectArraysClose( - // // await result.data(), - // // [100, 101, 102, 0, 0, 0, 1000, 1001, 1002, 0, 0, 0, 777, 778, - // 779]); - // }); - - // it('should work for multiple 1d', async () => { - // const indices = tf.tensor1d([0, 4, 2], 'int32'); - // const updates = tf.tensor1d([100, 101, 102], 'float32'); - // const shape = [5]; - // const result = tf.scatterND(indices, updates, shape); - // expect(result.shape).toEqual(shape); - // expect(result.dtype).toEqual(updates.dtype); - // const resultData = await result.data(); - // console.log(Array.from(resultData)); - // // expectArraysClose(await result.data(), [100, 0, 102, 0, 101]); - // }); - - // it('should work for high rank indices', async () => { - // const indices = tf.tensor2d([0, 2, 0, 1], [2, 2], 'int32'); - // const updates = tf.tensor1d([10, 20], 'float32'); - // const shape = [3, 3]; - // const result = tf.scatterND(indices, updates, shape); - // expect(result.shape).toEqual(shape); - // expect(result.dtype).toEqual(updates.dtype); - // const resultData = await result.data(); - // console.log(Array.from(resultData)); - // // expectArraysClose(await result.data(), [0, 20, 10, 0, 0, 0, 0, 0, 0]); - // }); - - // it('should sum the duplicated indices', async () => { - // const indices = tf.tensor1d([0, 4, 2, 1, 3, 0], 'int32'); - // const updates = tf.tensor1d([10, 20, 30, 40, 50, 60], 'float32'); - // const shape = [8]; - // const result = tf.scatterND(indices, updates, shape); - // expect(result.shape).toEqual(shape); - // expect(result.dtype).toEqual(updates.dtype); - // const resultData = await result.data(); - // console.log(Array.from(resultData)); - // // expectArraysClose(await result.data(), [70, 40, 30, 50, 20, 0, 0, 0]); - // }); }); From 98994cd4700e9fa53b7578022c8706d51bde14c0 Mon Sep 17 00:00:00 2001 From: Ann Yuan Date: Fri, 20 Dec 2019 17:07:23 -0500 Subject: [PATCH 16/34] ws --- tfjs-core/src/index.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tfjs-core/src/index.ts b/tfjs-core/src/index.ts index 01680c4455e..ff33adf05cf 100644 --- a/tfjs-core/src/index.ts +++ b/tfjs-core/src/index.ts @@ -29,6 +29,7 @@ import './engine'; // Register backend-agnostic flags. import './flags'; + // backend_cpu.ts and backend_webgl.ts are standalone files and should be // explicitly included here. import './backends/webgl/backend_webgl'; @@ -37,6 +38,7 @@ import './backends/cpu/backend_cpu'; import './backends/cpu/all_kernels'; // Import all kernels from webgl. import './backends/webgl/all_kernels'; + import './platforms/platform_browser'; import './platforms/platform_node'; From a609fcae7c9089eef03eaa690816ec6aa26d15e2 Mon Sep 17 00:00:00 2001 From: Ann Yuan Date: Fri, 20 Dec 2019 17:24:51 -0500 Subject: [PATCH 17/34] clean --- tfjs-backend-wasm/src/cc/BUILD | 6 +----- tfjs-backend-wasm/src/cc/kernels/ScatterND.cc | 1 - tfjs-backend-wasm/src/cc/scatter_impl.cc | 1 - 3 files changed, 1 insertion(+), 7 deletions(-) diff --git a/tfjs-backend-wasm/src/cc/BUILD b/tfjs-backend-wasm/src/cc/BUILD index b0e2ead3fd2..6697561a1b8 100644 --- a/tfjs-backend-wasm/src/cc/BUILD +++ b/tfjs-backend-wasm/src/cc/BUILD @@ -118,10 +118,7 @@ tfjs_cc_library( name = "scatter_impl", srcs = ["scatter_impl.cc"], hdrs = ["scatter_impl.h"], - deps = [ - ":backend", - ":util", - ], + deps = [":util"], ) tfjs_cc_library( @@ -603,7 +600,6 @@ tfjs_cc_library( srcs = ["kernels/ScatterND.cc"], deps = [ ":backend", - ":unary", ":scatter_impl", ], ) diff --git a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc index 4c44b6e11dd..1f7d850515c 100644 --- a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc +++ b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc @@ -21,7 +21,6 @@ #include #include "src/cc/backend.h" -#include "src/cc/util.h" #include "src/cc/scatter_impl.h" diff --git a/tfjs-backend-wasm/src/cc/scatter_impl.cc b/tfjs-backend-wasm/src/cc/scatter_impl.cc index 4b48a904433..3ae9b3e5721 100644 --- a/tfjs-backend-wasm/src/cc/scatter_impl.cc +++ b/tfjs-backend-wasm/src/cc/scatter_impl.cc @@ -21,7 +21,6 @@ #include "src/cc/scatter_impl.h" -#include "src/cc/backend.h" #include "src/cc/util.h" namespace tfjs { From 2e4e5651199c538bc8f0652ab7c399e996f1ca5b Mon Sep 17 00:00:00 2001 From: Ann Yuan Date: Fri, 20 Dec 2019 17:27:21 -0500 Subject: [PATCH 18/34] clean --- tfjs-backend-wasm/src/cc/BUILD | 1 - tfjs-backend-wasm/src/cc/scatter_impl.cc | 2 -- 2 files changed, 3 deletions(-) diff --git a/tfjs-backend-wasm/src/cc/BUILD b/tfjs-backend-wasm/src/cc/BUILD index 6697561a1b8..727c9507ce8 100644 --- a/tfjs-backend-wasm/src/cc/BUILD +++ b/tfjs-backend-wasm/src/cc/BUILD @@ -118,7 +118,6 @@ tfjs_cc_library( name = "scatter_impl", srcs = ["scatter_impl.cc"], hdrs = ["scatter_impl.h"], - deps = [":util"], ) tfjs_cc_library( diff --git a/tfjs-backend-wasm/src/cc/scatter_impl.cc b/tfjs-backend-wasm/src/cc/scatter_impl.cc index 3ae9b3e5721..e6331c08bb2 100644 --- a/tfjs-backend-wasm/src/cc/scatter_impl.cc +++ b/tfjs-backend-wasm/src/cc/scatter_impl.cc @@ -21,8 +21,6 @@ #include "src/cc/scatter_impl.h" -#include "src/cc/util.h" - namespace tfjs { namespace wasm { void scatter(const int* indices_ptr, const float* updates_ptr, From e2936e467c12f146ffc907257b00092f3e628ee3 Mon Sep 17 00:00:00 2001 From: Ann Yuan Date: Fri, 20 Dec 2019 17:42:19 -0500 Subject: [PATCH 19/34] clean --- tfjs-backend-wasm/src/cc/kernels/ScatterND.cc | 1 - tfjs-backend-wasm/src/cc/scatter_impl.cc | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc index 1f7d850515c..937876b9dbb 100644 --- a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc +++ b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc @@ -21,7 +21,6 @@ #include #include "src/cc/backend.h" - #include "src/cc/scatter_impl.h" namespace tfjs { diff --git a/tfjs-backend-wasm/src/cc/scatter_impl.cc b/tfjs-backend-wasm/src/cc/scatter_impl.cc index e6331c08bb2..a643ac444c1 100644 --- a/tfjs-backend-wasm/src/cc/scatter_impl.cc +++ b/tfjs-backend-wasm/src/cc/scatter_impl.cc @@ -16,11 +16,11 @@ #include #endif +#include "src/cc/scatter_impl.h" + #include #include -#include "src/cc/scatter_impl.h" - namespace tfjs { namespace wasm { void scatter(const int* indices_ptr, const float* updates_ptr, From df4edd0f7db813e0eefe658c1c2db9d220b48da2 Mon Sep 17 00:00:00 2001 From: Ann Yuan Date: Sun, 22 Dec 2019 10:27:42 -0500 Subject: [PATCH 20/34] compiles --- tfjs-backend-wasm/src/cc/BUILD | 1 + tfjs-backend-wasm/src/cc/kernels/ScatterND.cc | 8 +- tfjs-backend-wasm/src/cc/kernels/ScatterND.h | 8 +- tfjs-backend-wasm/src/index_test.ts | 20 +- tfjs-backend-wasm/src/kernels/ScatterND.ts | 12 +- tfjs-backend-wasm/yarn.lock | 223 +----------------- 6 files changed, 45 insertions(+), 227 deletions(-) diff --git a/tfjs-backend-wasm/src/cc/BUILD b/tfjs-backend-wasm/src/cc/BUILD index 727c9507ce8..10bce9926be 100644 --- a/tfjs-backend-wasm/src/cc/BUILD +++ b/tfjs-backend-wasm/src/cc/BUILD @@ -600,6 +600,7 @@ tfjs_cc_library( deps = [ ":backend", ":scatter_impl", + ":util", ], ) diff --git a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc index 937876b9dbb..8a3c7442253 100644 --- a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc +++ b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc @@ -18,10 +18,12 @@ #include "src/cc/kernels/ScatterND.h" +#include #include #include "src/cc/backend.h" #include "src/cc/scatter_impl.h" +#include "src/cc/util.h" namespace tfjs { namespace wasm { @@ -30,9 +32,9 @@ extern "C" { EMSCRIPTEN_KEEPALIVE #endif -void ScatterND(size_t indices_id, size_t updates_id, size_t slice_rank, - size_t num_updates, size_t slice_size, size_t* strides_ptr, - size_t output_size, size_t out_id) { +void ScatterND(size_t indices_id, size_t updates_id, const DType dtype, + size_t slice_rank, size_t num_updates, size_t slice_size, + size_t* strides_ptr, size_t output_size, size_t out_id) { auto& indices_info = backend::get_tensor_info(indices_id); auto& updates_info = backend::get_tensor_info(updates_id); const std::vector& strides = diff --git a/tfjs-backend-wasm/src/cc/kernels/ScatterND.h b/tfjs-backend-wasm/src/cc/kernels/ScatterND.h index 83cdd20eb8b..e51526a51ca 100644 --- a/tfjs-backend-wasm/src/cc/kernels/ScatterND.h +++ b/tfjs-backend-wasm/src/cc/kernels/ScatterND.h @@ -16,14 +16,16 @@ #define KERNELS_SCATTERND_H_ #include +#include "src/cc/backend.h" +#include "src/cc/util.h" namespace tfjs { namespace wasm { extern "C" { -void ScatterND(size_t indices_id, size_t updates_id, size_t slice_rank, - size_t num_updates, size_t slice_size, size_t* strides_ptr, - size_t output_size, size_t out_id); +void ScatterND(size_t indices_id, size_t updates_id, const DType dtype, + size_t slice_rank, size_t num_updates, size_t slice_size, + size_t* strides_ptr, size_t output_size, size_t out_id); } } // namespace wasm diff --git a/tfjs-backend-wasm/src/index_test.ts b/tfjs-backend-wasm/src/index_test.ts index 370615f2cf3..58caa02493e 100644 --- a/tfjs-backend-wasm/src/index_test.ts +++ b/tfjs-backend-wasm/src/index_test.ts @@ -58,8 +58,8 @@ describeWithFlags('wasm init', BROWSER_ENVS, () => { }, 100); // Silences backend registration warnings. - spyOn(console, 'warn'); - spyOn(console, 'log'); + // spyOn(console, 'warn'); + // spyOn(console, 'log'); }); afterEach(() => { @@ -92,4 +92,20 @@ describeWithFlags('wasm init', BROWSER_ENVS, () => { expect(() => setWasmPath('too/late')) .toThrowError(/The WASM backend was already initialized. Make sure/); }); + + fit('should work for 2d', async () => { + const indices = tf.tensor1d([0, 4, 2], 'int32'); + const updates = tf.tensor2d( + [100, 101, 102, 777, 778, 779, 1000, 1001, 1002], [3, 3], 'int32'); + const shape = [5, 3]; + const result = tf.scatterND(indices, updates, shape); + expect(result.shape).toEqual(shape); + expect(result.dtype).toEqual(updates.dtype); + const resultData = await result.data(); + console.log(Array.from(resultData)); + console.log(result.dtype); + // expectArraysClose( + // await result.data(), + // [100, 101, 102, 0, 0, 0, 1000, 1001, 1002, 0, 0, 0, 777, 778, 779]); + }); }); diff --git a/tfjs-backend-wasm/src/kernels/ScatterND.ts b/tfjs-backend-wasm/src/kernels/ScatterND.ts index d783d9d4bee..e8701681fa9 100644 --- a/tfjs-backend-wasm/src/kernels/ScatterND.ts +++ b/tfjs-backend-wasm/src/kernels/ScatterND.ts @@ -18,6 +18,7 @@ import {NamedAttrMap, NamedTensorInfoMap, registerKernel, scatter_nd_util, Tensor, TensorInfo, util} from '@tensorflow/tfjs-core'; import {BackendWasm} from '../backend_wasm'; +import {CppDType} from './types'; interface ScatterNDInputs extends NamedTensorInfoMap { indices: TensorInfo; @@ -29,14 +30,15 @@ interface ScatterNDAttrs extends NamedAttrMap { } let wasmScatterND: ( - indicesId: number, updatesId: number, sliceRank: number, numUpdates: number, - sliceSize: number, strides: Uint8Array, outputSize: number, - outId: number) => void; + indicesId: number, updatesId: number, dtype: CppDType, sliceRank: number, + numUpdates: number, sliceSize: number, strides: Uint8Array, + outputSize: number, outId: number) => void; function setup(backend: BackendWasm): void { wasmScatterND = backend.wasm.cwrap('ScatterND', null /*void*/, [ 'number', // indicesId 'number', // updatesId + 'number', // dtype 'number', // sliceRank 'number', // numUpdates 'number', // sliceSize @@ -73,8 +75,8 @@ function scatterND( const outId = backend.dataIdMap.get(out.dataId).id; wasmScatterND( - indicesId, updatesId, sliceRank, numUpdates, sliceSize, stridesBytes, - outputSize, outId); + indicesId, updatesId, CppDType[updates.dtype], sliceRank, numUpdates, + sliceSize, stridesBytes, outputSize, outId); return out; } diff --git a/tfjs-backend-wasm/yarn.lock b/tfjs-backend-wasm/yarn.lock index 4ce2f89c464..c00fdc56574 100644 --- a/tfjs-backend-wasm/yarn.lock +++ b/tfjs-backend-wasm/yarn.lock @@ -191,11 +191,6 @@ ansi-regex@^2.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= -ansi-regex@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" - integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= - ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -216,19 +211,6 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -aproba@^1.0.3: - version "1.2.0" - resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" - integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== - -are-we-there-yet@~1.1.2: - version "1.1.5" - resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" - integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== - dependencies: - delegates "^1.0.0" - readable-stream "^2.0.6" - arg@^4.1.0: version "4.1.2" resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.2.tgz#e70c90579e02c63d80e3ad4e31d8bfdb8bd50064" @@ -675,11 +657,6 @@ chokidar@^2.0.3: optionalDependencies: fsevents "^1.2.7" -chownr@^1.1.1: - version "1.1.3" - resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142" - integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw== - cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -811,11 +788,6 @@ console-browserify@^1.1.0: resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== -console-control-strings@^1.0.0, console-control-strings@~1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" - integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= - constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" @@ -969,11 +941,6 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= -deep-extend@^0.6.0: - version "0.6.0" - resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" - integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== - deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" @@ -1008,11 +975,6 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" -delegates@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" - integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= - depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" @@ -1026,11 +988,6 @@ des.js@^1.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" -detect-libc@^1.0.2: - version "1.0.3" - resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" - integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= - di@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" @@ -1378,13 +1335,6 @@ fs-extra@^7.0.1: jsonfile "^4.0.0" universalify "^0.1.0" -fs-minipass@^1.2.5: - version "1.2.7" - resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" - integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== - dependencies: - minipass "^2.6.0" - fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -1408,20 +1358,6 @@ fstream@^1.0.12: mkdirp ">=0.5 0" rimraf "2" -gauge@~2.7.3: - version "2.7.4" - resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" - integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= - dependencies: - aproba "^1.0.3" - console-control-strings "^1.0.0" - has-unicode "^2.0.0" - object-assign "^4.1.0" - signal-exit "^3.0.0" - string-width "^1.0.1" - strip-ansi "^3.0.1" - wide-align "^1.1.0" - get-caller-file@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" @@ -1506,11 +1442,6 @@ has-flag@^3.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= -has-unicode@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" - integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= - has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -1605,7 +1536,7 @@ https-proxy-agent@^2.2.1: agent-base "^4.3.0" debug "^3.1.0" -iconv-lite@0.4.24, iconv-lite@^0.4.4: +iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -1664,11 +1595,6 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -ini@~1.3.0: - version "1.3.5" - resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" - integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== - inline-source-map@~0.6.0: version "0.6.2" resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5" @@ -1775,11 +1701,6 @@ is-fullwidth-code-point@^1.0.0: dependencies: number-is-nan "^1.0.0" -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -2284,7 +2205,7 @@ minimist@0.0.8: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= -minimist@^1.1.3, minimist@^1.2.0: +minimist@^1.1.3: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= @@ -2294,21 +2215,6 @@ minimist@~0.0.1: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= -minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: - version "2.9.0" - resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" - integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== - dependencies: - safe-buffer "^5.1.2" - yallist "^3.0.0" - -minizlib@^1.2.1: - version "1.3.3" - resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" - integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== - dependencies: - minipass "^2.9.0" - mixin-deep@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -2317,7 +2223,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1: +mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= @@ -2356,15 +2262,6 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" -needle@^2.2.1: - version "2.4.0" - resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" - integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg== - dependencies: - debug "^3.2.6" - iconv-lite "^0.4.4" - sax "^1.2.4" - negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" @@ -2380,22 +2277,6 @@ node-fetch@~2.1.2: resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.1.2.tgz#ab884e8e7e57e38a944753cec706f788d1768bb5" integrity sha1-q4hOjn5X44qUR1POxwb3iNF2i7U= -node-pre-gyp@*: - version "0.14.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" - integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== - dependencies: - detect-libc "^1.0.2" - mkdirp "^0.5.1" - needle "^2.2.1" - nopt "^4.0.1" - npm-packlist "^1.1.6" - npmlog "^4.0.2" - rc "^1.2.7" - rimraf "^2.6.1" - semver "^5.3.0" - tar "^4.4.2" - nopt@3.x: version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" @@ -2403,14 +2284,6 @@ nopt@3.x: dependencies: abbrev "1" -nopt@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" - integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= - dependencies: - abbrev "1" - osenv "^0.1.4" - normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -2445,7 +2318,7 @@ npm-normalize-package-bin@^1.0.1: resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== -npm-packlist@^1.1.6, npm-packlist@^1.4.1: +npm-packlist@^1.4.1: version "1.4.7" resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.7.tgz#9e954365a06b80b18111ea900945af4f88ed4848" integrity sha512-vAj7dIkp5NhieaGZxBJB8fF4R0078rqsmhJcAfXZ6O7JJhjhPK96n5Ry1oZcfLXgfun0GWTZPOxaEyqv8GBykQ== @@ -2453,16 +2326,6 @@ npm-packlist@^1.1.6, npm-packlist@^1.4.1: ignore-walk "^3.0.1" npm-bundled "^1.0.1" -npmlog@^4.0.2: - version "4.1.2" - resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" - integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== - dependencies: - are-we-there-yet "~1.1.2" - console-control-strings "~1.1.0" - gauge "~2.7.3" - set-blocking "~2.0.0" - null-check@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd" @@ -2473,7 +2336,7 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= -object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: +object-assign@^4.0.1, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -2557,19 +2420,11 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" -os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: +os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= -osenv@^0.1.4: - version "0.1.5" - resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" - integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== - dependencies: - os-homedir "^1.0.0" - os-tmpdir "^1.0.0" - p-limit@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537" @@ -2832,16 +2687,6 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" -rc@^1.2.7: - version "1.2.8" - resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" - integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== - dependencies: - deep-extend "^0.6.0" - ini "~1.3.0" - minimist "^1.2.0" - strip-json-comments "~2.0.1" - read-pkg-up@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" @@ -2868,7 +2713,7 @@ read-pkg@^1.0.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@~2.3.6: +readable-stream@^2.0.2, readable-stream@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== @@ -2988,7 +2833,7 @@ rfdc@^1.1.4: resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.1.4.tgz#ba72cc1367a0ccd9cf81a870b3b58bd3ad07f8c2" integrity sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug== -rimraf@2, rimraf@^2.6.0, rimraf@^2.6.1: +rimraf@2, rimraf@^2.6.0: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -3099,11 +2944,6 @@ safe-regex@^1.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -sax@^1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" - integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== - seedrandom@2.4.3: version "2.4.3" resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-2.4.3.tgz#2438504dad33917314bff18ac4d794f16d6aaecc" @@ -3124,7 +2964,7 @@ serialize-javascript@^2.1.2: resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== -set-blocking@^2.0.0, set-blocking@~2.0.0: +set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= @@ -3378,14 +3218,6 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2": - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.0.0" - string_decoder@^1.1.1, string_decoder@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -3407,13 +3239,6 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: dependencies: ansi-regex "^2.0.0" -strip-ansi@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" - integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= - dependencies: - ansi-regex "^3.0.0" - strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" @@ -3428,11 +3253,6 @@ strip-indent@^1.0.1: dependencies: get-stdin "^4.0.1" -strip-json-comments@~2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= - supports-color@^3.1.0: version "3.2.3" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" @@ -3454,19 +3274,6 @@ supports-color@^6.1.0: dependencies: has-flag "^3.0.0" -tar@^4.4.2: - version "4.4.13" - resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" - integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== - dependencies: - chownr "^1.1.1" - fs-minipass "^1.2.5" - minipass "^2.8.6" - minizlib "^1.2.1" - mkdirp "^0.5.0" - safe-buffer "^5.1.2" - yallist "^3.0.3" - terser@^4.1.0: version "4.4.3" resolved "https://registry.yarnpkg.com/terser/-/terser-4.4.3.tgz#401abc52b88869cf904412503b1eb7da093ae2f0" @@ -3770,13 +3577,6 @@ which@^1.1.1, which@^1.2.1: dependencies: isexe "^2.0.0" -wide-align@^1.1.0: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" @@ -3846,11 +3646,6 @@ yallist@^2.1.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= -yallist@^3.0.0, yallist@^3.0.3: - version "3.1.1" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" - integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== - yargs-parser@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" From d3eded16bc2e140495d78a476c97eaed11da1a08 Mon Sep 17 00:00:00 2001 From: Ann Yuan Date: Sun, 22 Dec 2019 10:39:28 -0500 Subject: [PATCH 21/34] compiles --- tfjs-backend-wasm/src/cc/kernels/ScatterND.cc | 26 +++++++++++++++---- tfjs-backend-wasm/src/cc/scatter_impl.cc | 25 +++++++++++++++--- tfjs-backend-wasm/src/cc/scatter_impl.h | 7 ++--- 3 files changed, 47 insertions(+), 11 deletions(-) diff --git a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc index 8a3c7442253..6654069791b 100644 --- a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc +++ b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc @@ -39,13 +39,29 @@ void ScatterND(size_t indices_id, size_t updates_id, const DType dtype, auto& updates_info = backend::get_tensor_info(updates_id); const std::vector& strides = std::vector(strides_ptr, strides_ptr + slice_rank); - const int* indices_buf = indices_info.i32(); - const float* updates_buf = updates_info.f32(); auto& out_info = backend::get_tensor_info_out(out_id); - float* out_buf = out_info.f32_write(); - tfjs::wasm::scatter(indices_buf, updates_buf, slice_rank, num_updates, - slice_size, strides, output_size, out_buf); + + switch (dtype) { + case DType::float32: + tfjs::wasm::scatter(indices_buf, updates_info.f32(), slice_rank, + num_updates, slice_size, strides, output_size, + out_info.f32_write()); + break; + case DType::int32: + tfjs::wasm::scatter(indices_buf, updates_info.i32(), slice_rank, + num_updates, slice_size, strides, + output_size, out_info.i32_write()); + break; + case DType::boolean: + tfjs::wasm::scatter(indices_buf, updates_info.b(), slice_rank, + num_updates, slice_size, strides, output_size, + out_info.b_write()); + break; + default: + util::warn("Scatter for tensor id %d failed. Unknown dtype %d", + indices_id, dtype); + } } } // extern "C" } // namespace wasm diff --git a/tfjs-backend-wasm/src/cc/scatter_impl.cc b/tfjs-backend-wasm/src/cc/scatter_impl.cc index a643ac444c1..f920e17157d 100644 --- a/tfjs-backend-wasm/src/cc/scatter_impl.cc +++ b/tfjs-backend-wasm/src/cc/scatter_impl.cc @@ -23,10 +23,12 @@ namespace tfjs { namespace wasm { -void scatter(const int* indices_ptr, const float* updates_ptr, - size_t slice_rank, size_t num_updates, size_t slice_size, + +template +void scatter(const int* indices_ptr, const T* updates_ptr, size_t slice_rank, + size_t num_updates, size_t slice_size, const std::vector& strides_ptr, size_t output_size, - float* out_buf_ptr) { + T* out_buf_ptr) { // Initialize output to 0. memset(out_buf_ptr, 0, output_size * sizeof(float)); @@ -50,5 +52,22 @@ void scatter(const int* indices_ptr, const float* updates_ptr, out_buf_ptr -= (flattened_index * slice_size + slice_size); } } + +template void scatter(const int* indices_ptr, const float* updates_ptr, + size_t slice_rank, size_t num_updates, + size_t slice_size, + const std::vector& strides_ptr, + size_t output_size, float* out_buf_ptr); +template void scatter(const int* indices_ptr, const int* updates_ptr, + size_t slice_rank, size_t num_updates, + size_t slice_size, + const std::vector& strides_ptr, + size_t output_size, int* out_buf_ptr); +template void scatter(const int* indices_ptr, const bool* updates_ptr, + size_t slice_rank, size_t num_updates, + size_t slice_size, + const std::vector& strides_ptr, + size_t output_size, bool* out_buf_ptr); + } // namespace wasm } // namespace tfjs diff --git a/tfjs-backend-wasm/src/cc/scatter_impl.h b/tfjs-backend-wasm/src/cc/scatter_impl.h index b117a899b0c..5e2d617e574 100644 --- a/tfjs-backend-wasm/src/cc/scatter_impl.h +++ b/tfjs-backend-wasm/src/cc/scatter_impl.h @@ -21,10 +21,11 @@ namespace tfjs { namespace wasm { -void scatter(const int* indices_ptr, const float* updates_ptr, - size_t slice_rank, size_t num_updates, size_t slice_size, +template +void scatter(const int* indices_ptr, const T* updates_ptr, size_t slice_rank, + size_t num_updates, size_t slice_size, const std::vector& strides_ptr, size_t output_size, - float* out_buf_ptr); + T* out_buf_ptr); } // namespace wasm } // namespace tfjs From 0f596e82eaad634d5cddae05145e9522296de249 Mon Sep 17 00:00:00 2001 From: Ann Yuan Date: Sun, 22 Dec 2019 10:49:00 -0500 Subject: [PATCH 22/34] tests pass --- tfjs-backend-wasm/src/cc/kernels/ScatterND.cc | 10 +++++----- tfjs-backend-wasm/src/cc/scatter_impl.cc | 13 +++++++----- tfjs-backend-wasm/src/cc/scatter_impl.h | 2 +- tfjs-backend-wasm/src/index_test.ts | 20 ++----------------- 4 files changed, 16 insertions(+), 29 deletions(-) diff --git a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc index 6654069791b..da8444c144a 100644 --- a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc +++ b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc @@ -46,17 +46,17 @@ void ScatterND(size_t indices_id, size_t updates_id, const DType dtype, case DType::float32: tfjs::wasm::scatter(indices_buf, updates_info.f32(), slice_rank, num_updates, slice_size, strides, output_size, - out_info.f32_write()); + sizeof(float), out_info.f32_write()); break; case DType::int32: - tfjs::wasm::scatter(indices_buf, updates_info.i32(), slice_rank, - num_updates, slice_size, strides, - output_size, out_info.i32_write()); + tfjs::wasm::scatter( + indices_buf, updates_info.i32(), slice_rank, num_updates, slice_size, + strides, output_size, sizeof(int32), out_info.i32_write()); break; case DType::boolean: tfjs::wasm::scatter(indices_buf, updates_info.b(), slice_rank, num_updates, slice_size, strides, output_size, - out_info.b_write()); + sizeof(bool), out_info.b_write()); break; default: util::warn("Scatter for tensor id %d failed. Unknown dtype %d", diff --git a/tfjs-backend-wasm/src/cc/scatter_impl.cc b/tfjs-backend-wasm/src/cc/scatter_impl.cc index f920e17157d..96d68fdd422 100644 --- a/tfjs-backend-wasm/src/cc/scatter_impl.cc +++ b/tfjs-backend-wasm/src/cc/scatter_impl.cc @@ -28,9 +28,9 @@ template void scatter(const int* indices_ptr, const T* updates_ptr, size_t slice_rank, size_t num_updates, size_t slice_size, const std::vector& strides_ptr, size_t output_size, - T* out_buf_ptr) { + size_t dtype_size, T* out_buf_ptr) { // Initialize output to 0. - memset(out_buf_ptr, 0, output_size * sizeof(float)); + memset(out_buf_ptr, 0, output_size * dtype_size); for (size_t i = 0; i < num_updates; ++i) { size_t flattened_index = 0; @@ -57,17 +57,20 @@ template void scatter(const int* indices_ptr, const float* updates_ptr, size_t slice_rank, size_t num_updates, size_t slice_size, const std::vector& strides_ptr, - size_t output_size, float* out_buf_ptr); + size_t output_size, size_t dtype_size, + float* out_buf_ptr); template void scatter(const int* indices_ptr, const int* updates_ptr, size_t slice_rank, size_t num_updates, size_t slice_size, const std::vector& strides_ptr, - size_t output_size, int* out_buf_ptr); + size_t output_size, size_t dtype_size, + int* out_buf_ptr); template void scatter(const int* indices_ptr, const bool* updates_ptr, size_t slice_rank, size_t num_updates, size_t slice_size, const std::vector& strides_ptr, - size_t output_size, bool* out_buf_ptr); + size_t output_size, size_t dtype_size, + bool* out_buf_ptr); } // namespace wasm } // namespace tfjs diff --git a/tfjs-backend-wasm/src/cc/scatter_impl.h b/tfjs-backend-wasm/src/cc/scatter_impl.h index 5e2d617e574..e0ff3085238 100644 --- a/tfjs-backend-wasm/src/cc/scatter_impl.h +++ b/tfjs-backend-wasm/src/cc/scatter_impl.h @@ -25,7 +25,7 @@ template void scatter(const int* indices_ptr, const T* updates_ptr, size_t slice_rank, size_t num_updates, size_t slice_size, const std::vector& strides_ptr, size_t output_size, - T* out_buf_ptr); + size_t dtype_size, T* out_buf_ptr); } // namespace wasm } // namespace tfjs diff --git a/tfjs-backend-wasm/src/index_test.ts b/tfjs-backend-wasm/src/index_test.ts index 58caa02493e..370615f2cf3 100644 --- a/tfjs-backend-wasm/src/index_test.ts +++ b/tfjs-backend-wasm/src/index_test.ts @@ -58,8 +58,8 @@ describeWithFlags('wasm init', BROWSER_ENVS, () => { }, 100); // Silences backend registration warnings. - // spyOn(console, 'warn'); - // spyOn(console, 'log'); + spyOn(console, 'warn'); + spyOn(console, 'log'); }); afterEach(() => { @@ -92,20 +92,4 @@ describeWithFlags('wasm init', BROWSER_ENVS, () => { expect(() => setWasmPath('too/late')) .toThrowError(/The WASM backend was already initialized. Make sure/); }); - - fit('should work for 2d', async () => { - const indices = tf.tensor1d([0, 4, 2], 'int32'); - const updates = tf.tensor2d( - [100, 101, 102, 777, 778, 779, 1000, 1001, 1002], [3, 3], 'int32'); - const shape = [5, 3]; - const result = tf.scatterND(indices, updates, shape); - expect(result.shape).toEqual(shape); - expect(result.dtype).toEqual(updates.dtype); - const resultData = await result.data(); - console.log(Array.from(resultData)); - console.log(result.dtype); - // expectArraysClose( - // await result.data(), - // [100, 101, 102, 0, 0, 0, 1000, 1001, 1002, 0, 0, 0, 777, 778, 779]); - }); }); From f1f7e6db24b602b709f5887ce5f798c3d7d8358a Mon Sep 17 00:00:00 2001 From: Ann Yuan Date: Sun, 22 Dec 2019 10:55:36 -0500 Subject: [PATCH 23/34] remove imports --- tfjs-backend-wasm/src/cc/kernels/ScatterND.cc | 1 - tfjs-backend-wasm/src/cc/kernels/ScatterND.h | 2 -- 2 files changed, 3 deletions(-) diff --git a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc index da8444c144a..e618e04287e 100644 --- a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc +++ b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc @@ -18,7 +18,6 @@ #include "src/cc/kernels/ScatterND.h" -#include #include #include "src/cc/backend.h" diff --git a/tfjs-backend-wasm/src/cc/kernels/ScatterND.h b/tfjs-backend-wasm/src/cc/kernels/ScatterND.h index e51526a51ca..90b0ea22662 100644 --- a/tfjs-backend-wasm/src/cc/kernels/ScatterND.h +++ b/tfjs-backend-wasm/src/cc/kernels/ScatterND.h @@ -15,9 +15,7 @@ #ifndef KERNELS_SCATTERND_H_ #define KERNELS_SCATTERND_H_ -#include #include "src/cc/backend.h" -#include "src/cc/util.h" namespace tfjs { namespace wasm { From 280c1bd38cd325c5fb93e078f079c7d8114f7ba2 Mon Sep 17 00:00:00 2001 From: Ann Yuan Date: Sun, 22 Dec 2019 11:09:27 -0500 Subject: [PATCH 24/34] lock --- tfjs-backend-wasm/yarn.lock | 223 ++++++++++++++++++++++++++++++++++-- 1 file changed, 214 insertions(+), 9 deletions(-) diff --git a/tfjs-backend-wasm/yarn.lock b/tfjs-backend-wasm/yarn.lock index c00fdc56574..4ce2f89c464 100644 --- a/tfjs-backend-wasm/yarn.lock +++ b/tfjs-backend-wasm/yarn.lock @@ -191,6 +191,11 @@ ansi-regex@^2.0.0: resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -211,6 +216,19 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" +aproba@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +are-we-there-yet@~1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + arg@^4.1.0: version "4.1.2" resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.2.tgz#e70c90579e02c63d80e3ad4e31d8bfdb8bd50064" @@ -657,6 +675,11 @@ chokidar@^2.0.3: optionalDependencies: fsevents "^1.2.7" +chownr@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.3.tgz#42d837d5239688d55f303003a508230fa6727142" + integrity sha512-i70fVHhmV3DtTl6nqvZOnIjbY0Pe4kAUjwHj8z0zAdgBtYrJyYwLKCCuRBQ5ppkyL0AkN7HKRnETdmdp1zqNXw== + cipher-base@^1.0.0, cipher-base@^1.0.1, cipher-base@^1.0.3: version "1.0.4" resolved "https://registry.yarnpkg.com/cipher-base/-/cipher-base-1.0.4.tgz#8760e4ecc272f4c363532f926d874aae2c1397de" @@ -788,6 +811,11 @@ console-browserify@^1.1.0: resolved "https://registry.yarnpkg.com/console-browserify/-/console-browserify-1.2.0.tgz#67063cef57ceb6cf4993a2ab3a55840ae8c49336" integrity sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA== +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + constants-browserify@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" @@ -941,6 +969,11 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + deep-is@~0.1.3: version "0.1.3" resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" @@ -975,6 +1008,11 @@ define-property@^2.0.2: is-descriptor "^1.0.2" isobject "^3.0.1" +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + depd@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" @@ -988,6 +1026,11 @@ des.js@^1.0.0: inherits "^2.0.1" minimalistic-assert "^1.0.0" +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= + di@^0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" @@ -1335,6 +1378,13 @@ fs-extra@^7.0.1: jsonfile "^4.0.0" universalify "^0.1.0" +fs-minipass@^1.2.5: + version "1.2.7" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.7.tgz#ccff8570841e7fe4265693da88936c55aed7f7c7" + integrity sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA== + dependencies: + minipass "^2.6.0" + fs.realpath@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" @@ -1358,6 +1408,20 @@ fstream@^1.0.12: mkdirp ">=0.5 0" rimraf "2" +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= + dependencies: + aproba "^1.0.3" + console-control-strings "^1.0.0" + has-unicode "^2.0.0" + object-assign "^4.1.0" + signal-exit "^3.0.0" + string-width "^1.0.1" + strip-ansi "^3.0.1" + wide-align "^1.1.0" + get-caller-file@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" @@ -1442,6 +1506,11 @@ has-flag@^3.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + has-value@^0.3.1: version "0.3.1" resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" @@ -1536,7 +1605,7 @@ https-proxy-agent@^2.2.1: agent-base "^4.3.0" debug "^3.1.0" -iconv-lite@0.4.24: +iconv-lite@0.4.24, iconv-lite@^0.4.4: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== @@ -1595,6 +1664,11 @@ inherits@2.0.3: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= +ini@~1.3.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + inline-source-map@~0.6.0: version "0.6.2" resolved "https://registry.yarnpkg.com/inline-source-map/-/inline-source-map-0.6.2.tgz#f9393471c18a79d1724f863fa38b586370ade2a5" @@ -1701,6 +1775,11 @@ is-fullwidth-code-point@^1.0.0: dependencies: number-is-nan "^1.0.0" +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + is-glob@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" @@ -2205,7 +2284,7 @@ minimist@0.0.8: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= -minimist@^1.1.3: +minimist@^1.1.3, minimist@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= @@ -2215,6 +2294,21 @@ minimist@~0.0.1: resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= +minipass@^2.6.0, minipass@^2.8.6, minipass@^2.9.0: + version "2.9.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.9.0.tgz#e713762e7d3e32fed803115cf93e04bca9fcc9a6" + integrity sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.2.1: + version "1.3.3" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.3.3.tgz#2290de96818a34c29551c8a8d301216bd65a861d" + integrity sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q== + dependencies: + minipass "^2.9.0" + mixin-deep@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" @@ -2223,7 +2317,7 @@ mixin-deep@^1.2.0: for-in "^1.0.2" is-extendable "^1.0.1" -mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.1: +mkdirp@0.5.x, "mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= @@ -2262,6 +2356,15 @@ nanomatch@^1.2.9: snapdragon "^0.8.1" to-regex "^3.0.1" +needle@^2.2.1: + version "2.4.0" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" + integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg== + dependencies: + debug "^3.2.6" + iconv-lite "^0.4.4" + sax "^1.2.4" + negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" @@ -2277,6 +2380,22 @@ node-fetch@~2.1.2: resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.1.2.tgz#ab884e8e7e57e38a944753cec706f788d1768bb5" integrity sha1-q4hOjn5X44qUR1POxwb3iNF2i7U= +node-pre-gyp@*: + version "0.14.0" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" + integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.1" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.2.7" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^4.4.2" + nopt@3.x: version "3.0.6" resolved "https://registry.yarnpkg.com/nopt/-/nopt-3.0.6.tgz#c6465dbf08abcd4db359317f79ac68a646b28ff9" @@ -2284,6 +2403,14 @@ nopt@3.x: dependencies: abbrev "1" +nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= + dependencies: + abbrev "1" + osenv "^0.1.4" + normalize-package-data@^2.3.2, normalize-package-data@^2.3.4: version "2.5.0" resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" @@ -2318,7 +2445,7 @@ npm-normalize-package-bin@^1.0.1: resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== -npm-packlist@^1.4.1: +npm-packlist@^1.1.6, npm-packlist@^1.4.1: version "1.4.7" resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.7.tgz#9e954365a06b80b18111ea900945af4f88ed4848" integrity sha512-vAj7dIkp5NhieaGZxBJB8fF4R0078rqsmhJcAfXZ6O7JJhjhPK96n5Ry1oZcfLXgfun0GWTZPOxaEyqv8GBykQ== @@ -2326,6 +2453,16 @@ npm-packlist@^1.4.1: ignore-walk "^3.0.1" npm-bundled "^1.0.1" +npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== + dependencies: + are-we-there-yet "~1.1.2" + console-control-strings "~1.1.0" + gauge "~2.7.3" + set-blocking "~2.0.0" + null-check@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/null-check/-/null-check-1.0.0.tgz#977dffd7176012b9ec30d2a39db5cf72a0439edd" @@ -2336,7 +2473,7 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= -object-assign@^4.0.1, object-assign@^4.1.1: +object-assign@^4.0.1, object-assign@^4.1.0, object-assign@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= @@ -2420,11 +2557,19 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" -os-tmpdir@~1.0.2: +os-tmpdir@^1.0.0, os-tmpdir@~1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= +osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + p-limit@^2.2.0: version "2.2.1" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.1.tgz#aa07a788cc3151c939b5131f63570f0dd2009537" @@ -2687,6 +2832,16 @@ raw-body@2.4.0: iconv-lite "0.4.24" unpipe "1.0.0" +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + read-pkg-up@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" @@ -2713,7 +2868,7 @@ read-pkg@^1.0.0: string_decoder "^1.1.1" util-deprecate "^1.0.1" -readable-stream@^2.0.2, readable-stream@~2.3.6: +readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@~2.3.6: version "2.3.6" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== @@ -2833,7 +2988,7 @@ rfdc@^1.1.4: resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.1.4.tgz#ba72cc1367a0ccd9cf81a870b3b58bd3ad07f8c2" integrity sha512-5C9HXdzK8EAqN7JDif30jqsBzavB7wLpaubisuQIGHWf2gUXSpzy6ArX/+Da8RjFpagWsCn+pIgxTMAmKw9Zug== -rimraf@2, rimraf@^2.6.0: +rimraf@2, rimraf@^2.6.0, rimraf@^2.6.1: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== @@ -2944,6 +3099,11 @@ safe-regex@^1.1.0: resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== +sax@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + seedrandom@2.4.3: version "2.4.3" resolved "https://registry.yarnpkg.com/seedrandom/-/seedrandom-2.4.3.tgz#2438504dad33917314bff18ac4d794f16d6aaecc" @@ -2964,7 +3124,7 @@ serialize-javascript@^2.1.2: resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== -set-blocking@^2.0.0: +set-blocking@^2.0.0, set-blocking@~2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= @@ -3218,6 +3378,14 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" +"string-width@^1.0.2 || 2": + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + string_decoder@^1.1.1, string_decoder@^1.2.0: version "1.3.0" resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" @@ -3239,6 +3407,13 @@ strip-ansi@^3.0.0, strip-ansi@^3.0.1: dependencies: ansi-regex "^2.0.0" +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + strip-bom@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" @@ -3253,6 +3428,11 @@ strip-indent@^1.0.1: dependencies: get-stdin "^4.0.1" +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + supports-color@^3.1.0: version "3.2.3" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" @@ -3274,6 +3454,19 @@ supports-color@^6.1.0: dependencies: has-flag "^3.0.0" +tar@^4.4.2: + version "4.4.13" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" + integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== + dependencies: + chownr "^1.1.1" + fs-minipass "^1.2.5" + minipass "^2.8.6" + minizlib "^1.2.1" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.3" + terser@^4.1.0: version "4.4.3" resolved "https://registry.yarnpkg.com/terser/-/terser-4.4.3.tgz#401abc52b88869cf904412503b1eb7da093ae2f0" @@ -3577,6 +3770,13 @@ which@^1.1.1, which@^1.2.1: dependencies: isexe "^2.0.0" +wide-align@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + word-wrap@~1.2.3: version "1.2.3" resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" @@ -3646,6 +3846,11 @@ yallist@^2.1.2: resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= +yallist@^3.0.0, yallist@^3.0.3: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + yargs-parser@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.0.tgz#275ecf0d7ffe05c77e64e7c86e4cd94bf0e1228a" From 70f89e18ed99eee7573b0c8868eb6fe08bda5887 Mon Sep 17 00:00:00 2001 From: Ann Yuan Date: Mon, 23 Dec 2019 12:29:46 -0500 Subject: [PATCH 25/34] install --- tfjs-backend-wasm/yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tfjs-backend-wasm/yarn.lock b/tfjs-backend-wasm/yarn.lock index 4ce2f89c464..3df88bde3c2 100644 --- a/tfjs-backend-wasm/yarn.lock +++ b/tfjs-backend-wasm/yarn.lock @@ -98,9 +98,9 @@ integrity sha512-056oRlBBp7MDzr+HoU5su099s/s7wjZ3KcHxLfv+Byqb9MwdLUvsfLgw1VS97hsh3ddxSPyQu+olHMnoVTUY6g== "@types/node@*": - version "12.12.21" - resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.21.tgz#aa44a6363291c7037111c47e4661ad210aded23f" - integrity sha512-8sRGhbpU+ck1n0PGAUgVrWrWdjSW2aqNeyC15W88GRsMpSwzv6RJGlLhE7s2RhVSOdyDmxbqlWSeThq4/7xqlA== + version "13.1.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-13.1.0.tgz#225cbaac5fdb2b9ac651b02c070d8aa3c37cc812" + integrity sha512-zwrxviZS08kRX40nqBrmERElF2vpw4IUTd5khkhBTfFH8AOaeoLVx48EC4+ZzS2/Iga7NevncqnsUSYjM4OWYA== "@types/offscreencanvas@~2019.3.0": version "2019.3.0" From 5c2bb2e3c6cb494f4d143f26a153d024d2c3fa6f Mon Sep 17 00:00:00 2001 From: Ann Yuan Date: Mon, 23 Dec 2019 12:35:44 -0500 Subject: [PATCH 26/34] remove impl --- tfjs-backend-wasm/src/cc/BUILD | 7 -- tfjs-backend-wasm/src/cc/kernels/ScatterND.cc | 70 ++++++++++++++--- tfjs-backend-wasm/src/cc/scatter_impl.cc | 76 ------------------- tfjs-backend-wasm/src/cc/scatter_impl.h | 33 -------- 4 files changed, 60 insertions(+), 126 deletions(-) delete mode 100644 tfjs-backend-wasm/src/cc/scatter_impl.cc delete mode 100644 tfjs-backend-wasm/src/cc/scatter_impl.h diff --git a/tfjs-backend-wasm/src/cc/BUILD b/tfjs-backend-wasm/src/cc/BUILD index 10bce9926be..f84e56bbf98 100644 --- a/tfjs-backend-wasm/src/cc/BUILD +++ b/tfjs-backend-wasm/src/cc/BUILD @@ -114,12 +114,6 @@ tfjs_cc_library( ], ) -tfjs_cc_library( - name = "scatter_impl", - srcs = ["scatter_impl.cc"], - hdrs = ["scatter_impl.h"], -) - tfjs_cc_library( name = "transpose_impl", srcs = ["transpose_impl.cc"], @@ -599,7 +593,6 @@ tfjs_cc_library( srcs = ["kernels/ScatterND.cc"], deps = [ ":backend", - ":scatter_impl", ":util", ], ) diff --git a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc index e618e04287e..c2cb552e963 100644 --- a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc +++ b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc @@ -21,9 +21,59 @@ #include #include "src/cc/backend.h" -#include "src/cc/scatter_impl.h" #include "src/cc/util.h" +namespace { +template +void scatter(const int* indices_ptr, const T* updates_ptr, size_t slice_rank, + size_t num_updates, size_t slice_size, + const std::vector& strides_ptr, size_t output_size, + size_t dtype_size, T* out_buf_ptr) { + // Initialize output to 0. + memset(out_buf_ptr, 0, output_size * dtype_size); + + for (size_t i = 0; i < num_updates; ++i) { + size_t flattened_index = 0; + for (size_t j = 0; j < slice_rank; ++j) { + flattened_index += *indices_ptr * strides_ptr[j]; + + indices_ptr++; + } + + out_buf_ptr += flattened_index * slice_size; + + for (size_t k = 0; k < slice_size; ++k) { + *out_buf_ptr += *updates_ptr; + + out_buf_ptr++; + updates_ptr++; + } + + out_buf_ptr -= (flattened_index * slice_size + slice_size); + } +} + +template void scatter(const int* indices_ptr, const float* updates_ptr, + size_t slice_rank, size_t num_updates, + size_t slice_size, + const std::vector& strides_ptr, + size_t output_size, size_t dtype_size, + float* out_buf_ptr); +template void scatter(const int* indices_ptr, const int* updates_ptr, + size_t slice_rank, size_t num_updates, + size_t slice_size, + const std::vector& strides_ptr, + size_t output_size, size_t dtype_size, + int* out_buf_ptr); +template void scatter(const int* indices_ptr, const bool* updates_ptr, + size_t slice_rank, size_t num_updates, + size_t slice_size, + const std::vector& strides_ptr, + size_t output_size, size_t dtype_size, + bool* out_buf_ptr); + +} // namespace + namespace tfjs { namespace wasm { extern "C" { @@ -43,19 +93,19 @@ void ScatterND(size_t indices_id, size_t updates_id, const DType dtype, switch (dtype) { case DType::float32: - tfjs::wasm::scatter(indices_buf, updates_info.f32(), slice_rank, - num_updates, slice_size, strides, output_size, - sizeof(float), out_info.f32_write()); + scatter(indices_buf, updates_info.f32(), slice_rank, num_updates, + slice_size, strides, output_size, sizeof(float), + out_info.f32_write()); break; case DType::int32: - tfjs::wasm::scatter( - indices_buf, updates_info.i32(), slice_rank, num_updates, slice_size, - strides, output_size, sizeof(int32), out_info.i32_write()); + scatter(indices_buf, updates_info.i32(), slice_rank, num_updates, + slice_size, strides, output_size, sizeof(int32), + out_info.i32_write()); break; case DType::boolean: - tfjs::wasm::scatter(indices_buf, updates_info.b(), slice_rank, - num_updates, slice_size, strides, output_size, - sizeof(bool), out_info.b_write()); + scatter(indices_buf, updates_info.b(), slice_rank, num_updates, + slice_size, strides, output_size, sizeof(bool), + out_info.b_write()); break; default: util::warn("Scatter for tensor id %d failed. Unknown dtype %d", diff --git a/tfjs-backend-wasm/src/cc/scatter_impl.cc b/tfjs-backend-wasm/src/cc/scatter_impl.cc deleted file mode 100644 index 96d68fdd422..00000000000 --- a/tfjs-backend-wasm/src/cc/scatter_impl.cc +++ /dev/null @@ -1,76 +0,0 @@ -/* Copyright 2019 Google Inc. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ===========================================================================*/ - -#ifdef __EMSCRIPTEN__ -#include -#endif - -#include "src/cc/scatter_impl.h" - -#include -#include - -namespace tfjs { -namespace wasm { - -template -void scatter(const int* indices_ptr, const T* updates_ptr, size_t slice_rank, - size_t num_updates, size_t slice_size, - const std::vector& strides_ptr, size_t output_size, - size_t dtype_size, T* out_buf_ptr) { - // Initialize output to 0. - memset(out_buf_ptr, 0, output_size * dtype_size); - - for (size_t i = 0; i < num_updates; ++i) { - size_t flattened_index = 0; - for (size_t j = 0; j < slice_rank; ++j) { - flattened_index += *indices_ptr * strides_ptr[j]; - - indices_ptr++; - } - - out_buf_ptr += flattened_index * slice_size; - - for (size_t k = 0; k < slice_size; ++k) { - *out_buf_ptr += *updates_ptr; - - out_buf_ptr++; - updates_ptr++; - } - - out_buf_ptr -= (flattened_index * slice_size + slice_size); - } -} - -template void scatter(const int* indices_ptr, const float* updates_ptr, - size_t slice_rank, size_t num_updates, - size_t slice_size, - const std::vector& strides_ptr, - size_t output_size, size_t dtype_size, - float* out_buf_ptr); -template void scatter(const int* indices_ptr, const int* updates_ptr, - size_t slice_rank, size_t num_updates, - size_t slice_size, - const std::vector& strides_ptr, - size_t output_size, size_t dtype_size, - int* out_buf_ptr); -template void scatter(const int* indices_ptr, const bool* updates_ptr, - size_t slice_rank, size_t num_updates, - size_t slice_size, - const std::vector& strides_ptr, - size_t output_size, size_t dtype_size, - bool* out_buf_ptr); - -} // namespace wasm -} // namespace tfjs diff --git a/tfjs-backend-wasm/src/cc/scatter_impl.h b/tfjs-backend-wasm/src/cc/scatter_impl.h deleted file mode 100644 index e0ff3085238..00000000000 --- a/tfjs-backend-wasm/src/cc/scatter_impl.h +++ /dev/null @@ -1,33 +0,0 @@ -/* Copyright 2019 Google Inc. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ===========================================================================*/ - -#ifndef SCATTER_IMPL_H_ -#define SCATTER_IMPL_H_ - -#include -#include - -namespace tfjs { -namespace wasm { - -template -void scatter(const int* indices_ptr, const T* updates_ptr, size_t slice_rank, - size_t num_updates, size_t slice_size, - const std::vector& strides_ptr, size_t output_size, - size_t dtype_size, T* out_buf_ptr); - -} // namespace wasm -} // namespace tfjs - -#endif // SCATTER_IMPL_H_ From 653fc35a0932d09bd87f85900c2029f456d4e82c Mon Sep 17 00:00:00 2001 From: Ann Yuan Date: Mon, 23 Dec 2019 12:44:24 -0500 Subject: [PATCH 27/34] clean --- tfjs-backend-wasm/src/cc/BUILD | 1 - tfjs-backend-wasm/src/cc/kernels/ScatterND.cc | 21 ------------ tfjs-backend-wasm/src/cc/kernels/ScatterND.h | 32 ------------------- 3 files changed, 54 deletions(-) delete mode 100644 tfjs-backend-wasm/src/cc/kernels/ScatterND.h diff --git a/tfjs-backend-wasm/src/cc/BUILD b/tfjs-backend-wasm/src/cc/BUILD index f84e56bbf98..6a68a8025b9 100644 --- a/tfjs-backend-wasm/src/cc/BUILD +++ b/tfjs-backend-wasm/src/cc/BUILD @@ -589,7 +589,6 @@ tfjs_unit_test( tfjs_cc_library( name = "ScatterND", - hdrs = ["kernels/ScatterND.h"], srcs = ["kernels/ScatterND.cc"], deps = [ ":backend", diff --git a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc index c2cb552e963..d51357d2922 100644 --- a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc +++ b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc @@ -16,8 +16,6 @@ #include #endif -#include "src/cc/kernels/ScatterND.h" - #include #include "src/cc/backend.h" @@ -53,25 +51,6 @@ void scatter(const int* indices_ptr, const T* updates_ptr, size_t slice_rank, } } -template void scatter(const int* indices_ptr, const float* updates_ptr, - size_t slice_rank, size_t num_updates, - size_t slice_size, - const std::vector& strides_ptr, - size_t output_size, size_t dtype_size, - float* out_buf_ptr); -template void scatter(const int* indices_ptr, const int* updates_ptr, - size_t slice_rank, size_t num_updates, - size_t slice_size, - const std::vector& strides_ptr, - size_t output_size, size_t dtype_size, - int* out_buf_ptr); -template void scatter(const int* indices_ptr, const bool* updates_ptr, - size_t slice_rank, size_t num_updates, - size_t slice_size, - const std::vector& strides_ptr, - size_t output_size, size_t dtype_size, - bool* out_buf_ptr); - } // namespace namespace tfjs { diff --git a/tfjs-backend-wasm/src/cc/kernels/ScatterND.h b/tfjs-backend-wasm/src/cc/kernels/ScatterND.h deleted file mode 100644 index 90b0ea22662..00000000000 --- a/tfjs-backend-wasm/src/cc/kernels/ScatterND.h +++ /dev/null @@ -1,32 +0,0 @@ -/* Copyright 2019 Google Inc. All Rights Reserved. - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * ===========================================================================*/ - -#ifndef KERNELS_SCATTERND_H_ -#define KERNELS_SCATTERND_H_ - -#include "src/cc/backend.h" - -namespace tfjs { -namespace wasm { -extern "C" { - -void ScatterND(size_t indices_id, size_t updates_id, const DType dtype, - size_t slice_rank, size_t num_updates, size_t slice_size, - size_t* strides_ptr, size_t output_size, size_t out_id); -} - -} // namespace wasm -} // namespace tfjs - -#endif // KERNELS_SCATTERND_H_ From 84d52e23223be005cff4097ee1bf154faf6dfac3 Mon Sep 17 00:00:00 2001 From: Ann Yuan Date: Mon, 23 Dec 2019 12:54:23 -0500 Subject: [PATCH 28/34] use const --- tfjs-backend-wasm/src/cc/kernels/ScatterND.cc | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc index d51357d2922..53768d3105f 100644 --- a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc +++ b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc @@ -23,10 +23,11 @@ namespace { template -void scatter(const int* indices_ptr, const T* updates_ptr, size_t slice_rank, - size_t num_updates, size_t slice_size, - const std::vector& strides_ptr, size_t output_size, - size_t dtype_size, T* out_buf_ptr) { +void scatter(const int* indices_ptr, const T* updates_ptr, + const size_t slice_rank, const size_t num_updates, + const size_t slice_size, const std::vector& strides_ptr, + const size_t output_size, const size_t dtype_size, + T* out_buf_ptr) { // Initialize output to 0. memset(out_buf_ptr, 0, output_size * dtype_size); @@ -60,9 +61,11 @@ extern "C" { EMSCRIPTEN_KEEPALIVE #endif -void ScatterND(size_t indices_id, size_t updates_id, const DType dtype, - size_t slice_rank, size_t num_updates, size_t slice_size, - size_t* strides_ptr, size_t output_size, size_t out_id) { +void ScatterND(const size_t indices_id, const size_t updates_id, + const DType dtype, const size_t slice_rank, + const size_t num_updates, const size_t slice_size, + const size_t* strides_ptr, const size_t output_size, + const size_t out_id) { auto& indices_info = backend::get_tensor_info(indices_id); auto& updates_info = backend::get_tensor_info(updates_id); const std::vector& strides = From bfa29a7b4e16720ccfde7801628cf4ad26bb247f Mon Sep 17 00:00:00 2001 From: Ann Yuan Date: Mon, 23 Dec 2019 12:57:08 -0500 Subject: [PATCH 29/34] fix --- tfjs-backend-wasm/src/cc/kernels/ScatterND.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc index 53768d3105f..939979a05ac 100644 --- a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc +++ b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc @@ -81,7 +81,7 @@ void ScatterND(const size_t indices_id, const size_t updates_id, break; case DType::int32: scatter(indices_buf, updates_info.i32(), slice_rank, num_updates, - slice_size, strides, output_size, sizeof(int32), + slice_size, strides, output_size, sizeof(int32_t), out_info.i32_write()); break; case DType::boolean: From ca1befbc2a306519f8b4c81d4093be7194721550 Mon Sep 17 00:00:00 2001 From: Ann Yuan Date: Mon, 23 Dec 2019 13:09:16 -0500 Subject: [PATCH 30/34] export --- tfjs-backend-wasm/src/kernels/ScatterND.ts | 7 +++---- tfjs-core/src/index.ts | 4 ++-- tfjs-core/src/ops/scatter_nd.ts | 2 +- tfjs-core/src/ops/scatter_nd_util.ts | 9 ++++++--- 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/tfjs-backend-wasm/src/kernels/ScatterND.ts b/tfjs-backend-wasm/src/kernels/ScatterND.ts index e8701681fa9..2d6f1bada56 100644 --- a/tfjs-backend-wasm/src/kernels/ScatterND.ts +++ b/tfjs-backend-wasm/src/kernels/ScatterND.ts @@ -15,7 +15,7 @@ * ============================================================================= */ -import {NamedAttrMap, NamedTensorInfoMap, registerKernel, scatter_nd_util, Tensor, TensorInfo, util} from '@tensorflow/tfjs-core'; +import {NamedAttrMap, NamedTensorInfoMap, registerKernel, scatter_util, TensorInfo, util} from '@tensorflow/tfjs-core'; import {BackendWasm} from '../backend_wasm'; import {CppDType} from './types'; @@ -62,8 +62,7 @@ function scatterND( } const {sliceRank, numUpdates, sliceSize, strides, outputSize} = - scatter_nd_util.calculateShapes( - updates as Tensor, indices as Tensor, shape); + scatter_util.calculateShapes(updates, indices, shape); const indicesData = backend.dataIdMap.get(indices.dataId); const indicesId = indicesData.id; @@ -82,7 +81,7 @@ function scatterND( } registerKernel({ - kernelName: 'ScatterND', + kernelName: 'ScatterNd', backendName: 'wasm', setupFunc: setup, kernelFunc: scatterND diff --git a/tfjs-core/src/index.ts b/tfjs-core/src/index.ts index ff33adf05cf..e6af207ac74 100644 --- a/tfjs-core/src/index.ts +++ b/tfjs-core/src/index.ts @@ -47,7 +47,7 @@ import * as backend_util from './backends/backend_util'; import * as io from './io/io'; import * as math from './math'; import * as browser from './ops/browser'; -import * as scatter_nd_util from './ops/scatter_nd_util'; +import * as scatter_util from './ops/scatter_nd_util'; import * as slice_util from './ops/slice_util'; import * as serialization from './serialization'; import {setOpHandler} from './tensor'; @@ -101,7 +101,7 @@ export { webgl, tensor_util, slice_util, - scatter_nd_util + scatter_util }; // Backend specific. diff --git a/tfjs-core/src/ops/scatter_nd.ts b/tfjs-core/src/ops/scatter_nd.ts index 4d2e2ba02d8..a09bb02e7fd 100644 --- a/tfjs-core/src/ops/scatter_nd.ts +++ b/tfjs-core/src/ops/scatter_nd.ts @@ -49,7 +49,7 @@ function scatterND_( return ENGINE.runKernelFunc( backend => backend.scatterND($indices, $updates, shape), - {indices: $indices, updates: $updates}, null /* backward */, 'ScatterND', + {indices: $indices, updates: $updates}, null /* backward */, 'ScatterNd', {shape}); } diff --git a/tfjs-core/src/ops/scatter_nd_util.ts b/tfjs-core/src/ops/scatter_nd_util.ts index 3bb5b6155da..fd013f02b9c 100644 --- a/tfjs-core/src/ops/scatter_nd_util.ts +++ b/tfjs-core/src/ops/scatter_nd_util.ts @@ -14,6 +14,7 @@ * limitations under the License. * ============================================================================= */ +import {TensorInfo} from '../kernel_registry'; import {Tensor} from '../tensor'; import {computeStrides, sizeFromShape} from '../util'; @@ -123,9 +124,11 @@ export function validateInput( * @returns ScatterShapeInfo */ export function calculateShapes( - updates: Tensor, indices: Tensor, shape: number[]): ScatterShapeInfo { + updates: TensorInfo, indices: TensorInfo, + shape: number[]): ScatterShapeInfo { // Calculate the number of dimensions in indices - const sliceRank = (indices.rank > 1) ? indices.shape[indices.rank - 1] : 1; + const indicesRank = indices.shape.length; + const sliceRank = (indicesRank > 1) ? indices.shape[indicesRank - 1] : 1; // Calculate the number of elements that make up each slice of our updated // tensor. This allows us to work with flattened tensors and copy over whole @@ -138,7 +141,7 @@ export function calculateShapes( } const safeSliceDim = (sliceRank < 1) ? 1 : sliceRank; - const numUpdates = indices.size / safeSliceDim; + const numUpdates = sizeFromShape(indices.shape) / safeSliceDim; const strides = [...computeStrides(shape.slice(0, sliceRank)), 1]; const outputSize = sizeFromShape(shape); From 0334d89335c6a7cf8b1e0b9626ec59b64ba17533 Mon Sep 17 00:00:00 2001 From: Ann Yuan Date: Mon, 23 Dec 2019 13:13:12 -0500 Subject: [PATCH 31/34] rename --- tfjs-backend-wasm/src/cc/BUILD | 6 +++--- tfjs-backend-wasm/src/cc/kernels/ScatterND.cc | 2 +- tfjs-backend-wasm/src/kernels/ScatterND.ts | 16 ++++++++-------- tfjs-backend-wasm/src/kernels/all_kernels.ts | 2 +- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/tfjs-backend-wasm/src/cc/BUILD b/tfjs-backend-wasm/src/cc/BUILD index 6a68a8025b9..9ccd7ee682e 100644 --- a/tfjs-backend-wasm/src/cc/BUILD +++ b/tfjs-backend-wasm/src/cc/BUILD @@ -172,7 +172,7 @@ tfjs_cc_library( ":Relu", ":Relu6", ":ResizeBilinear", - ":ScatterND", + ":ScatterNd", ":Sigmoid", ":Sub", ":Tile", @@ -588,8 +588,8 @@ tfjs_unit_test( ) tfjs_cc_library( - name = "ScatterND", - srcs = ["kernels/ScatterND.cc"], + name = "ScatterNd", + srcs = ["kernels/ScatterNd.cc"], deps = [ ":backend", ":util", diff --git a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc index 939979a05ac..d622a43d7fc 100644 --- a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc +++ b/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc @@ -61,7 +61,7 @@ extern "C" { EMSCRIPTEN_KEEPALIVE #endif -void ScatterND(const size_t indices_id, const size_t updates_id, +void ScatterNd(const size_t indices_id, const size_t updates_id, const DType dtype, const size_t slice_rank, const size_t num_updates, const size_t slice_size, const size_t* strides_ptr, const size_t output_size, diff --git a/tfjs-backend-wasm/src/kernels/ScatterND.ts b/tfjs-backend-wasm/src/kernels/ScatterND.ts index 2d6f1bada56..d1e01be7435 100644 --- a/tfjs-backend-wasm/src/kernels/ScatterND.ts +++ b/tfjs-backend-wasm/src/kernels/ScatterND.ts @@ -20,22 +20,22 @@ import {NamedAttrMap, NamedTensorInfoMap, registerKernel, scatter_util, TensorIn import {BackendWasm} from '../backend_wasm'; import {CppDType} from './types'; -interface ScatterNDInputs extends NamedTensorInfoMap { +interface ScatterNdInputs extends NamedTensorInfoMap { indices: TensorInfo; updates: TensorInfo; } -interface ScatterNDAttrs extends NamedAttrMap { +interface ScatterNdAttrs extends NamedAttrMap { shape: number[]; } -let wasmScatterND: ( +let wasmScatterNd: ( indicesId: number, updatesId: number, dtype: CppDType, sliceRank: number, numUpdates: number, sliceSize: number, strides: Uint8Array, outputSize: number, outId: number) => void; function setup(backend: BackendWasm): void { - wasmScatterND = backend.wasm.cwrap('ScatterND', null /*void*/, [ + wasmScatterNd = backend.wasm.cwrap('ScatterNd', null /*void*/, [ 'number', // indicesId 'number', // updatesId 'number', // dtype @@ -48,9 +48,9 @@ function setup(backend: BackendWasm): void { ]); } -function scatterND( +function scatterNd( args: - {backend: BackendWasm, inputs: ScatterNDInputs, attrs: ScatterNDAttrs}): + {backend: BackendWasm, inputs: ScatterNdInputs, attrs: ScatterNdAttrs}): TensorInfo { const {backend, inputs, attrs} = args; const {indices, updates} = inputs; @@ -73,7 +73,7 @@ function scatterND( const stridesBytes = new Uint8Array(new Int32Array(strides).buffer); const outId = backend.dataIdMap.get(out.dataId).id; - wasmScatterND( + wasmScatterNd( indicesId, updatesId, CppDType[updates.dtype], sliceRank, numUpdates, sliceSize, stridesBytes, outputSize, outId); @@ -84,5 +84,5 @@ registerKernel({ kernelName: 'ScatterNd', backendName: 'wasm', setupFunc: setup, - kernelFunc: scatterND + kernelFunc: scatterNd }); diff --git a/tfjs-backend-wasm/src/kernels/all_kernels.ts b/tfjs-backend-wasm/src/kernels/all_kernels.ts index b152d0da41a..b883514a4fc 100644 --- a/tfjs-backend-wasm/src/kernels/all_kernels.ts +++ b/tfjs-backend-wasm/src/kernels/all_kernels.ts @@ -57,7 +57,7 @@ import './Relu6'; import './Reshape'; import './ResizeBilinear'; import './Rsqrt'; -import './ScatterND'; +import './ScatterNd'; import './Sigmoid'; import './Sin'; import './Slice'; From 2d7950e6b8c9baef09f160f93b9c052d10c0f988 Mon Sep 17 00:00:00 2001 From: Ann Yuan Date: Mon, 23 Dec 2019 14:53:58 -0500 Subject: [PATCH 32/34] revert yarn.lock --- tfjs-backend-wasm/yarn.lock | 165 +++++++++++++++++------------------- 1 file changed, 79 insertions(+), 86 deletions(-) diff --git a/tfjs-backend-wasm/yarn.lock b/tfjs-backend-wasm/yarn.lock index b76ee78a621..8da2ee7c983 100644 --- a/tfjs-backend-wasm/yarn.lock +++ b/tfjs-backend-wasm/yarn.lock @@ -69,9 +69,9 @@ "@bazel/buildifier-win32_x64" "0.29.0" "@bazel/hide-bazel-files@latest": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@bazel/hide-bazel-files/-/hide-bazel-files-1.0.0.tgz#779070dcb5ae121ff6c72d73bf3fb7bf68285d75" - integrity sha512-dfw2W7xDUPlRMcDMVO8gDkX9Xb7Thy3sP4PDODv+eiHOvwIi116X/wwy7mQUZISkJdEJ1zWy9ydpzvfetpYh4w== + version "0.38.3" + resolved "https://registry.yarnpkg.com/@bazel/hide-bazel-files/-/hide-bazel-files-0.38.3.tgz#e98231d3d360d51860d9c1a7c3345b40dab4cf81" + integrity sha512-o+dNkfDm3qxWQ8h/04cWuTcjR7qnjZi3pQGv4aklVb16oPWx2jF8BzbkwvWuIkdbOl9VnqYP0vaHzwQVJRRcIA== "@tensorflow/tfjs-core@1.5.1": version "1.5.1" @@ -90,12 +90,7 @@ resolved "https://registry.yarnpkg.com/@types/emscripten/-/emscripten-0.0.34.tgz#12b4a344274fb102ff2f6c877b37587bc3e46008" integrity sha512-QSb9ojDincskc+uKMI0KXp8e1NALFINCrMlp8VGKGcTSxeEyRTTKyjWw75NYrCZHUsVEEEpr1tYHpbtaC++/sQ== -"@types/estree@*": - version "0.0.40" - resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.40.tgz#0e6cb9b9bbd098031fa19e4b4e8131bc70e5de13" - integrity sha512-p3KZgMto/JyxosKGmnLDJ/dG5wf+qTRMUjHJcspC2oQKa4jP7mz+tv0ND56lLBu3ojHlhzY33Ol+khLyNmilkA== - -"@types/estree@0.0.39": +"@types/estree@*", "@types/estree@0.0.39": version "0.0.39" resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.39.tgz#e177e699ee1b8c22d23174caaa7422644389509f" integrity sha512-EYNwp3bU+98cpU4lAWYYL7Zz+2gryWH1qbdDTidVd6hkiR6weksdbMadyXKXNPEkQFhXM+hVO9ZygomHXp+AIw== @@ -106,9 +101,9 @@ integrity sha512-056oRlBBp7MDzr+HoU5su099s/s7wjZ3KcHxLfv+Byqb9MwdLUvsfLgw1VS97hsh3ddxSPyQu+olHMnoVTUY6g== "@types/node@*": - version "13.1.0" - resolved "https://registry.yarnpkg.com/@types/node/-/node-13.1.0.tgz#225cbaac5fdb2b9ac651b02c070d8aa3c37cc812" - integrity sha512-zwrxviZS08kRX40nqBrmERElF2vpw4IUTd5khkhBTfFH8AOaeoLVx48EC4+ZzS2/Iga7NevncqnsUSYjM4OWYA== + version "12.11.2" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.11.2.tgz#75ba3beda30d690b89a5089ca1c6e8e386150b76" + integrity sha512-dsfE4BHJkLQW+reOS6b17xhZ/6FB1rB8eRRvO08nn5o+voxf3i74tuyFWNH6djdfgX7Sm5s6LD8t6mJug4dpDw== "@types/offscreencanvas@~2019.3.0": version "2019.3.0" @@ -374,9 +369,9 @@ better-assert@~1.0.0: callsite "1.0.0" big-integer@^1.6.17: - version "1.6.48" - resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.48.tgz#8fd88bd1632cba4a1c8c3e3d7159f08bb95b4b9e" - integrity sha512-j51egjPa7/i+RdiRuJbPdJ2FIUYYPhvYLjzoYbcMMm62ooO6F94fETG4MTs46zPAF9Brs04OajboA/qTGuz78w== + version "1.6.47" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.47.tgz#e1e9320e26c4cc81f64fbf4b3bb20e025bf18e2d" + integrity sha512-9t9f7X3as2XGX8b52GqG6ox0GvIdM86LyIXASJnDCFhYNgt+A+MByQZ3W2PyMRZjEvG5f8TEbSPfEotVuMJnQg== binary-extensions@^1.0.0: version "1.13.1" @@ -391,22 +386,15 @@ binary@~0.3.0: buffers "~0.1.1" chainsaw "~0.1.0" -bindings@^1.5.0: - version "1.5.0" - resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" - integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== - dependencies: - file-uri-to-path "1.0.0" - blob@0.0.5: version "0.0.5" resolved "https://registry.yarnpkg.com/blob/-/blob-0.0.5.tgz#d680eeef25f8cd91ad533f5b01eed48e64caf683" integrity sha512-gaqbzQPqOoamawKg0LGVd7SzLgXS+JH61oWprSLH+P+abTczqJbhTR8CmJ2u9/bUYNmHTGJx/UEmn6doAvvuig== bluebird@^3.3.0: - version "3.7.2" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f" - integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg== + version "3.7.1" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.7.1.tgz#df70e302b471d7473489acf26a93d63b53f874de" + integrity sha512-DdmyoGCleJnkbp3nkbxTLJ18rjDsE4yCggEwKNXkeV123sPNfOCYeDoeuOY+F2FrSjO1YXcTU+dsy96KMy+gcg== bluebird@~3.4.1: version "3.4.7" @@ -857,9 +845,9 @@ copy-descriptor@^0.1.0: integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= core-js@^2.2.0: - version "2.6.11" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" - integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== + version "2.6.10" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.10.tgz#8a5b8391f8cc7013da703411ce5b585706300d7f" + integrity sha512-I39t74+4t+zau64EN1fE5v2W31Adtc/REhzWN+gWRRXg6WH5qAsZm62DHpQ1+Yhe4047T55jvzz7MUqF/dBBlA== core-util-is@~1.0.0: version "1.0.2" @@ -1284,11 +1272,6 @@ fast-levenshtein@~2.0.6: resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= -file-uri-to-path@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" - integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== - fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -1313,9 +1296,9 @@ finalhandler@1.1.2: unpipe "~1.0.0" find-cache-dir@^3.0.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.2.0.tgz#e7fe44c1abc1299f516146e563108fd1006c1874" - integrity sha512-1JKclkYYsf1q9WIJKLZa9S9muC+08RIjzAlLrK4QcYLJMS6mk9yombQ9qf+zJ7H9LS800k0s44L4sDq9VYzqyg== + version "3.1.0" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.1.0.tgz#9935894999debef4cf9f677fdf646d002c4cdecb" + integrity sha512-zw+EFiNBNPgI2NTrKkDd1xd7q0cs6wr/iWnr/oUkI0yF9K9GqQ+riIt4aiyFaaqpaWbxPrJXHI+QvmNUQbX+0Q== dependencies: commondir "^1.0.1" make-dir "^3.0.0" @@ -1399,12 +1382,12 @@ fs.realpath@^1.0.0: integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= fsevents@^1.2.7: - version "1.2.11" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.11.tgz#67bf57f4758f02ede88fb2a1712fef4d15358be3" - integrity sha512-+ux3lx6peh0BpvY0JebGyZoiR4D+oYzdPZMKJwkZ+sFkNJzpL7tXc/wehS49gUAxg3tmMHPHZkA8JU2rhhgDHw== + version "1.2.9" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.9.tgz#3f5ed66583ccd6f400b5a00db6f7e861363e388f" + integrity sha512-oeyj2H3EjjonWcFjD5NvZNE9Rqe4UW+nQBU2HNeKw0koVLEFIhtyETyAakeAM3de7Z/SW5kcA+fZUait9EApnw== dependencies: - bindings "^1.5.0" nan "^2.12.1" + node-pre-gyp "^0.12.0" fstream@^1.0.12: version "1.0.12" @@ -1464,7 +1447,19 @@ glob@^5.0.15: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.0.0, glob@^7.0.6, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4: +glob@^7.0.0, glob@^7.1.1, glob@^7.1.4: + version "7.1.5" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.5.tgz#6714c69bee20f3c3e64c4dd905553e532b40cdc0" + integrity sha512-J9dlskqUXK1OeTOYBEn5s8aMukWMwWfs+rPTn/jn50Ux4MNXVhubL1wu/j2t+H4NVI+cXEcCaYellqaPVGXNqQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.0.4" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.0.6, glob@^7.1.3: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== @@ -1476,7 +1471,12 @@ glob@^7.0.0, glob@^7.0.6, glob@^7.1.1, glob@^7.1.3, glob@^7.1.4: once "^1.3.0" path-is-absolute "^1.0.0" -graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0: +graceful-fs@^4.1.11, graceful-fs@^4.2.0: + version "4.2.2" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.2.tgz#6f0952605d0140c1cfdb138ed005775b92d67b02" + integrity sha512-IItsdsea19BoLC7ELy13q1iJFNmd7ofZH5+X/pJr90/nRoPEX0DJo1dHDbgtYWOhJhcCgMDTOw84RZ72q6lB+Q== + +graceful-fs@^4.1.2, graceful-fs@^4.1.6: version "4.2.3" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== @@ -1606,9 +1606,9 @@ https-browserify@^1.0.0: integrity sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM= https-proxy-agent@^2.2.1: - version "2.2.4" - resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" - integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== + version "2.2.2" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.2.tgz#271ea8e90f836ac9f119daccd39c19ff7dfb0793" + integrity sha512-c8Ndjc9Bkpfx/vCJueCPy0jlP4ccCCSNDp8xwCZzPjKJUm+B+u9WX2x98Qx4n1PiMNTWo3D7KK5ifNV/yJyRzg== dependencies: agent-base "^4.3.0" debug "^3.1.0" @@ -2253,17 +2253,17 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@1.42.0: - version "1.42.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.42.0.tgz#3e252907b4c7adb906597b4b65636272cf9e7bac" - integrity sha512-UbfJCR4UAVRNgMpfImz05smAXK7+c+ZntjaA26ANtkXLlOe947Aag5zdIcKQULAiF9Cq4WxBi9jUs5zkA84bYQ== +mime-db@1.40.0: + version "1.40.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" + integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== mime-types@~2.1.24: - version "2.1.25" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.25.tgz#39772d46621f93e2a80a856c53b86a62156a6437" - integrity sha512-5KhStqB5xpTAeGqKBAMgwaYMnQik7teQN4IAzC7npDv6kzeU6prfkR67bc87J1kWMPGkoaZSq1npmexMgkmEVg== + version "2.1.24" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" + integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ== dependencies: - mime-db "1.42.0" + mime-db "1.40.0" mime@^2.3.1: version "2.4.4" @@ -2388,10 +2388,10 @@ node-fetch@~2.1.2: resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.1.2.tgz#ab884e8e7e57e38a944753cec706f788d1768bb5" integrity sha1-q4hOjn5X44qUR1POxwb3iNF2i7U= -node-pre-gyp@*: - version "0.14.0" - resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.14.0.tgz#9a0596533b877289bcad4e143982ca3d904ddc83" - integrity sha512-+CvDC7ZttU/sSt9rFjix/P05iS43qHCOOGzcr3Ry99bXG7VX953+vFyEuph/tfqoYu8dttBkE86JSKBO2OzcxA== +node-pre-gyp@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" + integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A== dependencies: detect-libc "^1.0.2" mkdirp "^0.5.1" @@ -2402,7 +2402,7 @@ node-pre-gyp@*: rc "^1.2.7" rimraf "^2.6.1" semver "^5.3.0" - tar "^4.4.2" + tar "^4" nopt@3.x: version "3.0.6" @@ -2442,21 +2442,14 @@ normalize-path@^3.0.0: integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== npm-bundled@^1.0.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.1.tgz#1edd570865a94cdb1bc8220775e29466c9fb234b" - integrity sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA== - dependencies: - npm-normalize-package-bin "^1.0.1" - -npm-normalize-package-bin@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" - integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== + version "1.0.6" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" + integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g== npm-packlist@^1.1.6, npm-packlist@^1.4.1: - version "1.4.7" - resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.7.tgz#9e954365a06b80b18111ea900945af4f88ed4848" - integrity sha512-vAj7dIkp5NhieaGZxBJB8fF4R0078rqsmhJcAfXZ6O7JJhjhPK96n5Ry1oZcfLXgfun0GWTZPOxaEyqv8GBykQ== + version "1.4.6" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.6.tgz#53ba3ed11f8523079f1457376dd379ee4ea42ff4" + integrity sha512-u65uQdb+qwtGvEJh/DgQgW1Xg7sqeNbmxYyrvlNznaVTjV3E5P6F/EFjM+BVHXl7JJlsdG8A64M0XI8FI/IOlg== dependencies: ignore-walk "^3.0.1" npm-bundled "^1.0.1" @@ -2972,17 +2965,17 @@ resolve@1.1.7, resolve@1.1.x: resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= -resolve@1.12.0: +resolve@1.12.0, resolve@^1.1.6, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.3.2: version "1.12.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.12.0.tgz#3fc644a35c84a48554609ff26ec52b66fa577df6" integrity sha512-B/dOmuoAik5bKcD6s6nXDCjzUKnaDvdkRyAk6rsmsKLipWj4797iothd7jmmUhWTfinVMU+wc56rYKsit2Qy4w== dependencies: path-parse "^1.0.6" -resolve@^1.1.6, resolve@^1.10.0, resolve@^1.11.0, resolve@^1.11.1, resolve@^1.3.2: - version "1.14.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.14.1.tgz#9e018c540fcf0c427d678b9931cbf45e984bcaff" - integrity sha512-fn5Wobh4cxbLzuHaE+nphztHy43/b++4M6SsGFC2gB8uYwf0C8LcarfCz1un7UTW8OFQg9iNjZ4xpcFVGebDPg== +resolve@^1.10.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.13.1.tgz#be0aa4c06acd53083505abb35f4d66932ab35d16" + integrity sha512-CxqObCX8K8YtAhOBRg+lrcdn+LK+WYOS8tSjqSFbjtrI5PnS63QPhZl4+yKfrU9tdsbMu9Anr/amegT87M9Z6w== dependencies: path-parse "^1.0.6" @@ -3052,9 +3045,9 @@ rollup-plugin-terser@~5.1.3: terser "^4.1.0" rollup-plugin-typescript2@~0.25.2: - version "0.25.3" - resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.25.3.tgz#a5fb2f0f85488789334ce540abe6c7011cbdf40f" - integrity sha512-ADkSaidKBovJmf5VBnZBZe+WzaZwofuvYdzGAKTN/J4hN7QJCFYAq7IrH9caxlru6T5qhX41PNFS1S4HqhsGQg== + version "0.25.2" + resolved "https://registry.yarnpkg.com/rollup-plugin-typescript2/-/rollup-plugin-typescript2-0.25.2.tgz#1a165df08560902da45b355413464caca1765d3a" + integrity sha512-+tpZj/ZIf2lwjyjX6xEW1S5Y38/21TB3p6poLodISIia8owMMfIKuFFnWcESE4FPBHkR8XPKqjY0PH9IUJJK+Q== dependencies: find-cache-dir "^3.0.0" fs-extra "8.1.0" @@ -3201,9 +3194,9 @@ snapdragon@^0.8.1: use "^3.1.0" socket.io-adapter@~1.1.0: - version "1.1.2" - resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.2.tgz#ab3f0d6f66b8fc7fca3959ab5991f82221789be9" - integrity sha512-WzZRUj1kUjrTIrUKpZLEzFZ1OLj5FwLlAFQs9kuZJzJi5DKdU7FsWc36SNmA8iDOtwBQyT8FkrriRM8vXLYz8g== + version "1.1.1" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-1.1.1.tgz#2a805e8a14d6372124dd9159ad4502f8cb07f06b" + integrity sha1-KoBeihTWNyEk3ZFZrUUC+MsH8Gs= socket.io-client@2.1.1: version "2.1.1" @@ -3462,7 +3455,7 @@ supports-color@^6.1.0: dependencies: has-flag "^3.0.0" -tar@^4.4.2: +tar@^4: version "4.4.13" resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.13.tgz#43b364bc52888d555298637b10d60790254ab525" integrity sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA== @@ -3476,9 +3469,9 @@ tar@^4.4.2: yallist "^3.0.3" terser@^4.1.0: - version "4.4.3" - resolved "https://registry.yarnpkg.com/terser/-/terser-4.4.3.tgz#401abc52b88869cf904412503b1eb7da093ae2f0" - integrity sha512-0ikKraVtRDKGzHrzkCv5rUNDzqlhmhowOBqC0XqUHFpW+vJ45+20/IFBcebwKfiS2Z9fJin6Eo+F1zLZsxi8RA== + version "4.4.2" + resolved "https://registry.yarnpkg.com/terser/-/terser-4.4.2.tgz#448fffad0245f4c8a277ce89788b458bfd7706e8" + integrity sha512-Uufrsvhj9O1ikwgITGsZ5EZS6qPokUOkCegS7fYOdGTv+OA90vndUbU6PEjr5ePqHfNUbGyMO7xyIZv2MhsALQ== dependencies: commander "^2.20.0" source-map "~0.6.1" From 51a33c78d3260d9ca5554febe6522fafa0092dd9 Mon Sep 17 00:00:00 2001 From: Ann Yuan Date: Mon, 23 Dec 2019 14:55:30 -0500 Subject: [PATCH 33/34] update --- tfjs-backend-wasm/package.json | 4 ++-- tfjs-backend-wasm/yarn.lock | 14 +++----------- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/tfjs-backend-wasm/package.json b/tfjs-backend-wasm/package.json index 397df608df0..eadf8323b95 100644 --- a/tfjs-backend-wasm/package.json +++ b/tfjs-backend-wasm/package.json @@ -32,7 +32,7 @@ "path": false }, "peerDependencies": { - "@tensorflow/tfjs-core": "1.5.1" + "@tensorflow/tfjs-core": "link:../tfjs-core" }, "dependencies": { "@types/emscripten": "~0.0.34" @@ -40,7 +40,7 @@ "devDependencies": { "@bazel/bazel": "^0.28.0", "@bazel/buildifier": "0.29.0", - "@tensorflow/tfjs-core": "1.5.1", + "@tensorflow/tfjs-core": "link:../tfjs-core", "@types/jasmine": "~2.8.6", "clang-format": "~1.2.4", "jasmine": "~3.1.0", diff --git a/tfjs-backend-wasm/yarn.lock b/tfjs-backend-wasm/yarn.lock index 8da2ee7c983..ac1064763a2 100644 --- a/tfjs-backend-wasm/yarn.lock +++ b/tfjs-backend-wasm/yarn.lock @@ -73,17 +73,9 @@ resolved "https://registry.yarnpkg.com/@bazel/hide-bazel-files/-/hide-bazel-files-0.38.3.tgz#e98231d3d360d51860d9c1a7c3345b40dab4cf81" integrity sha512-o+dNkfDm3qxWQ8h/04cWuTcjR7qnjZi3pQGv4aklVb16oPWx2jF8BzbkwvWuIkdbOl9VnqYP0vaHzwQVJRRcIA== -"@tensorflow/tfjs-core@1.5.1": - version "1.5.1" - resolved "https://registry.yarnpkg.com/@tensorflow/tfjs-core/-/tfjs-core-1.5.1.tgz#490209617f744fef660e8f81fe8b858e95b0d10b" - integrity sha512-N4fsi8mLsRwRs8UJN2cARB1rYFxyVXkLyZ4wOusiR976BwwZbCwQrTTSIPzPqYT3rwiexEUzm7sM6ZaDl5dpXA== - dependencies: - "@types/offscreencanvas" "~2019.3.0" - "@types/seedrandom" "2.4.27" - "@types/webgl-ext" "0.0.30" - "@types/webgl2" "0.0.4" - node-fetch "~2.1.2" - seedrandom "2.4.3" +"@tensorflow/tfjs-core@link:../tfjs-core": + version "0.0.0" + uid "" "@types/emscripten@~0.0.34": version "0.0.34" From 5a0d163d508eb7fdfa4342183e225d76c9a34eea Mon Sep 17 00:00:00 2001 From: Ann Yuan Date: Tue, 24 Dec 2019 12:15:40 -0500 Subject: [PATCH 34/34] case --- tfjs-backend-wasm/src/cc/kernels/{ScatterND.cc => ScatterNd.cc} | 0 tfjs-backend-wasm/src/kernels/{ScatterND.ts => ScatterNd.ts} | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename tfjs-backend-wasm/src/cc/kernels/{ScatterND.cc => ScatterNd.cc} (100%) rename tfjs-backend-wasm/src/kernels/{ScatterND.ts => ScatterNd.ts} (100%) diff --git a/tfjs-backend-wasm/src/cc/kernels/ScatterND.cc b/tfjs-backend-wasm/src/cc/kernels/ScatterNd.cc similarity index 100% rename from tfjs-backend-wasm/src/cc/kernels/ScatterND.cc rename to tfjs-backend-wasm/src/cc/kernels/ScatterNd.cc diff --git a/tfjs-backend-wasm/src/kernels/ScatterND.ts b/tfjs-backend-wasm/src/kernels/ScatterNd.ts similarity index 100% rename from tfjs-backend-wasm/src/kernels/ScatterND.ts rename to tfjs-backend-wasm/src/kernels/ScatterNd.ts