From d5649e5d2528fbcdc47744509ff40cdb56271e54 Mon Sep 17 00:00:00 2001 From: fujunwei Date: Wed, 9 Jun 2021 15:07:37 +0800 Subject: [PATCH 1/4] Add transpose sinking and upgrade DirectML --- .gitignore | 8 + DEPS | 5 +- src/webnn_native/BUILD.gn | 6 +- src/webnn_native/dml/ContextDML.cpp | 17 +- src/webnn_native/dml/ContextDML.h | 7 - src/webnn_native/dml/GraphDML.cpp | 38 +- src/webnn_native/dml/GraphDML.h | 3 + .../dml/deps/script/download_dml.py | 2 +- .../openvino/ienn/src/default_opset.h | 22 + .../openvino/ienn/src/ie_compilation.cpp | 10 + .../openvino/ienn/src/ie_compilation.h | 1 + .../openvino/ienn/src/ie_model.cpp | 36 +- src/webnn_native/openvino/ienn/src/ie_model.h | 1 + .../openvino/ienn/src/transpose_sinking.cpp | 447 ++++++++++++++++++ .../openvino/ienn/src/transpose_sinking.h | 27 ++ 15 files changed, 594 insertions(+), 36 deletions(-) create mode 100644 src/webnn_native/openvino/ienn/src/default_opset.h create mode 100644 src/webnn_native/openvino/ienn/src/transpose_sinking.cpp create mode 100644 src/webnn_native/openvino/ienn/src/transpose_sinking.h diff --git a/.gitignore b/.gitignore index 15b6d216d..ca567e637 100644 --- a/.gitignore +++ b/.gitignore @@ -96,3 +96,11 @@ node/generator/specifications node/PATH_TO_DAWN node/third_party/webnn-polyfill node/node_modules +node/third_party +node/package-lock.json +node/examples/electron/lenet/node_modules +node/examples/electron/lenet/package-lock.json +node/examples/electron/image_classification/node_modules +node/examples/electron/image_classification/package-lock.json +node/examples/console/lenet/node_modules +node/examples/console/lenet/package-lock.json \ No newline at end of file diff --git a/DEPS b/DEPS index 63447f406..a8059d769 100644 --- a/DEPS +++ b/DEPS @@ -18,6 +18,9 @@ deps = { 'node/third_party/webnn-polyfill': { 'url': '{github_git}/webmachinelearning/webnn-polyfill.git@5c5e9f6f5dbbe9dc67c448c8f7a55b6ddf4dee25' }, + 'node/third_party/webnn-samples': { + 'url': '{github_git}/webmachinelearning/webnn-samples.git@8ac60606633f1822db7c76facd3ea3548f8359c2' + }, 'third_party/stb': { 'url': '{github_git}/nothings/stb@b42009b3b9d4ca35bc703f5310eedc74f584be58' }, @@ -29,7 +32,7 @@ deps = { # Dependencies required for backends. 'third_party/DirectML': { - 'url': '{github_git}/microsoft/DirectML.git@e1b29b20a21bd2fb669a0c774f9870f8e9731da6', + 'url': '{github_git}/microsoft/DirectML.git@af53ef743559079bd2ebb1aa83d9f98e87d774e1', 'condition': 'checkout_win', }, 'third_party/oneDNN': { diff --git a/src/webnn_native/BUILD.gn b/src/webnn_native/BUILD.gn index 79b991395..e751eb061 100644 --- a/src/webnn_native/BUILD.gn +++ b/src/webnn_native/BUILD.gn @@ -192,10 +192,10 @@ source_set("webnn_native_sources") { include_dirs = [ "//third_party/DirectML/Libraries", - "//third_party/microsoft.ai.directml.1.4.1/include", + "//third_party/microsoft.ai.directml.1.5.1/include", ] - lib_dirs = [ "//third_party/microsoft.ai.directml.1.4.1/bin/x64-win" ] + lib_dirs = [ "//third_party/microsoft.ai.directml.1.5.1/bin/x64-win" ] libs = [ "dxgi.lib", @@ -320,7 +320,7 @@ if (webnn_enable_openvino) { if (webnn_enable_dml) { dml_dll = "DirectML.dll" os_folder = "x64-win" - dml_dll_path = "//third_party/microsoft.ai.directml.1.4.1/bin/${os_folder}" + dml_dll_path = "//third_party/microsoft.ai.directml.1.5.1/bin/${os_folder}" copy("copy_dml_dll") { sources = [ "${dml_dll_path}/${dml_dll}" ] outputs = [ "$root_out_dir/{{source_file_part}}" ] diff --git a/src/webnn_native/dml/ContextDML.cpp b/src/webnn_native/dml/ContextDML.cpp index 5bf0ea58f..d5046a420 100644 --- a/src/webnn_native/dml/ContextDML.cpp +++ b/src/webnn_native/dml/ContextDML.cpp @@ -20,13 +20,7 @@ namespace webnn_native { namespace dml { ContextBase* Create(MLContextOptions const* options) { - Ref context = - AcquireRef(new Context(reinterpret_cast(options))); - if (FAILED(reinterpret_cast(context.Get())->CreateDevice())) { - dawn::ErrorLog() << "Failed to create DirectML device."; - return nullptr; - } - return context.Detach(); + return new Context(reinterpret_cast(options)); } Context::Context(ContextOptions const* options) { @@ -36,15 +30,6 @@ namespace webnn_native { namespace dml { mOptions = *options; } - HRESULT Context::CreateDevice() { -#if defined(_DEBUG) - mDevice.reset(new ::pydml::Device(true, true)); -#else - mDevice.reset(new ::pydml::Device(true, false)); -#endif - return mDevice->Init(); - } - GraphBase* Context::CreateGraphImpl() { return new Graph(this); } diff --git a/src/webnn_native/dml/ContextDML.h b/src/webnn_native/dml/ContextDML.h index cad5a1c89..19e145402 100644 --- a/src/webnn_native/dml/ContextDML.h +++ b/src/webnn_native/dml/ContextDML.h @@ -26,16 +26,9 @@ namespace webnn_native { namespace dml { Context(ContextOptions const* options); ~Context() override = default; - HRESULT CreateDevice(); - - std::shared_ptr<::pydml::Device> GetDevice() { - return mDevice; - } - private: GraphBase* CreateGraphImpl() override; - std::shared_ptr<::pydml::Device> mDevice; ContextOptions mOptions; }; diff --git a/src/webnn_native/dml/GraphDML.cpp b/src/webnn_native/dml/GraphDML.cpp index ea14a2da1..1ce73d72b 100644 --- a/src/webnn_native/dml/GraphDML.cpp +++ b/src/webnn_native/dml/GraphDML.cpp @@ -26,6 +26,18 @@ #include "webnn_native/dml/deps/src/precomp.h" #include "webnn_native/ops/LeakyRelu.h" +#define COMPUTE_DML_ERROR_CALLBACK(messages) \ + { \ + if (callback) { \ + callback(MLComputeGraphStatus_Error, nullptr, messages, userdata); \ + } else { \ + dawn::ErrorLog() << messages; \ + } \ + return MLComputeGraphStatus_Error; \ + } \ + for (;;) \ + break + namespace webnn_native { namespace dml { class Result : public ResultBase { public: @@ -447,7 +459,12 @@ namespace webnn_native { namespace dml { } Graph::Graph(Context* context) : GraphBase(context) { - mDevice = context->GetDevice(); +#if defined(_DEBUG) + mDevice.reset(new ::pydml::Device(true, true)); +#else + mDevice.reset(new ::pydml::Device(true, false)); +#endif + mDevice->Init(); mGraph.reset(new ::dml::Graph(mDevice->GetDevice())); } @@ -1148,6 +1165,7 @@ namespace webnn_native { namespace dml { for (auto& binding : mBindings) { inputBindings.push_back(binding.get()); } + std::lock_guard lock(mMutex); return FAILED(mDevice->InitializeOperator(mCompiledModel->op.Get(), inputBindings)) ? MLBuildGraphStatus_Error : MLBuildGraphStatus_Success; @@ -1169,10 +1187,16 @@ namespace webnn_native { namespace dml { NamedOutputsBase* outputs, MLComputeGraphCallback callback, void* userdata) { - for (auto& input : inputs->GetRecords()) { - ::pydml::Binding* inputBinding = mInputs.at(input.first); - inputBinding->data.buffer = const_cast(input.second->buffer); - inputBinding->data.size = input.second->size; + auto namedInputs = inputs->GetRecords(); + for (auto& input : mInputs) { + // All the inputs must be set. + if (namedInputs.find(input.first) == namedInputs.end()) { + COMPUTE_DML_ERROR_CALLBACK("The input must be set."); + } + + ::pydml::Binding* inputBinding = input.second; + inputBinding->data.buffer = const_cast(namedInputs[input.first]->buffer); + inputBinding->data.size = namedInputs[input.first]->size; } std::vector inputBindings; for (auto& binding : mBindings) { @@ -1182,6 +1206,9 @@ namespace webnn_native { namespace dml { std::vector outputNames; if (outputs != nullptr) { for (auto& output : outputs->GetRecords()) { + if (mOutputs.find(output.first) == mOutputs.end()) { + COMPUTE_DML_ERROR_CALLBACK("The output name is invalid."); + } outputNames.push_back(output.first); outputExpressions.push_back(&(mOutputs.at(output.first))); } @@ -1192,6 +1219,7 @@ namespace webnn_native { namespace dml { } } std::vector outputTensors; + std::lock_guard lock(mMutex); if (FAILED(mDevice->DispatchOperator(mCompiledModel->op.Get(), inputBindings, outputExpressions, outputTensors))) { if (callback) { diff --git a/src/webnn_native/dml/GraphDML.h b/src/webnn_native/dml/GraphDML.h index 68e1bb21d..7ce3db718 100644 --- a/src/webnn_native/dml/GraphDML.h +++ b/src/webnn_native/dml/GraphDML.h @@ -16,6 +16,7 @@ #define WEBNN_NATIVE_DML_MODEL_DML_H_ #include +#include #include #include "webnn_native/Graph.h" @@ -83,6 +84,8 @@ namespace webnn_native { namespace dml { size_t size); std::shared_ptr<::pydml::Device> mDevice; + // The mutex is used to lock mDevice. + std::mutex mMutex; std::unique_ptr<::dml::Graph> mGraph; std::map mExpression; std::vector> mBindings; diff --git a/src/webnn_native/dml/deps/script/download_dml.py b/src/webnn_native/dml/deps/script/download_dml.py index 8ced9a8df..c95e81402 100644 --- a/src/webnn_native/dml/deps/script/download_dml.py +++ b/src/webnn_native/dml/deps/script/download_dml.py @@ -23,7 +23,7 @@ dml_feed_url = 'https://api.nuget.org/v3/index.json' dml_resource_id = 'microsoft.ai.directml' -dml_resource_version = '1.4.1' +dml_resource_version = '1.5.1' dependency_dir = '../../../../../third_party' dml_bin_path = f'{dependency_dir}/{dml_resource_id}.{dml_resource_version}/bin/x64-win/' diff --git a/src/webnn_native/openvino/ienn/src/default_opset.h b/src/webnn_native/openvino/ienn/src/default_opset.h new file mode 100644 index 000000000..ffb39688c --- /dev/null +++ b/src/webnn_native/openvino/ienn/src/default_opset.h @@ -0,0 +1,22 @@ +/******************************************************************************* + * Copyright (C) 2021 Intel Corporation + * + * SPDX-License-Identifier: Apache-2.0 + *******************************************************************************/ + +#ifndef OPENVINO_TF_BRIDGE_DEFAULT_OPSET_H_ +#define OPENVINO_TF_BRIDGE_DEFAULT_OPSET_H_ +#pragma once + +#include "ngraph/opsets/opset5.hpp" + +namespace tensorflow { +namespace openvino_tensorflow { + +namespace opset = ngraph::opset5; +namespace default_opset = ngraph::opset5; + +} // namespace openvino_tensorflow +} // namespace tensorflow + +#endif // OPENVINO_TF_BRIDGE_DEFAULT_OPSET_H_ \ No newline at end of file diff --git a/src/webnn_native/openvino/ienn/src/ie_compilation.cpp b/src/webnn_native/openvino/ienn/src/ie_compilation.cpp index 0969acc6a..3c14a1878 100644 --- a/src/webnn_native/openvino/ienn/src/ie_compilation.cpp +++ b/src/webnn_native/openvino/ienn/src/ie_compilation.cpp @@ -51,6 +51,7 @@ Compilation::Compilation(std::shared_ptr model) ie_core_->LoadNetwork(*(model->network_), device_name, plugin_Config)))); infer_request_.reset(new InferRequest( static_cast(execution_->CreateInferRequest()))); + output_node_map_ = std::move(model->output_node_map_); } Compilation::~Compilation() { @@ -95,6 +96,11 @@ StatusCode Compilation::GetBuffer(const char* name, if (infer_request_ == nullptr) { return StatusCode::NETWORK_NOT_LOADED; } + + if (output_node_map_.find(name) != output_node_map_.end()) { + name = output_node_map_.find(name)->second.data(); + } + Blob::Ptr output_blob = infer_request_->GetBlob(name); *byte_length = output_blob->byteSize(); *buffer = malloc(*byte_length); @@ -108,6 +114,10 @@ StatusCode Compilation::GetDimensions(const char* name, if (infer_request_ == nullptr) { return StatusCode::NETWORK_NOT_LOADED; } + if (output_node_map_.find(name) != output_node_map_.end()) { + name = output_node_map_.find(name)->second.data(); + } + Blob::Ptr output_blob = infer_request_->GetBlob(name); InferenceEngine::SizeVector dims = output_blob->getTensorDesc().getDims(); dimensions->ranks = dims.size(); diff --git a/src/webnn_native/openvino/ienn/src/ie_compilation.h b/src/webnn_native/openvino/ienn/src/ie_compilation.h index d097a26a0..8b09dc316 100644 --- a/src/webnn_native/openvino/ienn/src/ie_compilation.h +++ b/src/webnn_native/openvino/ienn/src/ie_compilation.h @@ -48,6 +48,7 @@ class Compilation { std::unique_ptr infer_request_; std::unique_ptr execution_; std::unique_ptr ie_core_; + std::map output_node_map_; DISALLOW_COPY_AND_ASSIGN(Compilation); }; diff --git a/src/webnn_native/openvino/ienn/src/ie_model.cpp b/src/webnn_native/openvino/ienn/src/ie_model.cpp index bcdf849bf..23ea8af26 100644 --- a/src/webnn_native/openvino/ienn/src/ie_model.cpp +++ b/src/webnn_native/openvino/ienn/src/ie_model.cpp @@ -13,6 +13,7 @@ // limitations under the License. #include "ie_model.h" +#include "transpose_sinking.h" #include #include @@ -20,6 +21,8 @@ #include "ngraph/ngraph.hpp" #include "ngraph/node.hpp" +#include "ngraph/pass/manager.hpp" +#include "ngraph/pass/pass.hpp" #include "utils.h" namespace InferenceEngine { @@ -516,8 +519,15 @@ ie_operand_t* Model::AddGemm(const ie_operand_t* inputs, // operations as "alpha * A * B + beta * C". Transpose if it's necessary. auto a_node = name_node_map_[inputs[0].name]; auto b_node = name_node_map_[inputs[1].name]; + auto size = a_node.get_shape().size(); + SizeVector input_order; + input_order.reserve(size); + for (uint32_t i = 0; i < size; ++i) { + input_order.push_back(size - i - 1); + } + const auto order_node = - op::Constant::create(element::i64, Shape{0}, SizeVector()); + op::Constant::create(element::i64, {size}, input_order); if (options->aTranspose) { a_node = std::make_shared(a_node, order_node)->output(0); } @@ -556,13 +566,33 @@ void Model::Finish() { auto ngraph_function = std::make_shared(ngraph_outputs_, ngraph_inputs_); network_ = std::make_unique(ngraph_function); + // collect the OutputDataMap before passes + OutputsDataMap output_info_previous(network_->getOutputsInfo()); + std::vector output_node_names_previous; + output_node_names_previous.resize(output_info_previous.size()); + for (auto itr : output_info_previous) { + output_node_names_previous.push_back(itr.first); + } + ngraph::pass::Manager passes; + passes + .register_pass(); + passes.run_passes(ngraph_function); + network_ = std::make_unique(ngraph_function); InputsDataMap input_info(network_->getInputsInfo()); for (auto itr : input_info) { itr.second->setPrecision(Precision::FP32); } - OutputsDataMap output_info(network_->getOutputsInfo()); - for (auto itr : output_info) { + OutputsDataMap output_info_after(network_->getOutputsInfo()); + std::vector output_node_names_after; + output_node_names_after.resize(output_info_after.size()); + for (auto itr : output_info_after) { itr.second->setPrecision(Precision::FP32); + output_node_names_after.push_back(itr.first); + } + + for (size_t i = 0; i < output_node_names_after.size(); i++) { + output_node_map_[output_node_names_previous[i]] = + output_node_names_after[i]; } } diff --git a/src/webnn_native/openvino/ienn/src/ie_model.h b/src/webnn_native/openvino/ienn/src/ie_model.h index e1e9e46f6..db6d2ff1e 100644 --- a/src/webnn_native/openvino/ienn/src/ie_model.h +++ b/src/webnn_native/openvino/ienn/src/ie_model.h @@ -78,6 +78,7 @@ class Model { std::vector> ngraph_inputs_; std::vector> ngraph_outputs_; std::unique_ptr network_; + std::map output_node_map_; DISALLOW_COPY_AND_ASSIGN(Model); }; diff --git a/src/webnn_native/openvino/ienn/src/transpose_sinking.cpp b/src/webnn_native/openvino/ienn/src/transpose_sinking.cpp new file mode 100644 index 000000000..038ad8b2f --- /dev/null +++ b/src/webnn_native/openvino/ienn/src/transpose_sinking.cpp @@ -0,0 +1,447 @@ +/***************************************************************************** + * Copyright (C) 2021 Intel Corporation + * + * SPDX-License-Identifier: Apache-2.0 + *****************************************************************************/ + +#include +#include +#include +#include +#include + +#include "ngraph/ngraph.hpp" +#include "ngraph/pattern/op/label.hpp" +#include "ngraph/util.hpp" + +#include "default_opset.h" +#include "transpose_sinking.h" + +/* + * This file is originated from this + * repo-https://github.com/openvinotoolkit/openvino_tensorflow/blob/master/openvino_tensorflow/pass/transpose_sinking.cc + * commit id: 5c8f0130d3bbac4485476b612b26edec4e81f339 + */ +using namespace std; + +namespace tensorflow { +namespace openvino_tensorflow { +namespace pass { + +using TransposeMap = unordered_map>; + +static ngraph::CoordinateDiff apply_permutation(ngraph::CoordinateDiff input, + ngraph::AxisVector order) { + ngraph::CoordinateDiff output(input.size()); + for (size_t i = 0; i < order.size(); i++) { + output[i] = input.at(order.at(i)); + } + return output; +} + +static ngraph::AxisVector permutation_to_default_order( + const ngraph::AxisVector& axis_order) { + ngraph::AxisVector out(axis_order.size()); + for (size_t i = 0; i < axis_order.size(); i++) { + out.at(axis_order[i]) = i; + } + return out; +} + +template +static string describe(shared_ptr node) { + // ensure that it's either a reshape or a transpose + // TODO: use static_assert + if (!(std::is_base_of::value || + std::is_base_of::value)) { + throw runtime_error( + "describe template specialization has to be either reshape or " + "transpose"); + } + stringstream ss; + auto transpose = ngraph::as_type_ptr(node); + auto const1 = ngraph::as_type_ptr( + transpose->get_input_node_shared_ptr(1)); + ss << transpose->get_name() << " ( axis order = " + << ngraph::vector_to_string(const1->get_axis_vector_val()) + << " , shape = " << ngraph::vector_to_string(transpose->get_shape()) + << " ) " + << " , input = " << transpose->input_value(0).get_node()->get_name(); + return ss.str(); +} + +static shared_ptr make_transpose( + ngraph::Output arg, + const ngraph::AxisVector& input_order) { + auto order = std::make_shared( + ngraph::element::u64, ngraph::Shape{input_order.size()}, input_order); + auto transpose = make_shared(arg, order); + return transpose; +} + +static shared_ptr make_reshape( + ngraph::Output arg, + const ngraph::AxisVector& input_order) { + auto order = std::make_shared( + ngraph::element::u64, ngraph::Shape{input_order.size()}, input_order); + auto transpose = make_shared(arg, order, false); + return transpose; +} + +static void write_transposemap(TransposeMap& reorders, + ngraph::Output target, + shared_ptr transpose) { + auto name = + target.get_node()->get_name() + "." + to_string(target.get_index()); + reorders[name] = transpose; +} + +static shared_ptr read_transposemap( + TransposeMap& reorders, + ngraph::Output target) { + auto name = + target.get_node()->get_name() + "." + to_string(target.get_index()); + auto transpose = reorders[name]; + return transpose; +} + +static shared_ptr combine_transposes( + shared_ptr t1, + shared_ptr t2) { + auto default_order = ngraph::get_default_order(t1->get_shape()); + auto t1_const = ngraph::as_type_ptr( + t1->input_value(1).get_node_shared_ptr()); + auto t2_const = ngraph::as_type_ptr( + t2->input_value(1).get_node_shared_ptr()); + auto perm_t1 = + ngraph::apply_permutation(default_order, t1_const->get_axis_vector_val()); + auto perm_t2 = + ngraph::apply_permutation(perm_t1, t2_const->get_axis_vector_val()); + auto combined = make_transpose(t2->input_value(0), perm_t2); + return combined; +} + +static void insert_transpose(shared_ptr target, + shared_ptr transpose, + size_t input_index) { + auto arg = target->input(input_index).get_source_output(); + auto new_order = ngraph::as_type_ptr( + transpose->input_value(1).get_node_shared_ptr()); + auto new_transpose = make_transpose(arg.get_node_shared_ptr(), + new_order->get_axis_vector_val()); + target->input(input_index).replace_source_output(new_transpose->output(0)); +} + +static void delete_transpose(shared_ptr transpose) { + if (!transpose->get_users().empty()) { + ngraph::Output output = transpose->output(0); + for (auto input : output.get_target_inputs()) { + input.replace_source_output(transpose->input_value(0)); + } + } +} + +static void mark_transpose_for_deletion( + shared_ptr transpose, + set>& transposes_to_delete) { + transposes_to_delete.insert(transpose); +} + +static shared_ptr create_default_transpose( + ngraph::Output n) { + auto default_order = ngraph::get_default_order(n.get_shape()); + auto order = std::make_shared( + ngraph::element::u64, ngraph::Shape{default_order.size()}, default_order); + return make_shared(n, order); +} + +// convert_binary_to_default_order is used when one of the arguments +// of a binary op isn't in the default format (i.e. nhwc instead of nchw) +// We normalize the "left" argument to match the order of the "right" argument +// by either inserting a transpose or a reshape, depending on the shape of the +// "left" argument. +static void convert_binary_to_default_order( + shared_ptr binary, + const ngraph::Input& input, + ngraph::Output right, + TransposeMap& reorders, + set>& transposes_to_delete) { + auto left = input.get_source_output(); + auto right_t = read_transposemap(reorders, right); + auto right_const = ngraph::as_type_ptr( + right_t->input_value(1).get_node_shared_ptr()); + + auto perm_to_def = + permutation_to_default_order(right_const->get_axis_vector_val()); + + // if right input is being implicitly broadcasted, insert a reshape + // instead of a transpose + shared_ptr new_node; + auto left_shape = left.get_shape(); + if (left_shape.size() < perm_to_def.size()) { + left_shape.insert(left_shape.begin(), + perm_to_def.size() - left_shape.size(), 1); + auto new_shape = ngraph::apply_permutation(left_shape, perm_to_def); + new_node = make_reshape(left, new_shape); + } else if (left_shape.size() == perm_to_def.size()) { + new_node = make_transpose(left, perm_to_def); + } else { + throw runtime_error( + "case not supported when converting binary to default order"); + } + input.replace_source_output(new_node->output(0)); + + // this should now insert transpose on right + mark_transpose_for_deletion(right_t, transposes_to_delete); + write_transposemap(reorders, binary, right_t); +} + +static void materialize_shapes( + shared_ptr n, + TransposeMap& reorders, + set>& transposes_to_delete) { + // For each node, create a default transpose for + // each of the outputs and store in the map + for (auto& it : n->outputs()) { + write_transposemap(reorders, it, create_default_transpose(it)); + } + + for (size_t i = 0; i < n->input_values().size(); i++) { + // materialize all pending transposes, flush pending transposes + auto arg = n->input_value(i); + auto arg_transpose = read_transposemap(reorders, arg); + mark_transpose_for_deletion(arg_transpose, transposes_to_delete); + auto arg_shape = arg.get_shape(); + auto arg_transpose_order = ngraph::as_type_ptr( + arg_transpose->input_value(1).get_node_shared_ptr()); + if (arg_transpose_order->get_axis_vector_val() != + get_default_order(arg.get_shape())) { + // Insert if arg needs to be transposed. + insert_transpose(n, arg_transpose, i); + } + } +} + +static void sink_transpose( + shared_ptr transpose, + TransposeMap& reorders, + set>& transposes_to_delete) { + auto transpose_in = transpose->input_value(0); + auto orig_transpose = read_transposemap(reorders, transpose_in); + // combine both transposes + auto new_transpose = combine_transposes(orig_transpose, transpose); + // remove original transpose now it's combined with a new one + // should be safe to remove an already detached node + mark_transpose_for_deletion(orig_transpose, transposes_to_delete); + // replace transpose with combined one + ngraph::replace_node(transpose, new_transpose); + mark_transpose_for_deletion(new_transpose, transposes_to_delete); + write_transposemap(reorders, new_transpose, new_transpose); +} + +static void sink_unary( + shared_ptr n, + TransposeMap& reorders, + set>& /* transposes_to_delete */) { + auto arg_transpose = read_transposemap(reorders, n->input_value(0)); + write_transposemap(reorders, n, arg_transpose); +} + +static void sink_binary(shared_ptr binary, + TransposeMap& reorders, + set>& transposes_to_delete) { + auto left = binary->input_value(0); + auto right = binary->input_value(1); + auto left_t = read_transposemap(reorders, left); + auto right_t = read_transposemap(reorders, right); + auto left_const = ngraph::as_type_ptr( + left_t->input_value(1).get_node_shared_ptr()); + auto right_const = ngraph::as_type_ptr( + right_t->input_value(1).get_node_shared_ptr()); + + auto left_order = left_const->get_axis_vector_val(); + auto right_order = right_const->get_axis_vector_val(); + + auto left_mismatch = + left_order != ngraph::get_default_order(left.get_shape()); + auto right_mismatch = + right_order != ngraph::get_default_order(right.get_shape()); + + if ((left_order.size() == right_order.size() && left_order == right_order) || + (!left_mismatch && !right_mismatch)) { + // Propagate the reshape which matches the shape of the binary node + auto new_transpose = + (binary->get_output_shape(0) == left.get_shape()) ? left_t : right_t; + write_transposemap(reorders, binary, new_transpose); + // at this point, both transposes will be eventually removed + mark_transpose_for_deletion(left_t, transposes_to_delete); + mark_transpose_for_deletion(right_t, transposes_to_delete); + } else { + if (right_mismatch) { + convert_binary_to_default_order(binary, binary->input(0), right, reorders, + transposes_to_delete); + } else { + if (left_mismatch) { + convert_binary_to_default_order(binary, binary->input(1), left, + reorders, transposes_to_delete); + } + } + } +} + +static void sink_pad( + shared_ptr n, + TransposeMap& reorders, + set>& /* transposes_to_delete */) { + auto n_in = n->input_value(0); + auto arg_transpose = read_transposemap(reorders, n_in); + describe(arg_transpose); + auto arg_transpose_order = ngraph::as_type_ptr( + arg_transpose->input_value(1).get_node_shared_ptr()); + auto order = arg_transpose_order->get_axis_vector_val(); + // we need the correct input shape to produce the right output shape + // we are going to create a label of the right input shape, + // so a new pad will have the right shape + auto def_order = permutation_to_default_order(order); + auto input_shape = + ngraph::apply_permutation(arg_transpose->get_shape(), def_order); + auto dummy_correct_shape = make_shared( + arg_transpose->get_element_type(), input_shape); + + auto pad_begin = apply_permutation(n->get_pads_begin(), def_order); + auto pad_end = apply_permutation(n->get_pads_end(), def_order); + auto new_begin = make_shared( + ngraph::element::i64, ngraph::Shape{pad_begin.size()}, pad_begin); + auto new_end = make_shared( + ngraph::element::i64, ngraph::Shape{pad_end.size()}, pad_end); + auto new_pad = + make_shared(dummy_correct_shape, new_begin, new_end, + n->input_value(3), n->get_pad_mode()); + ngraph::replace_node(dummy_correct_shape, + n->input_value(0).get_node_shared_ptr()); + ngraph::replace_node(n, new_pad); + auto new_transpose = make_transpose(new_pad, order); + write_transposemap(reorders, new_pad, new_transpose); +} + +static void sink_concat(shared_ptr n, + TransposeMap& reorders, + set>& transposes_to_delete) { + auto n_in = n->input_value(0); + auto arg_transpose = read_transposemap(reorders, n_in); + auto arg_transpose_order = ngraph::as_type_ptr( + arg_transpose->input_value(1).get_node_shared_ptr()); + auto order = arg_transpose_order->get_axis_vector_val(); + // we need the correct input shape to produce the right output shape + // we are going to create a label of the right input shape, + // so a new concat will have the right shape + auto def_order = permutation_to_default_order(order); + auto input_shape = + ngraph::apply_permutation(arg_transpose->get_shape(), def_order); + auto dummy_correct_shape = make_shared( + arg_transpose->get_element_type(), input_shape); + + ngraph::NodeVector new_args; + new_args.push_back(dummy_correct_shape); + + for (size_t i = 1; i < n->get_input_size(); i++) { + auto iarg = n->input_value(i); + auto iarg_transpose = read_transposemap(reorders, iarg); + auto iarg_transpose_order = ngraph::as_type_ptr( + iarg_transpose->input_value(1).get_node_shared_ptr()); + auto iorder = iarg_transpose_order->get_axis_vector_val(); + if (iorder != order) { + materialize_shapes(n, reorders, transposes_to_delete); + return; + } + + auto iinput_shape = + ngraph::apply_permutation(iarg_transpose->get_shape(), def_order); + auto idummy_correct_shape = make_shared( + iarg_transpose->get_element_type(), iinput_shape); + new_args.push_back(idummy_correct_shape); + } + + auto new_axis = order.at(n->get_concatenation_axis()); + auto new_concat = make_shared(new_args, new_axis); + // put back the original arguments + for (size_t i = 0; i < new_concat->get_input_size(); i++) { + new_concat->input(i).replace_source_output(n->input_value(i)); + } + ngraph::replace_node(n, new_concat); + auto new_transpose = make_transpose(new_concat, order); + write_transposemap(reorders, new_concat, new_transpose); +} + +// The goal of TransposeSinking is to remove +// round-trip transposes(i.e. nhwc->nchw(nchw-only-op)->nhwc) +// around nchw-only-op (e.g.Convolution, Batchnorm, Avg/MaxPool) +// This is achieved by both **sinking**, propagating transposes +// through ops towards ngraph::op::Results, +// or **swimming** Transposes up towards ngraph::op::Parameter +// For each op type we support we can either combine +// two transposes by replacing the existing Transpose, +// materialize pending transposes if they can't be propagated through op +bool TransposeSinking::run_on_function(shared_ptr f) { + TransposeMap reorders; + set> transposes_to_delete; + unordered_map orig_result_out_shape; + + // delete + + // STEP 1 : Sink or Swim transposes away for op clusters + for (auto n : f->get_ordered_ops()) { + // collect output shape of all Result nodes for a sanity check + if (ngraph::op::is_output(n)) { + orig_result_out_shape[n->get_name()] = n->get_output_shape(0); + } + if (auto transpose = ngraph::as_type_ptr(n)) { + sink_transpose(transpose, reorders, transposes_to_delete); + } else if (ngraph::op::is_unary_elementwise_arithmetic(n) || + ngraph::as_type_ptr(n)) { + // since clamp op is not identified as unary_element op + // and we use clamp to implement activations, we need to sink Clamp as + // other unary ops + sink_unary(n, reorders, transposes_to_delete); + } else if (ngraph::op::is_binary_elementwise_arithmetic(n)) { + sink_binary(n, reorders, transposes_to_delete); + } else if (auto pad = ngraph::as_type_ptr(n)) { + sink_pad(pad, reorders, transposes_to_delete); + } else if (auto concat = ngraph::as_type_ptr(n)) { + sink_concat(concat, reorders, transposes_to_delete); + } else { + materialize_shapes(n, reorders, transposes_to_delete); + } + } + + // STEP 2: purge all the transposes we either sunk or swam. + for (auto r : transposes_to_delete) { + delete_transpose(r); + } + + // STEP 3: fix wrong shape info wholesale + for (auto n : f->get_ordered_ops()) { + n->revalidate_and_infer_types(); + } + + const ngraph::ResultVector& results = f->get_results(); + for (auto r : results) { + // make sure shapes are always materialized before results + NGRAPH_CHECK( + r->get_shape() == r->get_input_shape(0) && + r->get_element_type() == r->input_value(0).get_element_type(), + " op::Result = ", *r, ", Arg = ", r->input_value(0).get_node()); + + // make sure that after TransposeSinking pass the output_shape for Result + // does not change from the expected output_shape before the pass + NGRAPH_CHECK(r->get_output_shape(0) == orig_result_out_shape[r->get_name()], + " op::Result = ", *r, " expected output shape = ", + orig_result_out_shape[r->get_name()]); + } + + return true; +} + +} // namespace pass +} // namespace openvino_tensorflow +} // namespace tensorflow diff --git a/src/webnn_native/openvino/ienn/src/transpose_sinking.h b/src/webnn_native/openvino/ienn/src/transpose_sinking.h new file mode 100644 index 000000000..f58b2391c --- /dev/null +++ b/src/webnn_native/openvino/ienn/src/transpose_sinking.h @@ -0,0 +1,27 @@ +/***************************************************************************** + * Copyright (C) 2021 Intel Corporation + * + * SPDX-License-Identifier: Apache-2.0 + *****************************************************************************/ + +#pragma once + +#include "ngraph/ngraph.hpp" +#include "ngraph/pass/pass.hpp" +#include "ngraph/util.hpp" + +namespace tensorflow { +namespace openvino_tensorflow { +namespace pass { + +class TransposeSinking : public ngraph::pass::FunctionPass { + public: + TransposeSinking() { + set_property(ngraph::pass::PassProperty::REQUIRE_STATIC_SHAPE, true); + } + bool run_on_function(std::shared_ptr function) override; +}; + +} // namespace pass +} // namespace openvino_tensorflow +} // namespace tensorflow From 814dab99127c05ed2aac3032d4e2df15ac10a489 Mon Sep 17 00:00:00 2001 From: fujunwei Date: Wed, 9 Jun 2021 16:44:11 +0800 Subject: [PATCH 2/4] Add WebNN-native binding for Node.js to expose WebNN JavaScript API --- DEPS | 2 +- node/LICENSE | 201 +++++++++++ node/README.md | 70 ++++ node/binding.gyp | 76 ++++ node/examples/console/lenet/README.md | 20 + node/examples/console/lenet/main.mjs | 43 +++ node/examples/console/lenet/package.json | 12 + .../electron/image_classification/README.md | 23 ++ .../electron/image_classification/main.js | 55 +++ .../image_classification/package.json | 14 + .../image_classification/screenshot.png | Bin 0 -> 223229 bytes node/examples/electron/lenet/README.md | 23 ++ node/examples/electron/lenet/main.js | 55 +++ node/examples/electron/lenet/package.json | 14 + node/examples/electron/lenet/screenshot.png | Bin 0 -> 55313 bytes node/examples/electron/setup.js | 3 + node/examples/utils.js | 50 +++ node/lib/webnn.js | 3 + node/node_setup.js | 7 + node/package.json | 41 +++ node/src/Context.cpp | 56 +++ node/src/Context.h | 39 ++ node/src/Graph.cpp | 282 +++++++++++++++ node/src/Graph.h | 48 +++ node/src/GraphBuilder.cpp | 254 +++++++++++++ node/src/GraphBuilder.h | 57 +++ node/src/Index.cpp | 33 ++ node/src/Index.h | 26 ++ node/src/ML.cpp | 41 +++ node/src/ML.h | 36 ++ node/src/Operand.cpp | 41 +++ node/src/Operand.h | 47 +++ node/src/Utils.h | 341 ++++++++++++++++++ node/src/ops/BatchNorm.cpp | 70 ++++ node/src/ops/BatchNorm.h | 29 ++ node/src/ops/Clamp.cpp | 55 +++ node/src/ops/Clamp.h | 29 ++ node/src/ops/Concat.cpp | 37 ++ node/src/ops/Concat.h | 29 ++ node/src/ops/Constant.cpp | 102 ++++++ node/src/ops/Constant.h | 29 ++ node/src/ops/Conv2d.cpp | 122 +++++++ node/src/ops/Conv2d.h | 29 ++ node/src/ops/Gemm.cpp | 70 ++++ node/src/ops/Gemm.h | 29 ++ node/src/ops/Input.cpp | 36 ++ node/src/ops/Input.h | 29 ++ node/src/ops/LeakyRelu.cpp | 50 +++ node/src/ops/LeakyRelu.h | 29 ++ node/src/ops/Pool2d.cpp | 127 +++++++ node/src/ops/Pool2d.h | 37 ++ node/src/ops/Reshape.cpp | 40 ++ node/src/ops/Reshape.h | 29 ++ node/src/ops/Transpose.cpp | 52 +++ node/src/ops/Transpose.h | 29 ++ 55 files changed, 3100 insertions(+), 1 deletion(-) create mode 100644 node/LICENSE create mode 100644 node/README.md create mode 100644 node/binding.gyp create mode 100644 node/examples/console/lenet/README.md create mode 100644 node/examples/console/lenet/main.mjs create mode 100644 node/examples/console/lenet/package.json create mode 100644 node/examples/electron/image_classification/README.md create mode 100644 node/examples/electron/image_classification/main.js create mode 100644 node/examples/electron/image_classification/package.json create mode 100644 node/examples/electron/image_classification/screenshot.png create mode 100644 node/examples/electron/lenet/README.md create mode 100644 node/examples/electron/lenet/main.js create mode 100644 node/examples/electron/lenet/package.json create mode 100644 node/examples/electron/lenet/screenshot.png create mode 100644 node/examples/electron/setup.js create mode 100644 node/examples/utils.js create mode 100644 node/lib/webnn.js create mode 100644 node/node_setup.js create mode 100644 node/package.json create mode 100644 node/src/Context.cpp create mode 100644 node/src/Context.h create mode 100644 node/src/Graph.cpp create mode 100644 node/src/Graph.h create mode 100644 node/src/GraphBuilder.cpp create mode 100644 node/src/GraphBuilder.h create mode 100644 node/src/Index.cpp create mode 100644 node/src/Index.h create mode 100644 node/src/ML.cpp create mode 100644 node/src/ML.h create mode 100644 node/src/Operand.cpp create mode 100644 node/src/Operand.h create mode 100644 node/src/Utils.h create mode 100644 node/src/ops/BatchNorm.cpp create mode 100644 node/src/ops/BatchNorm.h create mode 100644 node/src/ops/Clamp.cpp create mode 100644 node/src/ops/Clamp.h create mode 100644 node/src/ops/Concat.cpp create mode 100644 node/src/ops/Concat.h create mode 100644 node/src/ops/Constant.cpp create mode 100644 node/src/ops/Constant.h create mode 100644 node/src/ops/Conv2d.cpp create mode 100644 node/src/ops/Conv2d.h create mode 100644 node/src/ops/Gemm.cpp create mode 100644 node/src/ops/Gemm.h create mode 100644 node/src/ops/Input.cpp create mode 100644 node/src/ops/Input.h create mode 100644 node/src/ops/LeakyRelu.cpp create mode 100644 node/src/ops/LeakyRelu.h create mode 100644 node/src/ops/Pool2d.cpp create mode 100644 node/src/ops/Pool2d.h create mode 100644 node/src/ops/Reshape.cpp create mode 100644 node/src/ops/Reshape.h create mode 100644 node/src/ops/Transpose.cpp create mode 100644 node/src/ops/Transpose.h diff --git a/DEPS b/DEPS index a8059d769..7a838e053 100644 --- a/DEPS +++ b/DEPS @@ -19,7 +19,7 @@ deps = { 'url': '{github_git}/webmachinelearning/webnn-polyfill.git@5c5e9f6f5dbbe9dc67c448c8f7a55b6ddf4dee25' }, 'node/third_party/webnn-samples': { - 'url': '{github_git}/webmachinelearning/webnn-samples.git@8ac60606633f1822db7c76facd3ea3548f8359c2' + 'url': '{github_git}/webmachinelearning/webnn-samples.git@65cab3bb9ea626fb5b68c32169e7602bf3796b8f' }, 'third_party/stb': { 'url': '{github_git}/nothings/stb@b42009b3b9d4ca35bc703f5310eedc74f584be58' diff --git a/node/LICENSE b/node/LICENSE new file mode 100644 index 000000000..261eeb9e9 --- /dev/null +++ b/node/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. diff --git a/node/README.md b/node/README.md new file mode 100644 index 000000000..073d30e4b --- /dev/null +++ b/node/README.md @@ -0,0 +1,70 @@ +# WebNN-native Binding for Node.js + +*WebNN-native Binding for Node.js is a Node.js [C++ addon](https://nodejs.org/api/addons.html). The implementation is based on WebNN-native C API and exposes [WebNN](https://webmachinelearning.github.io/webnn/) JavaScript API. + + +## Prerequisites + +Install [Node.js](https://nodejs.org/). + +For Windows, install [Visual Studio 2019](https://visualstudio.microsoft.com/vs/). + +For Linux, install `build-essential` package. + +**Verified configurations:** + * Node.js 14 LTS + * Windows 10 + * Ubuntu Linux 16.04 + +## Build WebNN-native + +You need to build WebNN native as a C/C++ library by following [WebNN-native README](https://github.com/webmachinelearning/webnn-native#readme), please make sure the end2end tests can work as expected. + +**Note:** In case you have multiple python installations, you might want to use the --script-executable gn flag to instruct gn to use the python 2.x installation. + +## Build and Run + +### Install Node.js modules + +Install node-gyp and other Node.js modules that are required to build the Node.js addon. The `webnn_native_lib_path` must be configured so that WebNN native header files and libraries can be found. The path must be a relative path to the `node` folder. For example, execute the following command: + +```shell script +> npm install --webnn_native_lib_path="../out/Release" +``` + +### Build + +The Node.js addon can also be built after install. For example, execute the following command: + +```shell script +> npm run build --webnn_native_lib_path="../out/Release" +``` + +## Test + +### Setup environment variables + +The path of WebNN-native libraries need to be added into the environment variable before running the test. + +#### Windows + +```shell script +> set PATH=\path\to\webnn-native\out\Release;%PATH% +``` + +#### Linux + +```sh +$ export LD_LIBRARY_PATH=/path/to/webnn-native/out/Release:$LD_LIBRARY_PATH +``` + +### Test all tests + +```shell script +> npm test +``` + +## Example + + * [LeNet in Electron.js](examples/lenet_electron/README.md) + * [LeNet in Node.js](examples/lenet/README.md) diff --git a/node/binding.gyp b/node/binding.gyp new file mode 100644 index 000000000..980f509c8 --- /dev/null +++ b/node/binding.gyp @@ -0,0 +1,76 @@ +{ + 'variables': { + 'WEBNN_NATIVE_DIR': '<@(module_root_dir)/../', + 'WEBNN_NATIVE_LIB_PATH': '<@(module_root_dir)/../<(webnn_native_lib_path)', + }, + 'conditions': [ + [ 'OS=="win"', { + 'variables': { + 'WEBNN_NATIVE_LIBRARY': '-lwebnn_native.dll.lib', + 'WEBNN_PROC_LIBRARY': '-lwebnn_proc.dll.lib', + }} + ], + [ 'OS=="linux"', { + 'variables': { + 'WEBNN_NATIVE_LIBRARY': '-lwebnn_native', + 'WEBNN_PROC_LIBRARY': '-lwebnn_proc', + }} + ] + ], + 'targets': [ + { + 'target_name': 'webnn_node', + 'sources': [ + "'src/'+f).join(' ')\")", + "'src/ops/'+f).join(' ')\")", + # webnn_cpp.cpp must be relative path. + '../<(webnn_native_lib_path)/gen/src/webnn/webnn_cpp.cpp', + ], + 'cflags!': [ '-fno-exceptions', '-fno-rtti'], + 'cflags_cc!': [ '-fno-exceptions', '-fno-rtti'], + 'default_configuration': 'Release', + 'configurations': { + 'Debug': { + 'msvs_settings': { + 'VCCLCompilerTool': { + 'ExceptionHandling': 1, + 'RuntimeTypeInfo': 'true', + 'RuntimeLibrary': 3 # MultiThreadedDebugDLL (/MDd) + }, + }, + }, + 'Release': { + 'msvs_settings': { + 'VCCLCompilerTool': { + 'ExceptionHandling': 1, + 'RuntimeTypeInfo': 'true', + 'RuntimeLibrary': 2 # MultiThreadedDLL (/MD) + }, + }, + } + }, + 'include_dirs' : [ + ' webnn_node_examples@0.0.1 start +> node main.mjs + +loading elapsed time: 5.00 ms +compilation elapsed time: 33.00 ms +execution elapsed time: 1.00 ms +success for outputs buffer 0,0,0,1,0,0,0,0,0,0 +``` \ No newline at end of file diff --git a/node/examples/console/lenet/main.mjs b/node/examples/console/lenet/main.mjs new file mode 100644 index 000000000..ea535faa9 --- /dev/null +++ b/node/examples/console/lenet/main.mjs @@ -0,0 +1,43 @@ +// Copyright 2021 The WebNN-native Authors +// +// 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. + +'use strict'; + +import utils from '../../utils.js'; +import webnn from '../../../lib/webnn.js'; +global.navigator = webnn; +global.MLGraphBuilder = webnn.MLGraphBuilder; + +(async function main() { + let module = await import('../../../third_party/webnn-samples/lenet/lenet.js'); + const lenet = new module.LeNet('../../../third_party/webnn-polyfill/test-data/models/lenet_nchw/weights/lenet.bin'); + let start = Date.now(); + const outputOperand = await lenet.load(); + console.log( + `loading elapsed time: ${(Date.now() - start).toFixed(2)} ms`); + + start = Date.now(); + await lenet.build(outputOperand); + const compilationTime = Date.now() - start; + console.log(`compilation elapsed time: ${compilationTime.toFixed(2)} ms`); + + start = Date.now(); + const input = new Float32Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,5,4,3,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,47,119,210,164,119,116,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,99,233,250,253,252,250,246,72,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,24,224,253,254,253,254,253,230,72,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,105,240,253,226,253,254,250,136,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,201,251,213,253,254,248,41,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,86,201,251,254,254,249,48,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,35,207,253,254,252,164,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,7,92,139,249,254,254,250,112,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,43,206,245,251,254,254,254,248,43,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,80,239,253,254,254,254,254,251,143,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,111,239,250,250,250,253,252,168,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,74,90,91,98,234,251,170,5,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,2,2,7,134,250,214,34,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,16,245,253,208,31,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,2,0,0,0,0,0,4,137,251,250,117,3,0,0,0,0,0,0,0,0,0,0,0,0,0,0,25,168,91,4,1,0,1,3,34,233,253,245,40,1,0,0,0,0,0,0,0,0,0,0,0,0,0,4,156,247,210,69,39,7,54,93,201,252,250,138,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,60,195,248,248,218,180,235,249,253,251,205,19,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,133,111,247,249,250,253,254,253,226,11,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,12,115,118,164,245,247,229,57,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,3,3,4,6,6,6,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]); + const result = await lenet.predict(input); + const inferenceTime = Date.now() - start.toFixed(2); + console.log(`execution elapsed time: ${inferenceTime.toFixed(2)} ms`); + const expected = [ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0]; + utils.checkValue(result, expected); + console.log("success for outputs buffer " + result); +})(); diff --git a/node/examples/console/lenet/package.json b/node/examples/console/lenet/package.json new file mode 100644 index 000000000..672f8cffd --- /dev/null +++ b/node/examples/console/lenet/package.json @@ -0,0 +1,12 @@ +{ + "name": "webnn_node_examples", + "version": "0.0.1", + "description": "A Node.js example of LeNet using webnn-native", + "main": "main.mjs", + "author": "WebNN-native Authors", + "license": "Apache-2.0", + "type": "module", + "scripts": { + "start": "node main.mjs" + } +} diff --git a/node/examples/electron/image_classification/README.md b/node/examples/electron/image_classification/README.md new file mode 100644 index 000000000..42d57f646 --- /dev/null +++ b/node/examples/electron/image_classification/README.md @@ -0,0 +1,23 @@ +# An Electron.js example of Image Classification using webnn-native + +### Install + +Firstly, ensure that you have done these steps in [README.md](/node/README.md), then run: +```bash +npm install +``` + +### Run + +```bash +npm start +``` + +You can also run multiple times with "numRuns" to get the median inference time, for example: +```bash +npm start numRuns=100 +``` + +### Screenshot + +![screenshot](screenshot.png) \ No newline at end of file diff --git a/node/examples/electron/image_classification/main.js b/node/examples/electron/image_classification/main.js new file mode 100644 index 000000000..5dd0a1da2 --- /dev/null +++ b/node/examples/electron/image_classification/main.js @@ -0,0 +1,55 @@ +// Modules to control application life and create native browser window +const {app, BrowserWindow} = require('electron') +const path = require('path') + +// Keep a global reference of the window object, if you don't, the window will +// be closed automatically when the JavaScript object is garbage collected. +let mainWindow = {} + +function createWindow() { + // Create the browser window. + mainWindow = new BrowserWindow({ + width: 1220, + height: 840, + webPreferences: { + nodeIntegration: true, + preload: app.getAppPath().replace('image_classification','setup.js') + } + }) + + // Load the index.html with 'numRunsParm' to run inference multiple times. + let url = `file://${__dirname}/../../../third_party/webnn-samples/image_classification/index.html` + const numRunsParm = '?' + process.argv[2] + mainWindow.loadURL(url + numRunsParm) + + // Emitted when the window is closed. + mainWindow.on('closed', function() { + // Dereference the window object, usually you would store windows + // in an array if your app supports multi windows, this is the time + // when you should delete the corresponding element. + mainWindow = null + }) +} + +// This method will be called when Electron has finished +// initialization and is ready to create browser windows. +// Some APIs can only be used after this event occurs. +app.on('ready', createWindow) + +// Quit when all windows are closed. +app.on('window-all-closed', function() { + // On macOS it is common for applications and their menu bar + // to stay active until the user quits explicitly with Cmd + Q + if (process.platform !== 'darwin') app.quit() +}) + +app.on( + 'activate', + function() { + // On macOS it's common to re-create a window in the app when the + // dock icon is clicked and there are no other windows open. + if (mainWindow === null) createWindow() + }) + + // In this file you can include the rest of your app's specific main process + // code. You can also put them in separate files and require them here. diff --git a/node/examples/electron/image_classification/package.json b/node/examples/electron/image_classification/package.json new file mode 100644 index 000000000..18b09b94e --- /dev/null +++ b/node/examples/electron/image_classification/package.json @@ -0,0 +1,14 @@ +{ + "name": "webnn_electron", + "version": "0.0.1", + "description": "An Electon.js example of image_classification using webnn-native", + "main": "main.js", + "author": "WebNN-native Authors", + "license": "Apache-2.0", + "scripts": { + "start": "electron ." + }, + "dependencies": { + "electron": "^11.0.3" + } +} diff --git a/node/examples/electron/image_classification/screenshot.png b/node/examples/electron/image_classification/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..a44bc6569c72f70de46cbb90d151f1e08d063c4a GIT binary patch literal 223229 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
  • >RqqKp5RYy(&F0Xq2Wf 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

    q^zu6&AocB< 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 SUg@5U=pp?=&e6Y#z413)PArT7 literal 0 HcmV?d00001 diff --git a/node/examples/electron/lenet/README.md b/node/examples/electron/lenet/README.md new file mode 100644 index 000000000..9830d11a0 --- /dev/null +++ b/node/examples/electron/lenet/README.md @@ -0,0 +1,23 @@ +# An Electron.js example of LeNet using webnn-native + +### Install + +Firstly, ensure that you have done these steps in [README.md](/node/README.md), then run: +```bash +npm install +``` + +### Run + +```bash +npm start +``` + +You can also run multiple times with "numRuns" to get the median inference time, for example: +```bash +npm start numRuns=100 +``` + +### Screenshot + +![screenshot](screenshot.png) \ No newline at end of file diff --git a/node/examples/electron/lenet/main.js b/node/examples/electron/lenet/main.js new file mode 100644 index 000000000..817fc61a9 --- /dev/null +++ b/node/examples/electron/lenet/main.js @@ -0,0 +1,55 @@ +// Modules to control application life and create native browser window +const {app, BrowserWindow} = require('electron') +const path = require('path') + +// Keep a global reference of the window object, if you don't, the window will +// be closed automatically when the JavaScript object is garbage collected. +let mainWindow + +function createWindow() { + // Create the browser window. + mainWindow = new BrowserWindow({ + width: 1220, + height: 840, + webPreferences: { + nodeIntegration: true, + preload: app.getAppPath().replace('lenet','setup.js') + } + }) + + // Load the index.html with 'numRunsParm' to run inference multiple times. + let url = `file://${__dirname}/../../../third_party/webnn-samples/lenet/index.html` + const numRunsParm = '?' + process.argv[2] + mainWindow.loadURL(url + numRunsParm) + + // Emitted when the window is closed. + mainWindow.on('closed', function() { + // Dereference the window object, usually you would store windows + // in an array if your app supports multi windows, this is the time + // when you should delete the corresponding element. + mainWindow = null + }) +} + +// This method will be called when Electron has finished +// initialization and is ready to create browser windows. +// Some APIs can only be used after this event occurs. +app.on('ready', createWindow) + +// Quit when all windows are closed. +app.on('window-all-closed', function() { + // On macOS it is common for applications and their menu bar + // to stay active until the user quits explicitly with Cmd + Q + if (process.platform !== 'darwin') app.quit() +}) + +app.on( + 'activate', + function() { + // On macOS it's common to re-create a window in the app when the + // dock icon is clicked and there are no other windows open. + if (mainWindow === null) createWindow() + }) + + // In this file you can include the rest of your app's specific main process + // code. You can also put them in separate files and require them here. diff --git a/node/examples/electron/lenet/package.json b/node/examples/electron/lenet/package.json new file mode 100644 index 000000000..40808af19 --- /dev/null +++ b/node/examples/electron/lenet/package.json @@ -0,0 +1,14 @@ +{ + "name": "webnn_electron", + "version": "0.0.1", + "description": "An Electon.js example of LeNet using webnn-native", + "main": "main.js", + "author": "WebNN-native Authors", + "license": "Apache-2.0", + "scripts": { + "start": "electron ." + }, + "dependencies": { + "electron": "^11.0.3" + } +} diff --git a/node/examples/electron/lenet/screenshot.png b/node/examples/electron/lenet/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..5756aaf11812484b1f4b1692a48dc80bbeffc3fd GIT binary patch literal 55313 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 accumulator * currentValue); +} + +function checkShape(shape, expected) { + assert.isTrue(shape.length === expected.length); + for (let i = 0; i < shape.length; ++i) { + assert.isTrue(shape[i] === expected[i]); + } +} + +module.exports = { + checkValue +} diff --git a/node/lib/webnn.js b/node/lib/webnn.js new file mode 100644 index 000000000..bc296b2df --- /dev/null +++ b/node/lib/webnn.js @@ -0,0 +1,3 @@ +"use strict"; + +module.exports = require('bindings')(`webnn_node.node`); diff --git a/node/node_setup.js b/node/node_setup.js new file mode 100644 index 000000000..386c16bd2 --- /dev/null +++ b/node/node_setup.js @@ -0,0 +1,7 @@ +global.navigator = require('./lib/webnn'); +global.MLContext = global.navigator.MLContext +global.MLGraphBuilder = global.navigator.MLGraphBuilder +global.MLGraph = global.navigator.MLGraph +global.MLOperand = global.navigator.MLOperand +global.chai = require('chai'); +global.fs = require('fs'); diff --git a/node/package.json b/node/package.json new file mode 100644 index 000000000..6f4068741 --- /dev/null +++ b/node/package.json @@ -0,0 +1,41 @@ +{ + "name": "webnn-node", + "version": "0.1.0", + "description": "WebNN-native Binding for Node.js*", + "main": "lib/webnn.js", + "author": "WebNN-native Authors", + "license": "Apache-2.0", + "repository": { + "type": "git", + "url": "https://github.com/webmachinelearning/webnn-native.git" + }, + "directories": { + "example": "examples", + "lib": "lib", + "test": "third_party/webnn-polyfill/test" + }, + "scripts": { + "build": "node-gyp configure && node-gyp build", + "build-debug": "node-gyp configure --debug && node-gyp build", + "start": "http-server", + "test": "cross-env NODE_ENV=test mocha --require ./node_setup.js third_party/webnn-polyfill/test/*/*.js third_party/webnn-polyfill/test/cts/from_nnapi/tests/cts.js third_party/webnn-polyfill/test/models/**/*.js", + "test-api": "cross-env NODE_ENV=test mocha --require ./node_setup.js third_party/webnn-polyfill/test/api/*.js", + "test-ops": "cross-env NODE_ENV=test mocha --require ./node_setup.js third_party/webnn-polyfill/test/ops/*.js", + "test-cts": "cross-env NODE_ENV=test mocha --require ./node_setup.js third_party/webnn-polyfill/test/cts/from_nnapi/tests/cts.js", + "test-models": "cross-env NODE_ENV=test mocha --require ./node_setup.js third_party/webnn-polyfill/test/models/**/*.js" + }, + "dependencies": { + "bindings": "^1.5.0" + }, + "gypfile": true, + "engines": { + "node": ">= 12.20.1" + }, + "devDependencies": { + "chai": "^4.2.0", + "cross-env": "^7.0.3", + "http-server": "^0.12.3", + "mocha": "^7.1.1", + "node-addon-api": "^3.0.2" + } +} diff --git a/node/src/Context.cpp b/node/src/Context.cpp new file mode 100644 index 000000000..3a3a8b6a5 --- /dev/null +++ b/node/src/Context.cpp @@ -0,0 +1,56 @@ +// Copyright 2021 The WebNN-native Authors +// +// 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. + +#include "Context.h" + +#include +#include +#include + + +Napi::FunctionReference node::Context::constructor; + +namespace node { + + Context::Context(const Napi::CallbackInfo& info) : Napi::ObjectWrap(info) { + WebnnProcTable backendProcs = webnn_native::GetProcs(); + webnnProcSetProcs(&backendProcs); + mImpl = ml::Context::Acquire(webnn_native::CreateContext()); + if (!mImpl) { + Napi::Error::New(info.Env(), "Failed to create Context").ThrowAsJavaScriptException(); + return; + } + mImpl.SetUncapturedErrorCallback( + [](MLErrorType type, char const* message, void* userData) { + if (type != MLErrorType_NoError) { + std::cout << "Uncaptured Error type is " << type << ", message is " << message + << std::endl; + } + }, + this); + } + + ml::Context Context::GetImpl() { + return mImpl; + } + + Napi::Object Context::Initialize(Napi::Env env, Napi::Object exports) { + Napi::HandleScope scope(env); + Napi::Function func = DefineClass(env, "MLContext", {}); + constructor = Napi::Persistent(func); + constructor.SuppressDestruct(); + exports.Set("MLContext", func); + return exports; + } +} // namespace node diff --git a/node/src/Context.h b/node/src/Context.h new file mode 100644 index 000000000..1dfbfef04 --- /dev/null +++ b/node/src/Context.h @@ -0,0 +1,39 @@ +// Copyright 2021 The WebNN-native Authors +// +// 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 NODE_ML_CONTEXT_H_ +#define NODE_ML_CONTEXT_H_ + +#include +#include + +namespace node { + + class Context : public Napi::ObjectWrap { + public: + static Napi::Object Initialize(Napi::Env env, Napi::Object exports); + static Napi::FunctionReference constructor; + + Context(const Napi::CallbackInfo& info); + ~Context() = default; + + ml::Context GetImpl(); + + private: + ml::Context mImpl; + }; + +} // namespace node + +#endif // NODE_ML_CONTEXT_H_ diff --git a/node/src/Graph.cpp b/node/src/Graph.cpp new file mode 100644 index 000000000..c7b70e61d --- /dev/null +++ b/node/src/Graph.cpp @@ -0,0 +1,282 @@ +// Copyright 2021 The WebNN-native Authors +// +// 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. + +#include "Graph.h" + +#include +#include + +#include "Utils.h" + +namespace node { + + struct Input { + public: + void const* buffer = nullptr; + size_t size; + std::vector dimensions; + + const ml::Input* AsPtr() { + mInput.buffer = buffer; + mInput.size = size; + if (!dimensions.empty()) { + mInput.dimensions = dimensions.data(); + mInput.dimensionsCount = dimensions.size(); + } + return &mInput; + } + + private: + ml::Input mInput; + }; + + struct Output { + public: + void* buffer = nullptr; + size_t size; + std::vector dimensions; + + const ml::Output* AsPtr() { + mOutput.buffer = buffer; + mOutput.size = size; + if (!dimensions.empty()) { + mOutput.dimensions = dimensions.data(); + mOutput.dimensionsCount = dimensions.size(); + } + return &mOutput; + } + + private: + ml::Output mOutput; + }; + + // Hold Promise::Deferred with AsyncWorker. + class ComputeGraphWorker : public Napi::AsyncWorker { + public: + ComputeGraphWorker(Napi::Env& env, + Napi::Promise::Deferred& deferred, + ml::Graph graph, + std::map inputs, + std::map outputs, + std::vector outputNames) + : Napi::AsyncWorker(env), + mEnv(env), + mDeferred(deferred), + mGraph(graph), + mInputs(std::move(inputs)), + mOutputs(std::move(outputs)), + mOutputNames(std::move(outputNames)) { + } + + ~ComputeGraphWorker() = default; + + void Execute() { + ml::NamedInputs namedInputs = ml::CreateNamedInputs(); + for (auto& input : mInputs) { + namedInputs.Set(input.first.data(), input.second.AsPtr()); + } + ml::NamedOutputs namedOutputs = mOutputs.empty() ? nullptr : ml::CreateNamedOutputs(); + for (auto& output : mOutputs) { + namedOutputs.Set(output.first.data(), output.second.AsPtr()); + } + mGraph.Compute( + namedInputs, + [](MLComputeGraphStatus status, MLNamedResults results, char const* message, + void* userdata) { + ComputeGraphWorker* computeWorker = + reinterpret_cast(userdata); + computeWorker->SetResults(status, results, message); + }, + reinterpret_cast(this), namedOutputs); + } + + void OnOK() { + if (mStatus != ml::ComputeGraphStatus::Success) { + return mDeferred.Reject(Napi::Error::New(mEnv, mMessage).Value()); + } + Napi::Object jsResults = Napi::Object::New(mEnv); + for (auto& name : mOutputNames) { + ml::Result* result = new ml::Result(mNamedResults.Get(name.data())); + if (result->GetHandle() == nullptr) { + // specified outputs. + continue; + } + Napi::Object jsOutput = Napi::Object::New(mEnv); + typedef void (*FinalizerCallback)(Napi::Env env, void* buffer, ml::Result* reslut); + Napi::ArrayBuffer arrayBuffer = + Napi::ArrayBuffer::New( + mEnv, const_cast(result->Buffer()), result->BufferSize(), + [](Napi::Env env, void* buffer, ml::Result* reslut) { delete reslut; }, + result); + // FIXME: handle other data types + Napi::Float32Array float32Array = Napi::Float32Array::New( + mEnv, result->BufferSize() / sizeof(float), arrayBuffer, 0); + jsOutput.Set("data", float32Array); + if (result->Dimensions()) { + Napi::Array jsDimensions = Napi::Array::New(mEnv, result->DimensionsSize()); + for (size_t i = 0; i < result->DimensionsSize(); ++i) { + jsDimensions[i] = Napi::Number::New(mEnv, result->Dimensions()[i]); + } + jsOutput.Set("dimensions", jsDimensions); + } + jsResults.Set(name, jsOutput); + } + mDeferred.Resolve(jsResults); + } + + void SetResults(MLComputeGraphStatus status, MLNamedResults results, char const* message) { + mStatus = static_cast(status); + mNamedResults = mNamedResults.Acquire(results); + if (message) { + mMessage = std::string(message); + } + } + + private: + Napi::Env mEnv; + Napi::Promise::Deferred mDeferred; + ml::Graph mGraph; + ml::ComputeGraphStatus mStatus; + std::string mMessage; + std::map mInputs; + std::map mOutputs; + std::vector mOutputNames; + ml::NamedResults mNamedResults; + }; + + template + bool GetNamedResources(const Napi::Value& jsValue, std::map& namedResources) { + if (!jsValue.IsObject()) { + return false; + } + Napi::Object jsResources = jsValue.As(); + Napi::Array names = jsResources.GetPropertyNames(); + if (names.Length() == 0) { + return false; + } + for (size_t i = 0; i < names.Length(); ++i) { + std::string name = names.Get(i).As().Utf8Value(); + Napi::Object jsResource = jsResources.Get(name).As(); + // dictionary Input { + // required ArrayBufferView buffer; + // sequence dimensions; + // }; + // dictionary Output { + // ArrayBufferView buffer; + // sequence dimensions; + // }; + T resource = {}; + if (!jsResource.Has("data")) { + // Input buffer is required. + return false; + } + int jsElementLength = 0; + if (jsResource.Has("data")) { + if (!jsResource.Get("data").IsTypedArray()) { + return false; + } + + // FIXME: validate the type of typed array. + + Napi::TypedArray jsTypedArray = jsResource.Get("data").As(); + resource.buffer = reinterpret_cast( + reinterpret_cast(jsTypedArray.ArrayBuffer().Data()) + + jsTypedArray.ByteOffset()); + resource.size = jsTypedArray.ByteLength(); + jsElementLength = jsTypedArray.ElementSize(); + } + if (HasOptionMember(jsResource, "dimensions")) { + if (!GetInt32Array(jsResource.Get("dimensions"), resource.dimensions)) { + return false; + } + + /***Dimensions Check ***/ + if (jsElementLength) { + int dimensionSize = 1; + for (auto& dim : resource.dimensions) { + dimensionSize *= dim; + } + if (dimensionSize != jsElementLength) { + return false; + } + } + } + namedResources[name] = resource; + } + return true; + } + + Napi::FunctionReference Graph::constructor; + + Graph::Graph(const Napi::CallbackInfo& info) : Napi::ObjectWrap(info) { + } + + Napi::Value Graph::Compute(const Napi::CallbackInfo& info) { + // Promise compute(NamedInputs inputs, optional NamedOutputs outputs = {}); + WEBNN_NODE_ASSERT(info.Length() == 1 || info.Length() == 2, + "The number of arguments is invalid."); + std::map inputs; + WEBNN_NODE_ASSERT(GetNamedResources(info[0], inputs), + "The inputs parameter is invalid."); + + std::map outputs; + if (info.Length() > 1) { + WEBNN_NODE_ASSERT(GetNamedResources(info[1], outputs), + "The outputs parameter is invalid."); + } + Napi::Env env = info.Env(); + auto deferred = Napi::Promise::Deferred::New(env); + ComputeGraphWorker* worker = new ComputeGraphWorker(env, deferred, mImpl, std::move(inputs), + std::move(outputs), mOutputNames); + worker->Queue(); + return deferred.Promise(); + } + + Napi::Value Graph::ComputeSync(const Napi::CallbackInfo& info) { + // status compute(NamedInputs inputs, NamedOutputs outputs); + WEBNN_NODE_ASSERT(info.Length() == 2, "The number of arguments is invalid."); + std::map inputs; + WEBNN_NODE_ASSERT(GetNamedResources(info[0], inputs), + "The inputs parameter is invalid."); + + std::map outputs; + WEBNN_NODE_ASSERT(GetNamedResources(info[1], outputs), + "The outputs parameter is invalid."); + + ml::NamedInputs namedInputs = ml::CreateNamedInputs(); + for (auto& input : inputs) { + namedInputs.Set(input.first.data(), input.second.AsPtr()); + } + ml::NamedOutputs namedOutputs = ml::CreateNamedOutputs(); + for (auto& output : outputs) { + namedOutputs.Set(output.first.data(), output.second.AsPtr()); + } + ml::ComputeGraphStatus status = mImpl.ComputeSync(namedInputs, namedOutputs); + + return Napi::Number::New(info.Env(), static_cast(status)); + } + + Napi::Object Graph::Initialize(Napi::Env env, Napi::Object exports) { + Napi::HandleScope scope(env); + Napi::Function func = + DefineClass(env, "MLGraph", + {InstanceMethod("compute", &Graph::Compute, napi_enumerable), + InstanceMethod("computeSync", &Graph::ComputeSync, napi_enumerable)}); + constructor = Napi::Persistent(func); + constructor.SuppressDestruct(); + exports.Set("MLGraph", func); + return exports; + } + +} // namespace node diff --git a/node/src/Graph.h b/node/src/Graph.h new file mode 100644 index 000000000..355771efb --- /dev/null +++ b/node/src/Graph.h @@ -0,0 +1,48 @@ +// Copyright 2021 The WebNN-native Authors +// +// 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 NODE_GRAPH_H_ +#define NODE_GRAPH_H_ + +#include +#include +#include + +namespace node { + + class BuildGraphWorker; + class GraphBuilder; + + class Graph : public Napi::ObjectWrap { + public: + static Napi::Object Initialize(Napi::Env env, Napi::Object exports); + static Napi::FunctionReference constructor; + + explicit Graph(const Napi::CallbackInfo& info); + ~Graph() = default; + + private: + friend BuildGraphWorker; + friend GraphBuilder; + + Napi::Value Compute(const Napi::CallbackInfo& info); + Napi::Value ComputeSync(const Napi::CallbackInfo& info); + + ml::Graph mImpl; + std::vector mOutputNames; + }; + +} // namespace node + +#endif // NODE_GRAPH_H_ diff --git a/node/src/GraphBuilder.cpp b/node/src/GraphBuilder.cpp new file mode 100644 index 000000000..68e89c565 --- /dev/null +++ b/node/src/GraphBuilder.cpp @@ -0,0 +1,254 @@ +// Copyright 2021 The WebNN-native Authors +// +// 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. + +#include "GraphBuilder.h" + +#include +#include + +#include "Context.h" +#include "Graph.h" +#include "Operand.h" +#include "Utils.h" +#include "ops/BatchNorm.h" +#include "ops/Clamp.h" +#include "ops/Concat.h" +#include "ops/Constant.h" +#include "ops/Conv2d.h" +#include "ops/Gemm.h" +#include "ops/Input.h" +#include "ops/LeakyRelu.h" +#include "ops/Pool2d.h" +#include "ops/Reshape.h" +#include "ops/Transpose.h" + +Napi::FunctionReference node::GraphBuilder::constructor; + +#define BUILD_BINARY(op) \ + WEBNN_NODE_ASSERT(info.Length() == 2, "The number of arguments is invalid."); \ + std::vector args; \ + ml::Operand a; \ + WEBNN_NODE_ASSERT(GetOperand(info[0], a, args), "The a parameter is invalid."); \ + ml::Operand b; \ + WEBNN_NODE_ASSERT(GetOperand(info[1], b, args), "The a parameter is invalid."); \ + Napi::Object object = Operand::constructor.New(args); \ + Operand* operand = Napi::ObjectWrap::Unwrap(object); \ + operand->SetImpl(mImpl.op(a, b)); \ + return object; + +#define BUILD_UNARY(op) \ + WEBNN_NODE_ASSERT(info.Length() == 1, "The number of arguments is invalid."); \ + std::vector args; \ + ml::Operand input; \ + WEBNN_NODE_ASSERT(GetOperand(info[0], input, args), "The input parameter is invalid."); \ + Napi::Object object = Operand::constructor.New(args); \ + Operand* operand = Napi::ObjectWrap::Unwrap(object); \ + operand->SetImpl(mImpl.op(input)); \ + return object; + +namespace node { + + class BuildGraphWorker : public Napi::AsyncWorker { + public: + BuildGraphWorker(Napi::Env& env, + Napi::Promise::Deferred& deferred, + ml::GraphBuilder builder, + ml::NamedOperands namedOperands, + std::vector outputNames) + : Napi::AsyncWorker(env), + mEnv(env), + mDeferred(deferred), + mBuilder(builder), + mNamedOperands(std::move(namedOperands)), + mOutputNames(std::move(outputNames)) { + } + + ~BuildGraphWorker() = default; + + void Execute() { + mBuilder.Build( + mNamedOperands, + [](MLBuildGraphStatus status, MLGraph impl, char const* message, void* userData) { + BuildGraphWorker* asyncWorker = reinterpret_cast(userData); + asyncWorker->SetGraph(status, impl, message); + }, + reinterpret_cast(this)); + } + + void OnOK() { + if (mStatus != ml::BuildGraphStatus::Success) { + return mDeferred.Reject(Napi::Value::From(mEnv, mMessage)); + } + Napi::Object object = node::Graph::constructor.New({}); + node::Graph* jsGraph = Napi::ObjectWrap::Unwrap(object); + jsGraph->mImpl = mGraph; + jsGraph->mOutputNames = std::move(mOutputNames); + mDeferred.Resolve(object); + } + + void SetGraph(MLBuildGraphStatus status, MLGraph impl, char const* message) { + mStatus = static_cast(status); + mGraph = mGraph.Acquire(impl); + if (message) { + mMessage = std::string(message); + } + } + + private: + Napi::Env mEnv; + Napi::Promise::Deferred mDeferred; + ml::GraphBuilder mBuilder; + ml::NamedOperands mNamedOperands; + std::vector mOutputNames; + ml::BuildGraphStatus mStatus; + std::string mMessage; + ml::Graph mGraph; + }; + + GraphBuilder::GraphBuilder(const Napi::CallbackInfo& info) + : Napi::ObjectWrap(info) { + Napi::Object object = info[0].As(); + node::Context* context = Napi::ObjectWrap::Unwrap(object); + mImpl = ml::CreateGraphBuilder(context->GetImpl()); + } + + Napi::Value GraphBuilder::Constant(const Napi::CallbackInfo& info) { + return op::Constant::Build(info, mImpl); + } + + Napi::Value GraphBuilder::Input(const Napi::CallbackInfo& info) { + return op::Input::Build(info, mImpl); + } + + Napi::Value GraphBuilder::Add(const Napi::CallbackInfo& info) { + BUILD_BINARY(Add); + } + + Napi::Value GraphBuilder::Mul(const Napi::CallbackInfo& info) { + BUILD_BINARY(Mul); + } + + Napi::Value GraphBuilder::Matmul(const Napi::CallbackInfo& info) { + BUILD_BINARY(Matmul); + } + + Napi::Value GraphBuilder::BatchNorm(const Napi::CallbackInfo& info) { + return op::BatchNorm::Build(info, mImpl); + } + + Napi::Value GraphBuilder::Conv2d(const Napi::CallbackInfo& info) { + return op::Conv2d::Build(info, mImpl); + } + + Napi::Value GraphBuilder::Concat(const Napi::CallbackInfo& info) { + return op::Concat::Build(info, mImpl); + } + + Napi::Value GraphBuilder::Gemm(const Napi::CallbackInfo& info) { + return op::Gemm::Build(info, mImpl); + } + + Napi::Value GraphBuilder::Clamp(const Napi::CallbackInfo& info) { + return op::Clamp::Build(info, mImpl); + } + + Napi::Value GraphBuilder::MaxPool2d(const Napi::CallbackInfo& info) { + return op::Pool2d::Build(info, mImpl, op::Pool2dType::kMaxPool2d); + } + + Napi::Value GraphBuilder::AveragePool2d(const Napi::CallbackInfo& info) { + return op::Pool2d::Build(info, mImpl, op::Pool2dType::kAveragePool2d); + } + + Napi::Value GraphBuilder::Relu(const Napi::CallbackInfo& info) { + BUILD_UNARY(Relu); + } + + Napi::Value GraphBuilder::Softmax(const Napi::CallbackInfo& info) { + BUILD_UNARY(Softmax); + } + + Napi::Value GraphBuilder::LeakyRelu(const Napi::CallbackInfo& info) { + return op::LeakyRelu::Build(info, mImpl); + } + + Napi::Value GraphBuilder::Reshape(const Napi::CallbackInfo& info) { + return op::Reshape::Build(info, mImpl); + } + + Napi::Value GraphBuilder::Transpose(const Napi::CallbackInfo& info) { + return op::Transpose::Build(info, mImpl); + } + + Napi::Value GraphBuilder::Build(const Napi::CallbackInfo& info) { + // Promise Build(NamedOperands outputs); + WEBNN_NODE_ASSERT(info.Length() == 1, "The number of arguments is invalid."); + Napi::Env env = info.Env(); + auto deferred = Napi::Promise::Deferred::New(env); + ml::NamedOperands namedOperands; + std::vector names; + WEBNN_NODE_ASSERT(GetNamedOperands(info[0], namedOperands, names), + "The outputs parameter is invalid."); + BuildGraphWorker* worker = + new BuildGraphWorker(env, deferred, mImpl, std::move(namedOperands), std::move(names)); + worker->Queue(); + return deferred.Promise(); + } + + Napi::Value GraphBuilder::BuildSync(const Napi::CallbackInfo& info) { + // MLGraph BuildSync(NamedOperands outputs); + WEBNN_NODE_ASSERT(info.Length() == 1, "The number of arguments is invalid."); + ml::NamedOperands namedOperands; + std::vector names; + WEBNN_NODE_ASSERT(GetNamedOperands(info[0], namedOperands, names), + "The outputs parameter is invalid."); + ml::Graph graph = mImpl.BuildSync(namedOperands); + WEBNN_NODE_ASSERT(graph != nullptr, "Failed to build graph."); + Napi::Object object = node::Graph::constructor.New({}); + node::Graph* jsGraph = Napi::ObjectWrap::Unwrap(object); + jsGraph->mImpl = graph; + jsGraph->mOutputNames = names; + return object; + } + + Napi::Object GraphBuilder::Initialize(Napi::Env env, Napi::Object exports) { + Napi::HandleScope scope(env); + Napi::Function func = DefineClass( + env, "MLGraphBuilder", + {InstanceMethod("constant", &GraphBuilder::Constant, napi_enumerable), + InstanceMethod("input", &GraphBuilder::Input, napi_enumerable), + InstanceMethod("add", &GraphBuilder::Add, napi_enumerable), + InstanceMethod("batchNormalization", &GraphBuilder::BatchNorm, napi_enumerable), + InstanceMethod("mul", &GraphBuilder::Mul, napi_enumerable), + InstanceMethod("matmul", &GraphBuilder::Matmul, napi_enumerable), + InstanceMethod("concat", &GraphBuilder::Concat, napi_enumerable), + InstanceMethod("conv2d", &GraphBuilder::Conv2d, napi_enumerable), + InstanceMethod("clamp", &GraphBuilder::Clamp, napi_enumerable), + InstanceMethod("gemm", &GraphBuilder::Gemm, napi_enumerable), + InstanceMethod("maxPool2d", &GraphBuilder::MaxPool2d, napi_enumerable), + InstanceMethod("averagePool2d", &GraphBuilder::AveragePool2d, napi_enumerable), + InstanceMethod("relu", &GraphBuilder::Relu, napi_enumerable), + InstanceMethod("leakyRelu", &GraphBuilder::LeakyRelu, napi_enumerable), + InstanceMethod("reshape", &GraphBuilder::Reshape, napi_enumerable), + InstanceMethod("softmax", &GraphBuilder::Softmax, napi_enumerable), + InstanceMethod("transpose", &GraphBuilder::Transpose, napi_enumerable), + InstanceMethod("build", &GraphBuilder::Build, napi_enumerable), + InstanceMethod("buildSync", &GraphBuilder::BuildSync, napi_enumerable)}); + constructor = Napi::Persistent(func); + constructor.SuppressDestruct(); + exports.Set("MLGraphBuilder", func); + return exports; + } + +} // namespace node diff --git a/node/src/GraphBuilder.h b/node/src/GraphBuilder.h new file mode 100644 index 000000000..5745aca83 --- /dev/null +++ b/node/src/GraphBuilder.h @@ -0,0 +1,57 @@ +// Copyright 2021 The WebNN-native Authors +// +// 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 NODE_MODEL_BUILDER_H_ +#define NODE_MODEL_BUILDER_H_ + +#include +#include + +namespace node { + + class GraphBuilder : public Napi::ObjectWrap { + public: + static Napi::Object Initialize(Napi::Env env, Napi::Object exports); + static Napi::FunctionReference constructor; + + explicit GraphBuilder(const Napi::CallbackInfo& info); + ~GraphBuilder() = default; + + private: + Napi::Value Constant(const Napi::CallbackInfo& info); + Napi::Value Input(const Napi::CallbackInfo& info); + Napi::Value Add(const Napi::CallbackInfo& info); + Napi::Value BatchNorm(const Napi::CallbackInfo& info); + Napi::Value Mul(const Napi::CallbackInfo& info); + Napi::Value Matmul(const Napi::CallbackInfo& info); + Napi::Value Conv2d(const Napi::CallbackInfo& info); + Napi::Value Concat(const Napi::CallbackInfo& info); + Napi::Value Clamp(const Napi::CallbackInfo& info); + Napi::Value Gemm(const Napi::CallbackInfo& info); + Napi::Value MaxPool2d(const Napi::CallbackInfo& info); + Napi::Value AveragePool2d(const Napi::CallbackInfo& info); + Napi::Value Relu(const Napi::CallbackInfo& info); + Napi::Value LeakyRelu(const Napi::CallbackInfo& info); + Napi::Value Reshape(const Napi::CallbackInfo& info); + Napi::Value Softmax(const Napi::CallbackInfo& info); + Napi::Value Transpose(const Napi::CallbackInfo& info); + Napi::Value Build(const Napi::CallbackInfo& info); + Napi::Value BuildSync(const Napi::CallbackInfo& info); + + ml::GraphBuilder mImpl; + }; + +} // namespace node + +#endif // NODE_MODEL_BUILDER_H_ diff --git a/node/src/Index.cpp b/node/src/Index.cpp new file mode 100644 index 000000000..9236d771b --- /dev/null +++ b/node/src/Index.cpp @@ -0,0 +1,33 @@ +// Copyright 2021 The WebNN-native Authors +// +// 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. + +#include "Index.h" + +#include "Context.h" +#include "Graph.h" +#include "GraphBuilder.h" +#include "ML.h" +#include "Operand.h" + +Napi::Object Init(Napi::Env env, Napi::Object exports) { + node::ML::Initialize(env, exports); + node::Context::Initialize(env, exports); + node::GraphBuilder::Initialize(env, exports); + node::Graph::Initialize(env, exports); + node::Operand::Initialize(env, exports); + + return exports; +} + +NODE_API_MODULE(addon, Init) diff --git a/node/src/Index.h b/node/src/Index.h new file mode 100644 index 000000000..b7e9e9da8 --- /dev/null +++ b/node/src/Index.h @@ -0,0 +1,26 @@ +// Copyright 2021 The WebNN-native Authors +// +// 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 __BASE__ +#define __BASE__ + +#include + +#include +#include +#include +#include +#include + +#endif diff --git a/node/src/ML.cpp b/node/src/ML.cpp new file mode 100644 index 000000000..4accb77a8 --- /dev/null +++ b/node/src/ML.cpp @@ -0,0 +1,41 @@ +// Copyright 2021 The WebNN-native Authors +// +// 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. + +#include "ML.h" + +#include "Context.h" + +Napi::FunctionReference node::ML::constructor; + +namespace node { + + ML::ML(const Napi::CallbackInfo& info) : Napi::ObjectWrap(info) { + } + + Napi::Value ML::CreateContext(const Napi::CallbackInfo& info) { + Napi::Object context = Context::constructor.New({}); + return context; + } + + Napi::Object ML::Initialize(Napi::Env env, Napi::Object exports) { + Napi::HandleScope scope(env); + Napi::Function func = DefineClass( + env, "ml", {StaticMethod("createContext", &ML::CreateContext, napi_enumerable)}); + constructor = Napi::Persistent(func); + constructor.SuppressDestruct(); + exports.Set("ml", func); + return exports; + } + +} // namespace node diff --git a/node/src/ML.h b/node/src/ML.h new file mode 100644 index 000000000..85c129ad2 --- /dev/null +++ b/node/src/ML.h @@ -0,0 +1,36 @@ +// Copyright 2021 The WebNN-native Authors +// +// 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 NODE_ML_H__ +#define NODE_ML_H__ + +#include + +namespace node { + + class ML : public Napi::ObjectWrap { + public: + static Napi::Object Initialize(Napi::Env env, Napi::Object exports); + static Napi::FunctionReference constructor; + + ML(const Napi::CallbackInfo& info); + ~ML() = default; + + private: + static Napi::Value CreateContext(const Napi::CallbackInfo& info); + }; + +} // namespace node + +#endif // NODE_ML_H__ diff --git a/node/src/Operand.cpp b/node/src/Operand.cpp new file mode 100644 index 000000000..e68891c8e --- /dev/null +++ b/node/src/Operand.cpp @@ -0,0 +1,41 @@ +// Copyright 2021 The WebNN-native Authors +// +// 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. + +#include "Operand.h" + +#include "Utils.h" + +Napi::FunctionReference node::Operand::constructor; + +namespace node { + + Operand::Operand(const Napi::CallbackInfo& info) : Napi::ObjectWrap(info) { + for (size_t i = 0; i < info.Length(); ++i) { + Napi::Object operand = info[i].As(); + WEBNN_NODE_ASSERT_AND_RETURN(operand.InstanceOf(Operand::constructor.Value()), + "The input must be Operand object."); + mInputs.push_back(Napi::Persistent(operand)); + } + } + + Napi::Object Operand::Initialize(Napi::Env env, Napi::Object exports) { + Napi::HandleScope scope(env); + Napi::Function func = DefineClass(env, "MLOperand", {}); + constructor = Napi::Persistent(func); + constructor.SuppressDestruct(); + exports.Set("MLOperand", func); + return exports; + } + +} // namespace node diff --git a/node/src/Operand.h b/node/src/Operand.h new file mode 100644 index 000000000..e7597814a --- /dev/null +++ b/node/src/Operand.h @@ -0,0 +1,47 @@ +// Copyright 2021 The WebNN-native Authors +// +// 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 NODE_ML_OPERAND_H_ +#define NODE_ML_OPERAND_H_ + +#include +#include + +namespace node { + + class ModelBuilder; + + class Operand : public Napi::ObjectWrap { + public: + static Napi::Object Initialize(Napi::Env env, Napi::Object exports); + static Napi::FunctionReference constructor; + + explicit Operand(const Napi::CallbackInfo& info); + ~Operand() = default; + + ml::Operand GetImpl() const { + return mImpl; + }; + void SetImpl(const ml::Operand& operand) { + mImpl = operand; + }; + + private: + ml::Operand mImpl; + std::vector mInputs; + }; + +} // namespace node + +#endif // NODE_ML_OPERAND_H_ diff --git a/node/src/Utils.h b/node/src/Utils.h new file mode 100644 index 000000000..78d062c25 --- /dev/null +++ b/node/src/Utils.h @@ -0,0 +1,341 @@ +// Copyright 2021 The WebNN-native Authors +// +// 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 NODE_UTILS_H_ +#define NODE_UTILS_H_ + +#define NAPI_EXPERIMENTAL +#include +#include +#include + +#include "Operand.h" + +#define WEBNN_NODE_THROW(message) \ + Napi::Error::New(info.Env(), message).ThrowAsJavaScriptException(); + +#define WEBNN_NODE_THROW_AND_RETURN(message) \ + WEBNN_NODE_THROW(message); \ + return info.Env().Undefined(); + +#define WEBNN_NODE_ASSERT(condition, message) \ + if (!(condition)) { \ + WEBNN_NODE_THROW_AND_RETURN(message); \ + } + +#define WEBNN_NODE_ASSERT_AND_RETURN(condition, message) \ + if (!(condition)) { \ + WEBNN_NODE_THROW(message); \ + return; \ + } + +namespace node { + + template + bool GetMappedValue(const std::unordered_map map, + const std::string name, + T& value) { + if (map.find(name) == map.end()) { + return false; + } + value = map.at(name); + return true; + } + + inline bool GetOperandType(const Napi::Value& jsValue, ml::OperandType& value) { + const std::unordered_map operandTypeMap = { + {"float32", ml::OperandType::Float32}, {"float16", ml::OperandType::Float16}, + {"int32", ml::OperandType::Int32}, {"uint32", ml::OperandType::Uint32}, + {"int8", ml::OperandType::Int8}, {"uint8", ml::OperandType::Uint8}, + }; + if (!jsValue.IsString()) { + return false; + } + return GetMappedValue(operandTypeMap, jsValue.As().Utf8Value(), value); + } + + inline bool GetInputOperandLayout(const Napi::Value& jsValue, ml::InputOperandLayout& value) { + const std::unordered_map inputOperandLayoutMap = { + {"nchw", ml::InputOperandLayout::Nchw}, + {"nhwc", ml::InputOperandLayout::Nhwc}, + }; + if (!jsValue.IsString()) { + return false; + } + return GetMappedValue(inputOperandLayoutMap, jsValue.As().Utf8Value(), value); + }; + + inline bool GetFilterOperandLayout(const Napi::Value& jsValue, ml::FilterOperandLayout& value) { + const std::unordered_map filterOperandLayoutMap = { + {"oihw", ml::FilterOperandLayout::Oihw}, + {"hwio", ml::FilterOperandLayout::Hwio}, + {"ohwi", ml::FilterOperandLayout::Ohwi}, + {"ihwo", ml::FilterOperandLayout::Ihwo}, + }; + if (!jsValue.IsString()) { + return false; + } + return GetMappedValue(filterOperandLayoutMap, jsValue.As().Utf8Value(), + value); + }; + + inline bool GetAutopad(const Napi::Value& jsValue, ml::AutoPad& value) { + const std::unordered_map AutoPadMap = { + {"explicit", ml::AutoPad::Explicit}, + {"same-upper", ml::AutoPad::SameUpper}, + {"same-lower", ml::AutoPad::SameLower}, + }; + if (!jsValue.IsString()) { + return false; + } + return GetMappedValue(AutoPadMap, jsValue.As().Utf8Value(), value); + }; + + inline bool GetInt32(const Napi::Value& jsValue, int32_t& value) { + if (!jsValue.IsNumber()) { + return false; + } + + // Here is a workaround to check int32 following + // https://github.com/nodejs/node-addon-api/issues/57. + float floatValue = jsValue.As().FloatValue(); + int32_t intValue = jsValue.As().Int32Value(); + if (std::fabs(floatValue - intValue) > 1e-6) { + // It's not integer type. + return false; + } + value = jsValue.As().Int32Value(); + return true; + } + + inline bool GetUint32(const Napi::Value& jsValue, uint32_t& value) { + if (!jsValue.IsNumber()) { + return false; + } + value = jsValue.As().Uint32Value(); + return true; + } + + inline bool GetFloat(const Napi::Value& jsValue, float& value) { + if (!jsValue.IsNumber()) { + return false; + } + value = jsValue.As().FloatValue(); + return true; + } + + inline bool GetBoolean(const Napi::Value& jsValue, bool& value) { + if (!jsValue.IsBoolean()) { + return false; + } + value = jsValue.As().Value(); + return true; + } + + inline bool GetString(const Napi::Value& jsValue, std::string& value) { + if (!jsValue.IsString()) { + return false; + } + value = jsValue.As().Utf8Value(); + return true; + } + + inline bool GetInt32Array(const Napi::Value& jsValue, + std::vector& array, + const size_t size = std::numeric_limits::max()) { + if (!jsValue.IsArray()) { + return false; + } + Napi::Array jsArray = jsValue.As(); + if (size != std::numeric_limits::max() && size != jsArray.Length()) { + return false; + } + std::vector int32Array; + for (uint32_t i = 0; i < jsArray.Length(); ++i) { + Napi::Value jsItem = static_cast(jsArray[i]); + int32_t value; + if (!GetInt32(jsItem, value)) { + return false; + } + int32Array.push_back(value); + } + array = int32Array; + return true; + } + + inline bool GetOperand(const Napi::Value& jsValue, + ml::Operand& operand, + std::vector& args) { + if (!jsValue.IsObject()) { + return false; + } + Napi::Object jsObject = jsValue.As(); + if (!jsObject.InstanceOf(Operand::constructor.Value())) { + return false; + } + operand = Napi::ObjectWrap::Unwrap(jsObject)->GetImpl(); + args.push_back(jsObject.As()); + return true; + } + + inline bool GetOperandArray(const Napi::Value& jsValue, + std::vector& array, + std::vector& args) { + if (!jsValue.IsArray()) { + return false; + } + Napi::Array jsArray = jsValue.As(); + for (size_t j = 0; j < jsArray.Length(); j++) { + if (!jsArray.Get(j).IsObject()) { + return false; + } + Napi::Object object = jsArray.Get(j).As(); + if (!object.InstanceOf(Operand::constructor.Value())) { + return false; + } + Operand* operand = Napi::ObjectWrap::Unwrap(object); + array.push_back(operand->GetImpl()); + args.push_back(object.As()); + } + return true; + } + + struct OperandDescriptor { + public: + ml::OperandType type; + std::vector dimensions; + + const ml::OperandDescriptor* AsPtr() { + if (!dimensions.empty()) { + mDesc.dimensions = dimensions.data(); + mDesc.dimensionsCount = dimensions.size(); + } + mDesc.type = type; + return &mDesc; + } + + private: + ml::OperandDescriptor mDesc; + }; + + inline bool GetOperandDescriptor(const Napi::Value& jsValue, OperandDescriptor& desc) { + if (!jsValue.IsObject()) { + return false; + } + Napi::Object jsDesc = jsValue.As(); + if (!jsDesc.Has("type")) { + return false; + } + if (!GetOperandType(jsDesc.Get("type"), desc.type)) { + return false; + } + if (jsDesc.Has("dimensions")) { + if (!GetInt32Array(jsDesc.Get("dimensions"), desc.dimensions)) { + return false; + } + } + return true; + } + + inline bool GetBufferView(const Napi::Value& jsValue, + const ml::OperandType type, + const std::vector& dimensions, + void*& value, + size_t& size) { + const std::unordered_map arrayTypeMap = { + {ml::OperandType::Float32, napi_float32_array}, + {ml::OperandType::Float16, napi_uint16_array}, + {ml::OperandType::Int32, napi_int32_array}, + {ml::OperandType::Uint32, napi_uint32_array}, + {ml::OperandType::Int8, napi_int8_array}, + {ml::OperandType::Uint8, napi_uint8_array}, + }; + if (!jsValue.IsTypedArray()) { + return false; + } + Napi::TypedArray jsTypedArray = jsValue.As(); + if (arrayTypeMap.find(type) == arrayTypeMap.end()) { + return false; + } + if (arrayTypeMap.at(type) != jsTypedArray.TypedArrayType()) { + return false; + } + value = + reinterpret_cast(reinterpret_cast(jsTypedArray.ArrayBuffer().Data()) + + jsTypedArray.ByteOffset()); + size = jsTypedArray.ByteLength(); + size_t expectedSize; + switch (type) { + case ml::OperandType::Float32: + expectedSize = sizeof(float); + break; + case ml::OperandType::Float16: + expectedSize = sizeof(uint16_t); + break; + case ml::OperandType::Int32: + expectedSize = sizeof(int32_t); + break; + case ml::OperandType::Uint32: + expectedSize = sizeof(uint32_t); + break; + case ml::OperandType::Int8: + expectedSize = sizeof(int8_t); + break; + case ml::OperandType::Uint8: + expectedSize = sizeof(uint8_t); + break; + default: + return false; + } + for (auto dim : dimensions) { + expectedSize *= dim; + } + if (expectedSize != size) { + return false; + } + return true; + } + + inline bool GetNamedOperands(const Napi::Value& jsValue, + ml::NamedOperands& namedOperands, + std::vector& names) { + if (!jsValue.IsObject()) { + return false; + } + Napi::Object jsOutputs = jsValue.As(); + namedOperands = ml::CreateNamedOperands(); + Napi::Array outputNames = jsOutputs.GetPropertyNames(); + if (outputNames.Length() == 0) { + return false; + } + for (size_t j = 0; j < outputNames.Length(); ++j) { + std::string name = outputNames.Get(j).As().Utf8Value(); + Napi::Object output = jsOutputs.Get(name).As(); + if (!output.InstanceOf(Operand::constructor.Value())) { + return false; + } + ml::Operand operand = Napi::ObjectWrap::Unwrap(output)->GetImpl(); + namedOperands.Set(name.data(), operand); + names.push_back(name); + } + return true; + } + + inline bool HasOptionMember(const Napi::Object& jsOptions, const std::string& name) { + return jsOptions.Has(name) && !jsOptions.Get(name).IsUndefined(); + } + +} // namespace node + +#endif // NODE_UTILS_H_ diff --git a/node/src/ops/BatchNorm.cpp b/node/src/ops/BatchNorm.cpp new file mode 100644 index 000000000..d86b93244 --- /dev/null +++ b/node/src/ops/BatchNorm.cpp @@ -0,0 +1,70 @@ +// Copyright 2021 The WebNN-native Authors +// +// 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. + +#include "ops/BatchNorm.h" + +#include "Operand.h" +#include "Utils.h" + +namespace node { namespace op { + + Napi::Value BatchNorm::Build(const Napi::CallbackInfo& info, ml::GraphBuilder builder) { + // Operand batchNormalization(Operand input, Operand mean, Operand variance, + // optional BatchNormalizationOptions options = {}); + WEBNN_NODE_ASSERT(info.Length() == 3 || info.Length() == 4, + "The number of arguments is invalid."); + + std::vector args; + ml::Operand input; + WEBNN_NODE_ASSERT(GetOperand(info[0], input, args), "The input parameter is invalid."); + ml::Operand mean; + WEBNN_NODE_ASSERT(GetOperand(info[1], mean, args), "The mean parameter is invalid."); + ml::Operand variance; + WEBNN_NODE_ASSERT(GetOperand(info[2], variance, args), + "The variance parameter is invalid."); + + // dictionary BatchNormalizationOptions { + // Operand scale; + // Operand bias; + // long axis = 1; + // float epsilon = 1e-5; + // }; + ml::BatchNormOptions options; + if (info.Length() == 4 && !info[3].IsUndefined()) { + WEBNN_NODE_ASSERT(info[3].IsObject(), "The options must be an object.") + Napi::Object jsOptions = info[3].As(); + if (HasOptionMember(jsOptions, "scale")) { + WEBNN_NODE_ASSERT(GetOperand(jsOptions.Get("scale"), options.scale, args), + "The scale parameter is invalid."); + } + if (HasOptionMember(jsOptions, "bias")) { + WEBNN_NODE_ASSERT(GetOperand(jsOptions.Get("bias"), options.bias, args), + "The bias parameter is invalid."); + } + if (HasOptionMember(jsOptions, "axis")) { + WEBNN_NODE_ASSERT(GetUint32(jsOptions.Get("axis"), options.axis), + "The axis parameter is invalid."); + } + if (HasOptionMember(jsOptions, "epsilon")) { + WEBNN_NODE_ASSERT(GetFloat(jsOptions.Get("epsilon"), options.epsilon), + "The epsilon parameter is invalid."); + } + } + + Napi::Object object = Operand::constructor.New(args); + Operand* operand = Napi::ObjectWrap::Unwrap(object); + operand->SetImpl(builder.BatchNorm(input, mean, variance, &options)); + return object; + } +}} // namespace node::op diff --git a/node/src/ops/BatchNorm.h b/node/src/ops/BatchNorm.h new file mode 100644 index 000000000..a7c045362 --- /dev/null +++ b/node/src/ops/BatchNorm.h @@ -0,0 +1,29 @@ +// Copyright 2021 The WebNN-native Authors +// +// 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 NODE_OPS_BATCHNORM_H__ +#define NODE_OPS_BATCHNORM_H__ + +#include +#include + +namespace node { namespace op { + + struct BatchNorm { + static Napi::Value Build(const Napi::CallbackInfo& info, ml::GraphBuilder builder); + }; + +}} // namespace node::op + +#endif // ___OPS_BATCHNORM_H__ diff --git a/node/src/ops/Clamp.cpp b/node/src/ops/Clamp.cpp new file mode 100644 index 000000000..16a55a515 --- /dev/null +++ b/node/src/ops/Clamp.cpp @@ -0,0 +1,55 @@ +// Copyright 2021 The WebNN-native Authors +// +// 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. + +#include "ops/Clamp.h" + +#include "Operand.h" +#include "Utils.h" + +namespace node { namespace op { + + Napi::Value Clamp::Build(const Napi::CallbackInfo& info, ml::GraphBuilder builder) { + // Operand clamp(Operand x, optional ClampOptions options = {}); + WEBNN_NODE_ASSERT(info.Length() == 1 || info.Length() == 2, + "The number of arguments is invalid."); + + std::vector args; + ml::Operand input; + WEBNN_NODE_ASSERT(GetOperand(info[0], input, args), "The input parameter is invalid."); + + // dictionary ClampOptions { + // Operand minValue; + // Operand maxValue; + // }; + ml::ClampOptions options; + if (info.Length() == 2 && !info[1].IsUndefined()) { + WEBNN_NODE_ASSERT(info[1].IsObject(), "The options must be an object."); + Napi::Object jsOptions = info[1].As(); + if (HasOptionMember(jsOptions, "minValue")) { + WEBNN_NODE_ASSERT(GetOperand(jsOptions.Get("minValue"), options.minValue, args), + "The minValue parameter is invalid."); + } + if (HasOptionMember(jsOptions, "maxValue")) { + WEBNN_NODE_ASSERT(GetOperand(jsOptions.Get("maxValue"), options.maxValue, args), + "The maxValue parameter is invalid."); + } + } + + Napi::Object object = Operand::constructor.New(args); + Operand* operand = Napi::ObjectWrap::Unwrap(object); + operand->SetImpl(builder.Clamp(input, &options)); + return object; + } + +}} // namespace node::op diff --git a/node/src/ops/Clamp.h b/node/src/ops/Clamp.h new file mode 100644 index 000000000..204fe19c0 --- /dev/null +++ b/node/src/ops/Clamp.h @@ -0,0 +1,29 @@ +// Copyright 2021 The WebNN-native Authors +// +// 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 NODE_OPS_CLAMP_H_ +#define NODE_OPS_CLAMP_H_ + +#include +#include + +namespace node { namespace op { + + struct Clamp { + static Napi::Value Build(const Napi::CallbackInfo& info, ml::GraphBuilder builder); + }; + +}} // namespace node::op + +#endif // NODE_OPS_CLAMP_H_ diff --git a/node/src/ops/Concat.cpp b/node/src/ops/Concat.cpp new file mode 100644 index 000000000..0d9c4d5b7 --- /dev/null +++ b/node/src/ops/Concat.cpp @@ -0,0 +1,37 @@ +// Copyright 2021 The WebNN-native Authors +// +// 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. + +#include "ops/Concat.h" + +#include "Operand.h" +#include "Utils.h" + +namespace node { namespace op { + + Napi::Value Concat::Build(const Napi::CallbackInfo& info, ml::GraphBuilder builder) { + // Operand concat(sequence inputs, long axis); + WEBNN_NODE_ASSERT(info.Length() == 2, "The number of arguments is invalid."); + + std::vector args; + std::vector inputs; + WEBNN_NODE_ASSERT(GetOperandArray(info[0], inputs, args), + "The input operands are invalid."); + int32_t axis; + WEBNN_NODE_ASSERT(GetInt32(info[1], axis), "The axis parameter is invalid."); + Napi::Object object = Operand::constructor.New(args); + Operand* operand = Napi::ObjectWrap::Unwrap(object); + operand->SetImpl(builder.Concat(inputs.size(), inputs.data(), axis)); + return object; + } +}} // namespace node::op diff --git a/node/src/ops/Concat.h b/node/src/ops/Concat.h new file mode 100644 index 000000000..4e3e98a8c --- /dev/null +++ b/node/src/ops/Concat.h @@ -0,0 +1,29 @@ +// Copyright 2021 The WebNN-native Authors +// +// 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 NODE_OPS_CONCAT_H_ +#define NODE_OPS_CONCAT_H_ + +#include +#include + +namespace node { namespace op { + + struct Concat { + static Napi::Value Build(const Napi::CallbackInfo& info, ml::GraphBuilder builder); + }; + +}} // namespace node::op + +#endif // NODE_OPS_CONCAT_H_ diff --git a/node/src/ops/Constant.cpp b/node/src/ops/Constant.cpp new file mode 100644 index 000000000..dcb6d0b15 --- /dev/null +++ b/node/src/ops/Constant.cpp @@ -0,0 +1,102 @@ +// Copyright 2021 The WebNN-native Authors +// +// 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. + +#include "ops/Constant.h" + +#include "Operand.h" +#include "Utils.h" + +namespace node { namespace op { + + namespace { + union Scalar { + float floatValue; + uint16_t uint16Value; + int32_t int32Value; + uint32_t uint32Value; + int8_t int8Value; + uint8_t uint8Value; + }; + } // namespace + + Napi::Value Constant::Build(const Napi::CallbackInfo& info, ml::GraphBuilder builder) { + // Operand constant(OperandDescriptor desc, ArrayBufferView value); + // Operand constant(double value, optional OperandType type = "float32"); + WEBNN_NODE_ASSERT(info.Length() == 1 || info.Length() == 2, + "The number of arguments is invalid."); + + Napi::Object object = Operand::constructor.New({}); + OperandDescriptor desc; + void* value; + size_t size; + Scalar scalar; + if (info[0].IsNumber()) { + // Operand constant(double value, optional OperandType type = "float32"); + if (info.Length() == 1) { + desc.type = ml::OperandType::Float32; + } else { + WEBNN_NODE_ASSERT(GetOperandType(info[1], desc.type), + "The type parameter is invalid."); + } + Napi::Number jsValue = info[0].As(); + if (desc.type == ml::OperandType::Float32) { + scalar.floatValue = jsValue.FloatValue(); + value = &scalar.floatValue; + size = sizeof(float); + } else if (desc.type == ml::OperandType::Float16) { + scalar.uint16Value = static_cast(jsValue.Uint32Value()); + value = &scalar.uint16Value; + size = sizeof(uint16_t); + } else if (desc.type == ml::OperandType::Int32) { + WEBNN_NODE_ASSERT(GetInt32(info[0], scalar.int32Value), + "Invalid value according to int32 type."); + value = &scalar.int32Value; + size = sizeof(int32_t); + } else if (desc.type == ml::OperandType::Uint32) { + scalar.uint32Value = jsValue.Uint32Value(); + value = &scalar.uint32Value; + size = sizeof(uint32_t); + } else if (desc.type == ml::OperandType::Int8) { + scalar.int8Value = static_cast(jsValue.Int32Value()); + value = &scalar.int8Value; + size = sizeof(int8_t); + } else if (desc.type == ml::OperandType::Uint8) { + scalar.uint8Value = static_cast(jsValue.Uint32Value()); + value = &scalar.uint8Value; + size = sizeof(uint8_t); + } else { + WEBNN_NODE_THROW_AND_RETURN("The operand type is not supported."); + } + desc.dimensions = {1}; + + Napi::ArrayBuffer arrayBuffer = Napi::ArrayBuffer::New(info.Env(), size); + memcpy(arrayBuffer.Data(), value, size); + value = arrayBuffer.Data(); + // Keep a reference of value. + object.Set("value", arrayBuffer); + } else { + WEBNN_NODE_ASSERT(GetOperandDescriptor(info[0], desc), + "The desc parameter is invalid."); + WEBNN_NODE_ASSERT(GetBufferView(info[1], desc.type, desc.dimensions, value, size), + "The value parameter is invalid."); + // Keep a reference of value. + object.Set("value", info[1]); + } + + Operand* operand = Napi::ObjectWrap::Unwrap(object); + operand->SetImpl(builder.Constant(desc.AsPtr(), value, size)); + return object; + } + +}} // namespace node::op diff --git a/node/src/ops/Constant.h b/node/src/ops/Constant.h new file mode 100644 index 000000000..2ad6ffef5 --- /dev/null +++ b/node/src/ops/Constant.h @@ -0,0 +1,29 @@ +// Copyright 2021 The WebNN-native Authors +// +// 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 NODE_OPS_CONSTANT_H_ +#define NODE_OPS_CONSTANT_H_ + +#include +#include + +namespace node { namespace op { + + struct Constant { + static Napi::Value Build(const Napi::CallbackInfo& info, ml::GraphBuilder builder); + }; + +}} // namespace node::op + +#endif // NODE_OPS_CONSTANT_H_ diff --git a/node/src/ops/Conv2d.cpp b/node/src/ops/Conv2d.cpp new file mode 100644 index 000000000..cafb1e160 --- /dev/null +++ b/node/src/ops/Conv2d.cpp @@ -0,0 +1,122 @@ +// Copyright 2021 The WebNN-native Authors +// +// 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. + +#include "ops/Conv2d.h" + +#include "Operand.h" +#include "Utils.h" + +namespace node { namespace op { + + struct Conv2dOptions { + public: + std::vector padding; + std::vector strides; + std::vector dilations; + int32_t groups = 1; + ml::AutoPad autoPad = ml::AutoPad::Explicit; + ml::InputOperandLayout inputLayout = ml::InputOperandLayout::Nchw; + ml::FilterOperandLayout filterLayout = ml::FilterOperandLayout::Oihw; + + const ml::Conv2dOptions* AsPtr() { + if (!padding.empty()) { + mOptions.paddingCount = padding.size(); + mOptions.padding = padding.data(); + } + if (!strides.empty()) { + mOptions.stridesCount = strides.size(); + mOptions.strides = strides.data(); + } + if (!dilations.empty()) { + mOptions.dilationsCount = dilations.size(); + mOptions.dilations = dilations.data(); + } + mOptions.groups = groups; + mOptions.autoPad = autoPad; + mOptions.inputLayout = inputLayout; + mOptions.filterLayout = filterLayout; + return &mOptions; + } + + private: + ml::Conv2dOptions mOptions; + }; + + Napi::Value Conv2d::Build(const Napi::CallbackInfo& info, ml::GraphBuilder builder) { + // Operand conv2d(Operand input, Operand filter, optional Conv2dOptions options = {}); + WEBNN_NODE_ASSERT(info.Length() == 2 || info.Length() == 3, + "The number of arguments is invalid."); + + std::vector args; + ml::Operand input; + WEBNN_NODE_ASSERT(GetOperand(info[0], input, args), "The input parameter is invalid."); + ml::Operand filter; + WEBNN_NODE_ASSERT(GetOperand(info[1], filter, args), "The filter parameter is invalid."); + + // dictionary Conv2dOptions { + // sequence padding; + // sequence strides; + // sequence dilations; + // AutoPad autoPad = "explicit"; + // long groups = 1; + // InputOperandLayout inputLayout = "nchw"; + // FilterOperandLayout filterLayout = "oihw"; + // }; + Conv2dOptions options; + if (info.Length() == 3 && !info[2].IsUndefined()) { + WEBNN_NODE_ASSERT(info[2].IsObject(), "The options must be an object."); + Napi::Object jsOptions = info[2].As(); + if (HasOptionMember(jsOptions, "padding")) { + WEBNN_NODE_ASSERT(GetInt32Array(jsOptions.Get("padding"), options.padding, 4), + "The padding parameter is invalid."); + } + if (HasOptionMember(jsOptions, "strides")) { + WEBNN_NODE_ASSERT(GetInt32Array(jsOptions.Get("strides"), options.strides, 2), + "The strides parameter is invalid."); + } + if (HasOptionMember(jsOptions, "dilations")) { + WEBNN_NODE_ASSERT(GetInt32Array(jsOptions.Get("dilations"), options.dilations, 2), + "The dilations parameter is invalid."); + } + if (HasOptionMember(jsOptions, "groups")) { + WEBNN_NODE_ASSERT(GetInt32(jsOptions.Get("groups"), options.groups), + "The groups parameter is invalid."); + } + if (HasOptionMember(jsOptions, "inputLayout")) { + WEBNN_NODE_ASSERT( + GetInputOperandLayout(jsOptions.Get("inputLayout"), options.inputLayout), + "The inputLayout parameter is invalid."); + } + if (HasOptionMember(jsOptions, "filterLayout")) { + WEBNN_NODE_ASSERT( + GetFilterOperandLayout(jsOptions.Get("filterLayout"), options.filterLayout), + "The filterLayout parameter is invalid."); + } + if (HasOptionMember(jsOptions, "autoPad")) { + WEBNN_NODE_ASSERT(GetAutopad(jsOptions.Get("autoPad"), options.autoPad), + "The autoPad parameter is invalid."); + } + if (HasOptionMember(jsOptions, "transpose")) { + WEBNN_NODE_THROW_AND_RETURN( + "The transpose parameter isn't supported in webNN-native."); + } + } + + Napi::Object object = Operand::constructor.New(args); + Operand* operand = Napi::ObjectWrap::Unwrap(object); + operand->SetImpl(builder.Conv2d(input, filter, options.AsPtr())); + return object; + } + +}} // namespace node::op diff --git a/node/src/ops/Conv2d.h b/node/src/ops/Conv2d.h new file mode 100644 index 000000000..4efda12e0 --- /dev/null +++ b/node/src/ops/Conv2d.h @@ -0,0 +1,29 @@ +// Copyright 2021 The WebNN-native Authors +// +// 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 NODE_OPS_CONV2D_H_ +#define NODE_OPS_CONV2D_H_ + +#include +#include + +namespace node { namespace op { + + struct Conv2d { + static Napi::Value Build(const Napi::CallbackInfo& info, ml::GraphBuilder builder); + }; + +}} // namespace node::op + +#endif // NODE_OPS_CONV2D_H_ diff --git a/node/src/ops/Gemm.cpp b/node/src/ops/Gemm.cpp new file mode 100644 index 000000000..b824d7ed9 --- /dev/null +++ b/node/src/ops/Gemm.cpp @@ -0,0 +1,70 @@ +// Copyright 2021 The WebNN-native Authors +// +// 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. + +#include "ops/Gemm.h" + +#include "Operand.h" +#include "Utils.h" + +namespace node { namespace op { + + Napi::Value Gemm::Build(const Napi::CallbackInfo& info, ml::GraphBuilder builder) { + // Operand gemm(Operand a, Operand b, optional GemmOptions options = {}); + WEBNN_NODE_ASSERT(info.Length() == 2 || info.Length() == 3, + "The number of arguments is invalid."); + + std::vector args; + ml::Operand a; + WEBNN_NODE_ASSERT(GetOperand(info[0], a, args), "The a parameter is invalid."); + ml::Operand b; + WEBNN_NODE_ASSERT(GetOperand(info[1], b, args), "The b parameter is invalid."); + + // dictionary GemmOptions { + // Operand c; + // float alpha = 1.0; + // float beta = 1.0; + // boolean aTranspose = false; + // boolean bTranspose = false; + // }; + ml::GemmOptions options; + if (info.Length() == 3 && !info[2].IsUndefined()) { + WEBNN_NODE_ASSERT(info[2].IsObject(), "The options must be an object."); + Napi::Object jsOptions = info[2].As(); + if (HasOptionMember(jsOptions, "c")) { + WEBNN_NODE_ASSERT(GetOperand(jsOptions.Get("c"), options.c, args), + "The c parameter is invalid."); + } + if (HasOptionMember(jsOptions, "alpha")) { + WEBNN_NODE_ASSERT(GetFloat(jsOptions.Get("alpha"), options.alpha), + "The alpha parameter is invalid."); + } + if (HasOptionMember(jsOptions, "beta")) { + WEBNN_NODE_ASSERT(GetFloat(jsOptions.Get("beta"), options.beta), + "The beta parameter is invalid."); + } + if (HasOptionMember(jsOptions, "aTranspose")) { + WEBNN_NODE_ASSERT(GetBoolean(jsOptions.Get("aTranspose"), options.aTranspose), + "The aTranspose parameter is invalid."); + } + if (HasOptionMember(jsOptions, "bTranspose")) { + WEBNN_NODE_ASSERT(GetBoolean(jsOptions.Get("bTranspose"), options.bTranspose), + "The bTranspose parameter is invalid."); + } + } + Napi::Object object = Operand::constructor.New(args); + Operand* operand = Napi::ObjectWrap::Unwrap(object); + operand->SetImpl(builder.Gemm(a, b, &options)); + return object; + } +}} // namespace node::op diff --git a/node/src/ops/Gemm.h b/node/src/ops/Gemm.h new file mode 100644 index 000000000..142b1b07f --- /dev/null +++ b/node/src/ops/Gemm.h @@ -0,0 +1,29 @@ +// Copyright 2021 The WebNN-native Authors +// +// 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 NODE_OPS_GEMM_H_ +#define NODE_OPS_GEMM_H_ + +#include +#include + +namespace node { namespace op { + + struct Gemm { + static Napi::Value Build(const Napi::CallbackInfo& info, ml::GraphBuilder builder); + }; + +}} // namespace node::op + +#endif // NODE_OPS_GEMM_H_ diff --git a/node/src/ops/Input.cpp b/node/src/ops/Input.cpp new file mode 100644 index 000000000..55fb599ec --- /dev/null +++ b/node/src/ops/Input.cpp @@ -0,0 +1,36 @@ +// Copyright 2021 The WebNN-native Authors +// +// 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. + +#include "ops/Input.h" + +#include "Utils.h" + +namespace node { namespace op { + + Napi::Value Input::Build(const Napi::CallbackInfo& info, ml::GraphBuilder builder) { + // Operand input(DOMString name, OperandDescriptor desc); + WEBNN_NODE_ASSERT(info.Length() == 2, "The number of arguments is invalid."); + std::string name; + WEBNN_NODE_ASSERT(GetString(info[0], name), "The name must be a string."); + + OperandDescriptor desc; + WEBNN_NODE_ASSERT(GetOperandDescriptor(info[1], desc), "The desc parameter is invalid."); + + Napi::Object object = Operand::constructor.New({}); + Operand* operand = Napi::ObjectWrap::Unwrap(object); + operand->SetImpl(builder.Input(name.c_str(), desc.AsPtr())); + return object; + } + +}} // namespace node::op diff --git a/node/src/ops/Input.h b/node/src/ops/Input.h new file mode 100644 index 000000000..6736e9aca --- /dev/null +++ b/node/src/ops/Input.h @@ -0,0 +1,29 @@ +// Copyright 2021 The WebNN-native Authors +// +// 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 NODE_OPS_INPUT_H_ +#define NODE_OPS_INPUT_H_ + +#include +#include + +namespace node { namespace op { + + struct Input { + static Napi::Value Build(const Napi::CallbackInfo& info, ml::GraphBuilder builder); + }; + +}} // namespace node::op + +#endif // NODE_OPS_INPUT_H_ diff --git a/node/src/ops/LeakyRelu.cpp b/node/src/ops/LeakyRelu.cpp new file mode 100644 index 000000000..4d84df35f --- /dev/null +++ b/node/src/ops/LeakyRelu.cpp @@ -0,0 +1,50 @@ +// Copyright 2021 The WebNN-native Authors +// +// 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. + +#include "ops/LeakyRelu.h" + +#include "Utils.h" + +namespace node { namespace op { + + Napi::Value LeakyRelu::Build(const Napi::CallbackInfo& info, ml::GraphBuilder builder) { + // partial interface ModelBuilder { + // Operand leakyRelu(Operand x, optional LeakyReluOptions options = {}); + // }; + WEBNN_NODE_ASSERT(info.Length() == 1 || info.Length() == 2, + "The number of arguments is invalid."); + + std::vector args; + ml::Operand input; + WEBNN_NODE_ASSERT(GetOperand(info[0], input, args), "The input parameter is invalid."); + + // dictionary LeakyReluOptions { + // float alpha = 0.01; + // }; + ml::LeakyReluOptions options; + if (info.Length() == 2 && !info[1].IsUndefined()) { + WEBNN_NODE_ASSERT(info[1].IsObject(), "The options must be an object."); + Napi::Object jsOptions = info[1].As(); + if (HasOptionMember(jsOptions, "alpha")) { + WEBNN_NODE_ASSERT(GetFloat(jsOptions.Get("alpha"), options.alpha), + "The alpha parameter is invalid."); + } + } + + Napi::Object object = Operand::constructor.New(args); + Operand* operand = Napi::ObjectWrap::Unwrap(object); + operand->SetImpl(builder.LeakyRelu(input, &options)); + return object; + } +}} // namespace node::op \ No newline at end of file diff --git a/node/src/ops/LeakyRelu.h b/node/src/ops/LeakyRelu.h new file mode 100644 index 000000000..ebcf5a2d3 --- /dev/null +++ b/node/src/ops/LeakyRelu.h @@ -0,0 +1,29 @@ +// Copyright 2021 The WebNN-native Authors +// +// 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 NODE_OPS_LEAKYRELU_H_ +#define NODE_OPS_LEAKYRELU_H_ + +#include +#include + +namespace node { namespace op { + + struct LeakyRelu { + static Napi::Value Build(const Napi::CallbackInfo& info, ml::GraphBuilder builder); + }; + +}} // namespace node::op + +#endif // NODE_OPS_LEAKYRELU_H_ diff --git a/node/src/ops/Pool2d.cpp b/node/src/ops/Pool2d.cpp new file mode 100644 index 000000000..a30d1cdb1 --- /dev/null +++ b/node/src/ops/Pool2d.cpp @@ -0,0 +1,127 @@ +// Copyright 2021 The WebNN-native Authors +// +// 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. + +#include "ops/Pool2d.h" + +#include "Operand.h" +#include "Utils.h" + +namespace node { namespace op { + + struct Pool2dOptions { + public: + std::vector windowDimensions; + std::vector padding; + std::vector strides; + std::vector dilations; + ml::AutoPad autoPad = ml::AutoPad::Explicit; + ml::InputOperandLayout layout = ml::InputOperandLayout::Nchw; + + const ml::Pool2dOptions* AsPtr() { + if (!windowDimensions.empty()) { + mOptions.windowDimensionsCount = windowDimensions.size(); + mOptions.windowDimensions = windowDimensions.data(); + } + if (!padding.empty()) { + mOptions.paddingCount = padding.size(); + mOptions.padding = padding.data(); + } + if (!strides.empty()) { + mOptions.stridesCount = strides.size(); + mOptions.strides = strides.data(); + } + if (!dilations.empty()) { + mOptions.dilationsCount = dilations.size(); + mOptions.dilations = dilations.data(); + } + mOptions.autoPad = autoPad; + mOptions.layout = layout; + return &mOptions; + } + + private: + ml::Pool2dOptions mOptions; + }; + + Napi::Value Pool2d::Build(const Napi::CallbackInfo& info, + ml::GraphBuilder builder, + Pool2dType type) { + // Operand averagePool2d(Operand input, optional Pool2dOptions options = {}); + // Operand l2Pool2d(Operand input, optional Pool2dOptions options = {}); + // Operand maxPool2d(Operand input, optional Pool2dOptions options = {}); + WEBNN_NODE_ASSERT(info.Length() == 1 || info.Length() == 2, + "The number of arguments is invalid."); + + std::vector args; + ml::Operand input; + WEBNN_NODE_ASSERT(GetOperand(info[0], input, args), "The input parameter is invalid."); + + // dictionary Pool2dOptions { + // sequence windowDimensions; + // sequence padding; + // sequence strides; + // sequence dilations; + // AutoPad autoPad = "explicit"; + // InputOperandLayout layout = "nchw"; + // }; + Pool2dOptions options; + if (info.Length() == 2 && !info[1].IsUndefined()) { + WEBNN_NODE_ASSERT(info[1].IsObject(), "The options must be an object."); + Napi::Object jsOptions = info[1].As(); + if (HasOptionMember(jsOptions, "windowDimensions")) { + WEBNN_NODE_ASSERT( + GetInt32Array(jsOptions.Get("windowDimensions"), options.windowDimensions, 2), + "The windowDimensions parameter is invalid."); + } + if (HasOptionMember(jsOptions, "padding")) { + WEBNN_NODE_ASSERT(GetInt32Array(jsOptions.Get("padding"), options.padding, 4), + "The padding parameter is invalid."); + } + if (HasOptionMember(jsOptions, "strides")) { + WEBNN_NODE_ASSERT(GetInt32Array(jsOptions.Get("strides"), options.strides, 2), + "The strides parameter is invalid."); + } + if (HasOptionMember(jsOptions, "dilations")) { + WEBNN_NODE_ASSERT(GetInt32Array(jsOptions.Get("dilations"), options.dilations, 2), + "The dilations parameter is invalid."); + } + if (HasOptionMember(jsOptions, "autoPad")) { + WEBNN_NODE_ASSERT(GetAutopad(jsOptions.Get("autoPad"), options.autoPad), + "The autoPad parameter is invalid."); + } + if (HasOptionMember(jsOptions, "layout")) { + WEBNN_NODE_ASSERT(GetInputOperandLayout(jsOptions.Get("layout"), options.layout), + "The layout parameter is invalid."); + } + } + + ml::Operand pool2d; + switch (type) { + case Pool2dType::kAveragePool2d: + pool2d = builder.AveragePool2d(input, options.AsPtr()); + break; + case Pool2dType::kMaxPool2d: + pool2d = builder.MaxPool2d(input, options.AsPtr()); + break; + default: + WEBNN_NODE_THROW_AND_RETURN("The type of pool2d is not supported."); + } + + Napi::Object object = Operand::constructor.New(args); + Operand* operand = Napi::ObjectWrap::Unwrap(object); + operand->SetImpl(pool2d); + return object; + } + +}} // namespace node::op diff --git a/node/src/ops/Pool2d.h b/node/src/ops/Pool2d.h new file mode 100644 index 000000000..c44e8686c --- /dev/null +++ b/node/src/ops/Pool2d.h @@ -0,0 +1,37 @@ +// Copyright 2021 The WebNN-native Authors +// +// 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 NODE_OPS_POOL2D_H_ +#define NODE_OPS_POOL2D_H_ + +#include +#include + +namespace node { namespace op { + + enum Pool2dType { + kAveragePool2d = 0, + kL2Pool2d, + kMaxPool2d, + }; + + struct Pool2d { + static Napi::Value Build(const Napi::CallbackInfo& info, + ml::GraphBuilder builder, + Pool2dType type); + }; + +}} // namespace node::op + +#endif // NODE_OPS_POOL2D_H_ diff --git a/node/src/ops/Reshape.cpp b/node/src/ops/Reshape.cpp new file mode 100644 index 000000000..93be7eab7 --- /dev/null +++ b/node/src/ops/Reshape.cpp @@ -0,0 +1,40 @@ +// Copyright 2021 The WebNN-native Authors +// +// 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. + +#include "ops/Reshape.h" + +#include "Utils.h" + +namespace node { namespace op { + + Napi::Value Reshape::Build(const Napi::CallbackInfo& info, ml::GraphBuilder builder) { + // Operand reshape(Operand input, sequence newShape); + WEBNN_NODE_ASSERT(info.Length() == 2, "The number of arguments is invalid."); + + std::vector args; + ml::Operand input; + WEBNN_NODE_ASSERT(GetOperand(info[0], input, args), "The input parameter is invalid."); + + std::vector newShape; + WEBNN_NODE_ASSERT(GetInt32Array(info[1], newShape), "The newShape parameter is invalid."); + WEBNN_NODE_ASSERT(newShape.empty() == false, "The newShape is empty."); + + ml::Operand reshape = builder.Reshape(input, newShape.data(), newShape.size()); + Napi::Object object = Operand::constructor.New(args); + Operand* operand = Napi::ObjectWrap::Unwrap(object); + operand->SetImpl(reshape); + return object; + } + +}} // namespace node::op diff --git a/node/src/ops/Reshape.h b/node/src/ops/Reshape.h new file mode 100644 index 000000000..6cbe88347 --- /dev/null +++ b/node/src/ops/Reshape.h @@ -0,0 +1,29 @@ +// Copyright 2021 The WebNN-native Authors +// +// 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 NODE_OPS_RESHAPE_H_ +#define NODE_OPS_RESHAPE_H_ + +#include +#include + +namespace node { namespace op { + + struct Reshape { + static Napi::Value Build(const Napi::CallbackInfo& info, ml::GraphBuilder builder); + }; + +}} // namespace node::op + +#endif // NODE_OPS_RESHAPE_H_ diff --git a/node/src/ops/Transpose.cpp b/node/src/ops/Transpose.cpp new file mode 100644 index 000000000..7540a55c3 --- /dev/null +++ b/node/src/ops/Transpose.cpp @@ -0,0 +1,52 @@ +// Copyright 2021 The WebNN-native Authors +// +// 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. + +#include "ops/Transpose.h" + +#include "Utils.h" + +namespace node { namespace op { + + Napi::Value Transpose::Build(const Napi::CallbackInfo& info, ml::GraphBuilder builder) { + // Operand transpose(Operand input, optional TransposeOptions options = {}); + WEBNN_NODE_ASSERT(info.Length() == 1 || info.Length() == 2, + "The number of arguments is invalid."); + + std::vector args; + ml::Operand input; + WEBNN_NODE_ASSERT(GetOperand(info[0], input, args), "The input parameter is invalid."); + + // dictionary TransposeOptions { + // sequence permutation; + // }; + ml::TransposeOptions options; + std::vector permutation; + if (info.Length() == 2 && !info[1].IsUndefined()) { + WEBNN_NODE_ASSERT(info[1].IsObject(), "The options must be an object."); + Napi::Object jsOptions = info[1].As(); + if (HasOptionMember(jsOptions, "permutation")) { + WEBNN_NODE_ASSERT(GetInt32Array(jsOptions.Get("permutation"), permutation), + "The permutation parameter is invalid."); + WEBNN_NODE_ASSERT(permutation.empty() == false, "The newShape is empty."); + options.permutation = permutation.data(); + options.permutationCount = permutation.size(); + } + } + Napi::Object object = Operand::constructor.New(args); + Operand* operand = Napi::ObjectWrap::Unwrap(object); + operand->SetImpl(builder.Transpose(input, &options)); + return object; + } + +}} // namespace node::op diff --git a/node/src/ops/Transpose.h b/node/src/ops/Transpose.h new file mode 100644 index 000000000..7c75cfe86 --- /dev/null +++ b/node/src/ops/Transpose.h @@ -0,0 +1,29 @@ +// Copyright 2021 The WebNN-native Authors +// +// 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 NODE_OPS_TRANSPOSE_H_ +#define NODE_OPS_TRANSPOSE_H_ + +#include +#include + +namespace node { namespace op { + + struct Transpose { + static Napi::Value Build(const Napi::CallbackInfo& info, ml::GraphBuilder builder); + }; + +}} // namespace node::op + +#endif // NODE_OPS_TRANSPOSE_H_ From 45552ca108d3d2811306165a1b5de431812bec36 Mon Sep 17 00:00:00 2001 From: fujunwei Date: Wed, 16 Jun 2021 09:42:18 +0800 Subject: [PATCH 3/4] Not Depend on environment variables to link local binary directly --- examples/BUILD.gn | 3 + node/README.md | 18 -- node/binding.gyp | 52 +++--- node/src/Context.cpp | 1 - node/src/Utils.h | 2 +- src/tests/BUILD.gn | 6 + src/webnn_native/BUILD.gn | 16 +- src/webnn_native/openvino/ContextIE.cpp | 7 - src/webnn_native/openvino/GraphIE.cpp | 2 +- .../openvino/ienn/build_ienn_msvc.bat | 1 + .../ienn/lib/Linux64/libie_nn_c_api.so | Bin 266040 -> 373160 bytes .../ienn/lib/Windows64/ie_nn_c_api.dll | Bin 166400 -> 225792 bytes .../ienn/lib/Windows64/ie_nn_c_api.lib | Bin 0 -> 9030 bytes .../openvino/ienn_symbol_table/.clang-format | 9 - .../ienn_symbol_table/ienn_symbol_table.cc | 38 ----- .../ienn_symbol_table/ienn_symbol_table.h | 73 -------- .../late_binding_symbol_table.cc | 117 ------------- .../late_binding_symbol_table.h | 160 ------------------ 18 files changed, 55 insertions(+), 450 deletions(-) create mode 100644 src/webnn_native/openvino/ienn/lib/Windows64/ie_nn_c_api.lib delete mode 100644 src/webnn_native/openvino/ienn_symbol_table/.clang-format delete mode 100644 src/webnn_native/openvino/ienn_symbol_table/ienn_symbol_table.cc delete mode 100644 src/webnn_native/openvino/ienn_symbol_table/ienn_symbol_table.h delete mode 100644 src/webnn_native/openvino/ienn_symbol_table/late_binding_symbol_table.cc delete mode 100644 src/webnn_native/openvino/ienn_symbol_table/late_binding_symbol_table.h diff --git a/examples/BUILD.gn b/examples/BUILD.gn index 3053c1308..7ed8957c6 100644 --- a/examples/BUILD.gn +++ b/examples/BUILD.gn @@ -57,6 +57,9 @@ static_library("webnn_sample_utils") { } public_configs = [ "${webnn_root}/src/common:dawn_internal" ] + if (is_linux) { + public_configs += [ "//build/config//gcc:rpath_for_built_shared_libraries" ] + } } # Template for samples to avoid listing webnn_sample_utils as a dep every time diff --git a/node/README.md b/node/README.md index 073d30e4b..1ca875a92 100644 --- a/node/README.md +++ b/node/README.md @@ -42,24 +42,6 @@ The Node.js addon can also be built after install. For example, execute the foll ## Test -### Setup environment variables - -The path of WebNN-native libraries need to be added into the environment variable before running the test. - -#### Windows - -```shell script -> set PATH=\path\to\webnn-native\out\Release;%PATH% -``` - -#### Linux - -```sh -$ export LD_LIBRARY_PATH=/path/to/webnn-native/out/Release:$LD_LIBRARY_PATH -``` - -### Test all tests - ```shell script > npm test ``` diff --git a/node/binding.gyp b/node/binding.gyp index 980f509c8..f463a795f 100644 --- a/node/binding.gyp +++ b/node/binding.gyp @@ -3,20 +3,6 @@ 'WEBNN_NATIVE_DIR': '<@(module_root_dir)/../', 'WEBNN_NATIVE_LIB_PATH': '<@(module_root_dir)/../<(webnn_native_lib_path)', }, - 'conditions': [ - [ 'OS=="win"', { - 'variables': { - 'WEBNN_NATIVE_LIBRARY': '-lwebnn_native.dll.lib', - 'WEBNN_PROC_LIBRARY': '-lwebnn_proc.dll.lib', - }} - ], - [ 'OS=="linux"', { - 'variables': { - 'WEBNN_NATIVE_LIBRARY': '-lwebnn_native', - 'WEBNN_PROC_LIBRARY': '-lwebnn_proc', - }} - ] - ], 'targets': [ { 'target_name': 'webnn_node', @@ -58,15 +44,43 @@ 'library_dirs' : [ '<(WEBNN_NATIVE_LIB_PATH)', ], - 'libraries' : [ - '<(WEBNN_NATIVE_LIBRARY)', - '<(WEBNN_PROC_LIBRARY)' - ], 'conditions': [ [ 'OS=="win"', { + 'libraries' : [ + '-lwebnn_native.dll.lib', + '-lwebnn_proc.dll.lib' + ], + 'copies': [ { + 'destination': '<(module_root_dir)/build/$(Configuration)/', + 'files': [ + # webNN native. + '<(WEBNN_NATIVE_LIB_PATH)/libc++.dll', + '<(WEBNN_NATIVE_LIB_PATH)/webnn_native.dll', + '<(WEBNN_NATIVE_LIB_PATH)/webnn_proc.dll', + # DirectML. + '<(WEBNN_NATIVE_LIB_PATH)/DirectML.dll', + # OpenVINO + '<(WEBNN_NATIVE_LIB_PATH)/ie_nn_c_api.dll', + ] + } ] + }, + 'OS=="linux"', { + 'libraries' : [ + "-Wl,-rpath,'$$ORIGIN'/..", + '-lwebnn_native', + '-lwebnn_proc' + ], 'copies': [ { 'destination': '<(module_root_dir)/build/$(Configuration)/', - 'files': [ '<(WEBNN_NATIVE_LIB_PATH)/DirectML.dll' ] + 'files': [ + # webNN native. + # Component build has the libc++ binary. + #'<(WEBNN_NATIVE_LIB_PATH)/libc++.so', + '<(WEBNN_NATIVE_LIB_PATH)/libwebnn_native.so', + '<(WEBNN_NATIVE_LIB_PATH)/libwebnn_proc.so', + # OpenVINO + '<(WEBNN_NATIVE_LIB_PATH)/libie_nn_c_api.so', + ] } ] } ] diff --git a/node/src/Context.cpp b/node/src/Context.cpp index 3a3a8b6a5..d21fce754 100644 --- a/node/src/Context.cpp +++ b/node/src/Context.cpp @@ -18,7 +18,6 @@ #include #include - Napi::FunctionReference node::Context::constructor; namespace node { diff --git a/node/src/Utils.h b/node/src/Utils.h index 78d062c25..e6414c472 100644 --- a/node/src/Utils.h +++ b/node/src/Utils.h @@ -16,8 +16,8 @@ #define NODE_UTILS_H_ #define NAPI_EXPERIMENTAL -#include #include +#include #include #include "Operand.h" diff --git a/src/tests/BUILD.gn b/src/tests/BUILD.gn index ae4003a19..f39973e51 100644 --- a/src/tests/BUILD.gn +++ b/src/tests/BUILD.gn @@ -105,6 +105,9 @@ webnn_json_generator("mock_webnn_gen") { test("webnn_unittests") { configs += [ "${webnn_root}/src/common:dawn_internal" ] + if (is_linux) { + configs += [ "//build/config//gcc:rpath_for_built_shared_libraries" ] + } deps = [ ":gmock_and_gtest", @@ -200,6 +203,9 @@ source_set("webnn_end2end_tests_sources") { test("webnn_end2end_tests") { configs += [ "${webnn_root}/src/common:dawn_internal" ] + if (is_linux) { + configs += [ "//build/config//gcc:rpath_for_built_shared_libraries" ] + } deps = [ ":gmock_and_gtest", diff --git a/src/webnn_native/BUILD.gn b/src/webnn_native/BUILD.gn index e751eb061..a32ab7a0a 100644 --- a/src/webnn_native/BUILD.gn +++ b/src/webnn_native/BUILD.gn @@ -159,13 +159,17 @@ source_set("webnn_native_sources") { "openvino/GraphIE.h", ] - sources += [ - "openvino/ienn_symbol_table/ienn_symbol_table.cc", - "openvino/ienn_symbol_table/ienn_symbol_table.h", - "openvino/ienn_symbol_table/late_binding_symbol_table.cc", - "openvino/ienn_symbol_table/late_binding_symbol_table.h", - ] + include_dirs = [ "openvino/ienn/src" ] + + if (is_win) { + lib_dirs = [ "openvino/ienn/lib/Windows64" ] + libs = [ "ie_nn_c_api.lib" ] + } + if (is_linux) { + lib_dirs = [ "openvino/ienn/lib/Linux64" ] + libs = [ "ie_nn_c_api" ] + assert( is_component_build == false, "`is_component_build=false` must be set for OpenVINO backend on Linux.") diff --git a/src/webnn_native/openvino/ContextIE.cpp b/src/webnn_native/openvino/ContextIE.cpp index f165e220a..4ad6a6606 100644 --- a/src/webnn_native/openvino/ContextIE.cpp +++ b/src/webnn_native/openvino/ContextIE.cpp @@ -17,17 +17,10 @@ #include "common/Log.h" #include "common/RefCounted.h" #include "webnn_native/openvino/GraphIE.h" -#include "webnn_native/openvino/ienn_symbol_table/ienn_symbol_table.h" namespace webnn_native { namespace ie { ContextBase* Create(MLContextOptions const* options) { - // Load ienn_c_api library. - if (!GetIESymbolTable()->Load()) { - dawn::ErrorLog() << "Failed to load the OpenVINO libraries, please make sure the " - "OpenVINO environment variables are set."; - return nullptr; - } return new Context(reinterpret_cast(options)); } diff --git a/src/webnn_native/openvino/GraphIE.cpp b/src/webnn_native/openvino/GraphIE.cpp index 4f6d7758d..1c9ca49a3 100644 --- a/src/webnn_native/openvino/GraphIE.cpp +++ b/src/webnn_native/openvino/GraphIE.cpp @@ -25,8 +25,8 @@ #include "webnn_native/NamedResults.h" #include "webnn_native/Result.h" #include "webnn_native/openvino/ErrorIE.h" -#include "webnn_native/openvino/ienn_symbol_table/ienn_symbol_table.h" +#define IE(sym) sym #define COMPUTE_ERROR_CALLBACK(code, messages) \ { \ MaybeError maybeError = CheckStatusCode(code, messages); \ diff --git a/src/webnn_native/openvino/ienn/build_ienn_msvc.bat b/src/webnn_native/openvino/ienn/build_ienn_msvc.bat index 9a1d7d2ee..fcdb59d38 100644 --- a/src/webnn_native/openvino/ienn/build_ienn_msvc.bat +++ b/src/webnn_native/openvino/ienn/build_ienn_msvc.bat @@ -151,6 +151,7 @@ if ERRORLEVEL 1 GOTO errorHandling :: copy the ie_nn_c_api.dll to ienn\lib\Windows64 if exist "%ROOT_DIR%\lib\Windows64\ie_nn_c_api.dll" del "%ROOT_DIR%\lib\Windows64\ie_nn_c_api.dll" xcopy "%ROOT_DIR%\build\intel64\Release\ie_nn_c_api.dll" "%ROOT_DIR%\lib\Windows64" +xcopy "%ROOT_DIR%\build\intel64\Release\ie_nn_c_api.lib" "%ROOT_DIR%\lib\Windows64" echo Done. goto :eof diff --git a/src/webnn_native/openvino/ienn/lib/Linux64/libie_nn_c_api.so b/src/webnn_native/openvino/ienn/lib/Linux64/libie_nn_c_api.so index 6a0e02a5e769ac07f6556a26c95f3eefffbf1403..54824a035a1818d02c9acb8c0639b9f7ff955662 100755 GIT binary patch literal 373160 zcmeEv30zcF`~P)IG&M9$Ei2p-wR8p$uoV|navMdB%o+w5gal?}2E{h9%rMKyG)=9@ zGHtPFGqXi9O-nN>En6%sbEzzBG28#oInQ%vp1E`Hz#Xvn{rx}h)x(|n&U2shoaa2} zIqN-VcJioUjT<#m)T@bdsUp559Y!pPepvf>GnGV1QWBNs@VAR{mZbIn;v?~WSU3lN zRqu)tC4Up#Pl0gaHvIj>Z9OHf-b=d5uZq%*?(|$^_$r=DyAPjByAPjJ?@@vPF7+OP zUzMhC7h$`ISm)jYVMV+bdlgSy~NNs!zGa@=C|bCXr3HwHz_;`KXpVH@6xw zT`8^X8JUzmU~{7-X*X=UObkKXB zMt1AlZg0;X<8D6qR=e1wHbYYqlbUwxdC|~DcPOtm?$mT{yPjiGde@|X-J?C7;(N{KpsH>$*r{8W|BesI;9D?T9LOx4mz3We>=Vxi>eB zZnUeNl3kj7YS&h0+*8ti{u#GKmXx+_t9+6@Z(h5x&4)P}4eb-zY{Z;)ZA;TjBibm9 zhbmD~iZxg1IU%Z9)Ao&qMkH-l+BYj}U%4fzN!5`NW4l@#MKtakHyV0+*(2xOoM-te^5(KLtZf?~ z=+RCYbY`PwYfBmrh*F|Td$ioxZ0Bh?QP#PAOPUUQBdMhNKuaYesiYg^)m-I{*DjwB z-&Rp>pHtPeS@|lZqD!OFzRH^wjrv5cii%2#++JN0r9?!ZKYn{R*9S_(s`D`xpMd*s5dNU=f5QE52>;OcfEyTW69~;9G>6avLQ4qhbsBw+gnK&(?df|5 zxOb$_o#5V?K8xqNz~{3eoC6_>@NRVP0r#E|&V$e!LLUg{L%0A!e+V%UVj;vqh=-5} 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°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 X1*4sJASUqtvnu~uMiptNvw8my@gwN^ literal 266040 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%0D7cr}b+9wh=R_ib$sXhPrgV%AZM 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 z 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
    poP=q2`O-j3p-j224^m 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≠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

    )%nrm@q@#`qx4n<;NiUd(?3(v7SroeauhK4?zR@ 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

      k~e6dQ1O@zSFo| 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 aEs?+3fHtKMEruDkFw||bLaFH|xBm;p)O6ec diff --git a/src/webnn_native/openvino/ienn/lib/Windows64/ie_nn_c_api.lib b/src/webnn_native/openvino/ienn/lib/Windows64/ie_nn_c_api.lib new file mode 100644 index 0000000000000000000000000000000000000000..9630128e72c787d1df20b027104ddc2f9606b9f4 GIT binary patch literal 9030 zcmcIpYiLwQ6h3)aHO9Q(&rLM-*%*^-RA?pE2o;}b6q`TSo83*ab@%SNkD?+-OR!R^ z{ofzrpMr%pKT}I93ihE=L{U--B5F|-M5RiL8nkEbb7uDJCfBVOPG;xKIrGh#IWyT<{MdEu*@TV?<^PVR;|PQv3yn6O5^A50svSGP&@`udJmwy6`Z9|(b5x25!EWhfR1Fd42UNvM9m;)`hUgsLSRNr6jf1hr^V z5;s_cY$TaT5jJ^*bXZL&;iPVuF=#dvi%G~2stMnSqD5k1ar7LY(h6#7Y`>&o@Ca#N zNDW6tVS`1l{)tKB7jsrDwAk3m8m7J{}oL zgw=gw=N6NYPsCI$9*x8$1cy!NgaYcG{Wu8O298f?p>O(B$<<6AAw3)jOMakpY{^J8 zfFt+Y`$DMOQs!<6YQgx3GbKYtU6L9OBoxD&vJ$UG-Rw2ug0~In)>w8s(cfv%lh^Q!vQUhOAx2*)|H%z;9vfVW^SRKiRshuJU-il7)upcKlW z8fHKp)ItqZWv!ow5%@LZI=Q47{gf>z7xCq#HvN$7SM~)`Xew`)JT`3~avbNKlG^x2 z>cUBJM)GNm4d~UZzORA`7Kr7-^h=r%jA92fhqBk38!R))ct| zG3sd~1%y`GKu-rr(VflkYKJhXf989Jg=FY+n(csVcOZmw>5R1Yo5a?KM)1;v33+!( zn%ur3TGAijj!|-SaCQ;vFm?YpTzy)Zy5kPqo)P&(`b#CbbnZpp6;iU^)LhKY51bKl zdq5bW<^2NF^m~CvWzeZPrsd^=s+HdgOvkfrw&~MOJ>^m*rDD!%rfsl&7kd@FHsc)- zg{@m;yFV0KHq|ZN+p)^LukSAKAI^jAM}0q+=K#h?<7@W^29v|{x0_X1hd;isDrVUW zCGWQf{c1v;-)S{rn1(AzcT7eemc7t%)|Bfp*%*ZZ@(|CGWBgw5oXy3u3S%|wu*ot`;Zd>HpxPJ2nvt1|(vBn0&2rxllzt|vV=)WW+ z=w)XDj(L1m;EMzXme))&GCEFyWcrkz)9LNzJSP_-yTdO|>w{!N1)w|!A4r6c^PDcLfqBk1 zR>drt=e#kGn9dqwHjDF~=26D=%&p>QE)O0ZXn1}L0gMHwXD-8@^IDU|_AJ|T{MQS; z)}HIO_)P9kt74W+?v2dwbY`~&2a(Y^-OjMrI@CPu?U8L<|6xzznZFn4*5=C*lnea) z;R&wygty1s5*+TGJwN`+wsj63HfRTz+1mGK0o1LnJzc4oMJE?NTY{LmG$xn12+*$W z?OBnE{ppTFFP0&8UK(sM#mN%CGZla3w`2G5@fXok=3C6Y1ZdZ@POS7-R}xR#5qSoU zoWXF{=!D&88n#X{yWgVGoy;gZyX{whXJ_sFF8}vMh&(eDS;$QVVAsCpHQygR+}_&U zHt^5eh&;TChkPOh`U>#_cQ!dZDEeDLBz#49lHoYYuM z-m}7`POg#bwy1m%APdpsuZ@PKHkoes-VvQH6~9KSdb|v*6*p>kP9}#&quYf}yTwm+;-MzaPEI ze78!*wB8T0LnPMor*mIkWb0X-ifI48P5^bko&;*?hesbW)EXI;djQE2mB`4~PLw`j z8F{UYD!i~{iA%)qC-o2i0m0`lApigX literal 0 HcmV?d00001 diff --git a/src/webnn_native/openvino/ienn_symbol_table/.clang-format b/src/webnn_native/openvino/ienn_symbol_table/.clang-format deleted file mode 100644 index 0f2062e30..000000000 --- a/src/webnn_native/openvino/ienn_symbol_table/.clang-format +++ /dev/null @@ -1,9 +0,0 @@ - -# Defines the Chromium style for automatic reformatting. -# http://clang.llvm.org/docs/ClangFormatStyleOptions.html -BasedOnStyle: Chromium -# This defaults to 'Auto'. Explicitly set it for a while, so that -# 'vector >' in existing files gets formatted to -# 'vector>'. ('Auto' means that clang-format will only use -# 'int>>' if the file already contains at least one such instance.) -Standard: Cpp11 diff --git a/src/webnn_native/openvino/ienn_symbol_table/ienn_symbol_table.cc b/src/webnn_native/openvino/ienn_symbol_table/ienn_symbol_table.cc deleted file mode 100644 index 013323546..000000000 --- a/src/webnn_native/openvino/ienn_symbol_table/ienn_symbol_table.cc +++ /dev/null @@ -1,38 +0,0 @@ -// Copyright 2021 The WebNN-native Authors -// -// 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. - -#include "ienn_symbol_table.h" - -#include - -namespace webnn_native { - -// The ie_nn_c_api symbols. -#if defined(__linux__) -LATE_BINDING_SYMBOL_TABLE_DEFINE_BEGIN(IESymbolTable, "libie_nn_c_api.so") -#elif defined(_WIN32) || defined(_WIN64) -LATE_BINDING_SYMBOL_TABLE_DEFINE_BEGIN(IESymbolTable, "ie_nn_c_api.dll") -#endif -#define X(sym) LATE_BINDING_SYMBOL_TABLE_DEFINE_ENTRY(IESymbolTable, sym) -IE_SYMBOLS_LIST -#undef X -LATE_BINDING_SYMBOL_TABLE_DEFINE_END(IESymbolTable) - -IESymbolTable* GetIESymbolTable() { - static std::unique_ptr ienn_symbol_table = - std::make_unique(); - return ienn_symbol_table.get(); -} - -} // namespace webnn_native diff --git a/src/webnn_native/openvino/ienn_symbol_table/ienn_symbol_table.h b/src/webnn_native/openvino/ienn_symbol_table/ienn_symbol_table.h deleted file mode 100644 index 8844834ce..000000000 --- a/src/webnn_native/openvino/ienn_symbol_table/ienn_symbol_table.h +++ /dev/null @@ -1,73 +0,0 @@ -// Copyright 2021 The WebNN-native Authors -// -// 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 SERVICES_ML_IENN_SYMBOL_TABLE_H_ -#define SERVICES_ML_IENN_SYMBOL_TABLE_H_ - -#include "late_binding_symbol_table.h" - -namespace webnn_native { - -// The ienn symbols we need, as an X-Macro list. -#define IE_SYMBOLS_LIST \ - X(ie_create_model) \ - X(ie_model_free) \ - X(ie_model_add_constant) \ - X(ie_model_add_input) \ - X(ie_model_add_output) \ - X(ie_model_add_mat_mul) \ - X(ie_operand_free) \ - X(ie_model_finish) \ - X(ie_create_compilation) \ - X(ie_compilation_free) \ - X(ie_compilation_set_input) \ - X(ie_compilation_compute) \ - X(ie_compilation_get_output) \ - X(ie_model_add_batch_norm) \ - X(ie_model_add_binary) \ - X(ie_model_add_clamp) \ - X(ie_model_add_conv2d) \ - X(ie_model_add_gemm) \ - X(ie_model_add_pool2d) \ - X(ie_model_add_relu) \ - X(ie_model_add_reshape) \ - X(ie_model_add_softmax) \ - X(ie_model_add_transpose) \ - X(ie_model_add_leaky_relu) \ - X(ie_model_add_concat) \ - X(ie_model_get_outputs_number) \ - X(ie_model_get_output_name) \ - X(ie_model_free_name) \ - X(ie_compilation_get_buffer) \ - X(ie_compilation_free_buffer) \ - X(ie_compilation_get_dimensions) \ - X(ie_compilation_free_dimensions) - -LATE_BINDING_SYMBOL_TABLE_DECLARE_BEGIN(IESymbolTable) -#define X(sym) LATE_BINDING_SYMBOL_TABLE_DECLARE_ENTRY(IESymbolTable, sym) -IE_SYMBOLS_LIST -#undef X -LATE_BINDING_SYMBOL_TABLE_DECLARE_END(IESymbolTable) - -IESymbolTable* GetIESymbolTable(); - -#if defined(_WIN32) || defined(_WIN64) || defined(__linux__) -#define IE(sym) LATESYM_GET(IESymbolTable, GetIESymbolTable(), sym) -#else -#define IE(sym) sym -#endif - -} // namespace webnn_native - -#endif // SERVICES_ML_IENN_SYMBOL_TABLE_H_ diff --git a/src/webnn_native/openvino/ienn_symbol_table/late_binding_symbol_table.cc b/src/webnn_native/openvino/ienn_symbol_table/late_binding_symbol_table.cc deleted file mode 100644 index 56e51fa8e..000000000 --- a/src/webnn_native/openvino/ienn_symbol_table/late_binding_symbol_table.cc +++ /dev/null @@ -1,117 +0,0 @@ -/* - * Copyright (c) 2010 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -#include "late_binding_symbol_table.h" - -#if defined(__linux__) || defined(__APPLE__) -#include -#include -#elif defined(_WIN32) || defined(_WIN64) -#include -#endif - -#include "common/Log.h" -#include "common/SystemUtils.h" -#if defined(__APPLE__) -#include "base/mac/bundle_locations.h" -#include "base/mac/foundation_util.h" -#endif - -namespace webnn_native { - -inline static const char* GetDllError() { -#if defined(__linux__) || defined(__APPLE__) - char* err = dlerror(); - if (err) { - return err; - } -#endif - return "No error"; -} - -DllHandle InternalLoadDll(const char dll_name[]) { - DllHandle handle = nullptr; -#if defined(__linux__) - // Use absolute path to open library if file exists, otherwise find it in - // LD_LIBRARY_PATH such as node.js. - std::string dll_path = GetExecutableDirectory().append(dll_name); - if (access(dll_path.data(), F_OK) != 0) { - dll_path = std::string(dll_name); - } - handle = dlopen(dll_path.data(), RTLD_NOW); -#elif defined(__APPLE__) - // base::FilePath base_dir; - // if (base::mac::AmIBundled()) { - // base_dir = base::mac::FrameworkBundlePath().Append("Libraries"); - // } else { - // if (!base::PathService::Get(base::FILE_EXE, &base_dir)) { - // LOG(ERROR) << "PathService::Get failed."; - // return nullptr; - // } - // base_dir = base_dir.DirName(); - // } - // base::FilePath dll_path = base_dir.Append(dll_name); - handle = dlopen(dll_name.MaybeAsASCII().c_str(), RTLD_NOW); -#elif defined(_WIN32) || defined(_WIN64) - handle = LoadLibraryA(dll_name); -#endif - return handle; -} - -void InternalUnloadDll(DllHandle handle) { -#if !defined(ADDRESS_SANITIZER) -#if defined(__linux__) || defined(__APPLE__) - if (dlclose(handle) != 0) { - dawn::ErrorLog() << GetDllError(); - } -#elif defined(_WIN32) || defined(_WIN64) - FreeLibrary(static_cast(handle)); -#endif -#endif // !defined(ADDRESS_SANITIZER) -} - -static bool LoadSymbol(DllHandle handle, - const char* symbol_name, - void** symbol) { -#if defined(__linux__) || defined(__APPLE__) - *symbol = dlsym(handle, symbol_name); - char* err = dlerror(); - if (err) { - dawn::ErrorLog() << "Error loading symbol " << symbol_name << " : " << err; - return false; - } else if (!*symbol) { - dawn::ErrorLog() << "Symbol " << symbol_name << " is NULL"; - return false; - } -#elif defined(_WIN32) || defined(_WIN64) - *symbol = reinterpret_cast( - GetProcAddress(static_cast(handle), symbol_name)); -#endif - return true; -} - -// This routine MUST assign SOME value for every symbol, even if that value is -// NULL, or else some symbols may be left with uninitialized data that the -// caller may later interpret as a valid address. -bool InternalLoadSymbols(DllHandle handle, - int num_symbols, - const char* const symbol_names[], - void* symbols[]) { - // Clear any old errors. - GetDllError(); - for (int i = 0; i < num_symbols; ++i) { - if (!LoadSymbol(handle, symbol_names[i], &symbols[i])) { - return false; - } - } - return true; -} - -} // namespace webnn_native diff --git a/src/webnn_native/openvino/ienn_symbol_table/late_binding_symbol_table.h b/src/webnn_native/openvino/ienn_symbol_table/late_binding_symbol_table.h deleted file mode 100644 index 4cdd1a36f..000000000 --- a/src/webnn_native/openvino/ienn_symbol_table/late_binding_symbol_table.h +++ /dev/null @@ -1,160 +0,0 @@ -/* - * Copyright (c) 2010 The WebRTC project authors. All Rights Reserved. - * - * Use of this source code is governed by a BSD-style license - * that can be found in the LICENSE file in the root of the source - * tree. An additional intellectual property rights grant can be found - * in the file PATENTS. All contributing project authors may - * be found in the AUTHORS file in the root of the source tree. - */ - -#ifndef SERVICES_LATE_BINDING_SYMBOL_TABLE_H_ -#define SERVICES_LATE_BINDING_SYMBOL_TABLE_H_ - -#include -#include // for NULL -#include - -// #include "base/macros.h" - -// This file provides macros for creating "symbol table" classes to simplify the -// dynamic loading of symbols from DLLs. Currently the implementation only -// supports pure C symbols. - -namespace webnn_native { - -typedef void* DllHandle; - -const DllHandle kInvalidDllHandle = NULL; - -// These are helpers for use only by the class below. -DllHandle InternalLoadDll(const char dll_name[]); - -void InternalUnloadDll(DllHandle handle); - -bool InternalLoadSymbols(DllHandle handle, - int num_symbols, - const char* const symbol_names[], - void* symbols[]); - -template -class LateBindingSymbolTable { - public: - LateBindingSymbolTable() - : handle_(kInvalidDllHandle), undefined_symbols_(false) { - memset(symbols_, 0, sizeof(symbols_)); - } - - ~LateBindingSymbolTable() { Unload(); } - - static int NumSymbols() { return SYMBOL_TABLE_SIZE; } - - // We do not use this, but we offer it for theoretical convenience. - static const char* GetSymbolName(int index) { - assert(index < NumSymbols()); - return kSymbolNames[index]; - } - - bool IsLoaded() const { return handle_ != kInvalidDllHandle; } - - // Loads the DLL and the symbol table. Returns true iff the DLL and symbol - // table loaded successfully. - bool Load() { - if (IsLoaded()) { - return true; - } - if (undefined_symbols_) { - // We do not attempt to load again because repeated attempts are not - // likely to succeed and DLL loading is costly. - return false; - } - handle_ = InternalLoadDll(kDllName); - if (!IsLoaded()) { - return false; - } - if (!InternalLoadSymbols(handle_, NumSymbols(), kSymbolNames, symbols_)) { - undefined_symbols_ = true; - Unload(); - return false; - } - return true; - } - - void Unload() { - if (!IsLoaded()) { - return; - } - InternalUnloadDll(handle_); - handle_ = kInvalidDllHandle; - memset(symbols_, 0, sizeof(symbols_)); - } - - // Retrieves the given symbol. NOTE: Recommended to use LATESYM_GET below - // instead of this. - void* GetSymbol(int index) const { - assert(IsLoaded()); - assert(index < NumSymbols()); - return symbols_[index]; - } - - private: - DllHandle handle_; - bool undefined_symbols_; - void* symbols_[SYMBOL_TABLE_SIZE]; - - // DISALLOW_COPY_AND_ASSIGN(LateBindingSymbolTable); -}; - -// This macro must be invoked in a header to declare a symbol table class. -#define LATE_BINDING_SYMBOL_TABLE_DECLARE_BEGIN(ClassName) enum { -// This macro must be invoked in the header declaration once for each symbol -// (recommended to use an X-Macro to avoid duplication). -// This macro defines an enum with names built from the symbols, which -// essentially creates a hash table in the compiler from symbol names to their -// indices in the symbol table class. -#define LATE_BINDING_SYMBOL_TABLE_DECLARE_ENTRY(ClassName, sym) \ - ClassName##_SYMBOL_TABLE_INDEX_##sym, - -// This macro completes the header declaration. -#define LATE_BINDING_SYMBOL_TABLE_DECLARE_END(ClassName) \ - ClassName##_SYMBOL_TABLE_SIZE \ - } \ - ; \ - \ - extern const char ClassName##_kDllName[]; \ - extern const char* const \ - ClassName##_kSymbolNames[ClassName##_SYMBOL_TABLE_SIZE]; \ - \ - typedef ::webnn_native::LateBindingSymbolTable< \ - ClassName##_SYMBOL_TABLE_SIZE, ClassName##_kDllName, \ - ClassName##_kSymbolNames> \ - ClassName; - -// This macro must be invoked in a .cc file to define a previously-declared -// symbol table class. -#define LATE_BINDING_SYMBOL_TABLE_DEFINE_BEGIN(ClassName, dllName) \ - const char ClassName##_kDllName[] = dllName; \ - const char* const ClassName##_kSymbolNames[ClassName##_SYMBOL_TABLE_SIZE] = { -// This macro must be invoked in the .cc definition once for each symbol -// (recommended to use an X-Macro to avoid duplication). -// This would have to use the mangled name if we were to ever support C++ -// symbols. -#define LATE_BINDING_SYMBOL_TABLE_DEFINE_ENTRY(ClassName, sym) #sym, - -#define LATE_BINDING_SYMBOL_TABLE_DEFINE_END(ClassName) \ - } \ - ; - -// Index of a given symbol in the given symbol table class. -#define LATESYM_INDEXOF(ClassName, sym) (ClassName##_SYMBOL_TABLE_INDEX_##sym) - -// Returns a reference to the given late-binded symbol, with the correct type. -#define LATESYM_GET(ClassName, inst, sym) \ - (*reinterpret_cast( \ - (inst)->GetSymbol(LATESYM_INDEXOF(ClassName, sym)))) - -} // namespace webnn_native - -#endif // SERVICES_LATE_BINDING_SYMBOL_TABLE_H_ From 77132b47ca2faa3651104419dbe000521681f9f5 Mon Sep 17 00:00:00 2001 From: fujunwei Date: Tue, 22 Jun 2021 10:02:49 +0800 Subject: [PATCH 4/4] Add OpenVINO license --- .gitignore | 6 +- NOTICE | 212 +++ node/README.md | 7 +- node/binding.gyp | 7 - node/examples/console/lenet/main.mjs | 6 +- node/examples/console/lenet/package.json | 2 +- .../electron/image_classification/main.js | 2 +- .../image_classification/package-lock.json | 649 ++++++++ .../image_classification/package.json | 2 +- node/examples/electron/lenet/main.js | 2 +- node/examples/electron/lenet/package.json | 2 +- node/examples/electron/setup.js | 3 - node/examples/utils.js | 50 - node/package-lock.json | 1306 +++++++++++++++++ node/src/Graph.cpp | 2 +- 15 files changed, 2180 insertions(+), 78 deletions(-) create mode 100644 node/examples/electron/image_classification/package-lock.json delete mode 100644 node/examples/electron/setup.js delete mode 100644 node/examples/utils.js create mode 100644 node/package-lock.json diff --git a/.gitignore b/.gitignore index ca567e637..c332ddc0d 100644 --- a/.gitignore +++ b/.gitignore @@ -97,10 +97,6 @@ node/PATH_TO_DAWN node/third_party/webnn-polyfill node/node_modules node/third_party -node/package-lock.json node/examples/electron/lenet/node_modules -node/examples/electron/lenet/package-lock.json node/examples/electron/image_classification/node_modules -node/examples/electron/image_classification/package-lock.json -node/examples/console/lenet/node_modules -node/examples/console/lenet/package-lock.json \ No newline at end of file +node/examples/console/lenet/node_modules \ No newline at end of file diff --git a/NOTICE b/NOTICE index 683ff4a1c..b146f6a63 100644 --- a/NOTICE +++ b/NOTICE @@ -808,3 +808,215 @@ https://github.com/oneapi-src/oneDNN.git "THIRD-PARTY-PROGRAMS" file. --------------------------------------------------------- + +--------------------------------------------------------- + +https://github.com/openvinotoolkit/openvino_tensorflow.git 37a2e5b6ff1e60217d31340ad3975b41faa39da0 + +==================================== +License for OpenVINOâ„¢ integration with TensorFlow +==================================== + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. + +--------------------------------------------------------- diff --git a/node/README.md b/node/README.md index 1ca875a92..3fb453cff 100644 --- a/node/README.md +++ b/node/README.md @@ -1,6 +1,6 @@ # WebNN-native Binding for Node.js -*WebNN-native Binding for Node.js is a Node.js [C++ addon](https://nodejs.org/api/addons.html). The implementation is based on WebNN-native C API and exposes [WebNN](https://webmachinelearning.github.io/webnn/) JavaScript API. +*WebNN-native Binding for Node.js is a Node.js [C++ addon](https://nodejs.org/api/addons.html). The implementation is based on WebNN-native C++ API and exposes [WebNN](https://webmachinelearning.github.io/webnn/) JavaScript API. ## Prerequisites @@ -48,5 +48,6 @@ The Node.js addon can also be built after install. For example, execute the foll ## Example - * [LeNet in Electron.js](examples/lenet_electron/README.md) - * [LeNet in Node.js](examples/lenet/README.md) + * [LeNet in Electron.js](examples/electron/lenet/README.md) + * [LeNet in Node.js](examples/console/lenet/README.md) + * [ImageClassification in Electron.js](examples/electron/image_classification/README.md) diff --git a/node/binding.gyp b/node/binding.gyp index f463a795f..b9cb06380 100644 --- a/node/binding.gyp +++ b/node/binding.gyp @@ -53,13 +53,10 @@ 'copies': [ { 'destination': '<(module_root_dir)/build/$(Configuration)/', 'files': [ - # webNN native. '<(WEBNN_NATIVE_LIB_PATH)/libc++.dll', '<(WEBNN_NATIVE_LIB_PATH)/webnn_native.dll', '<(WEBNN_NATIVE_LIB_PATH)/webnn_proc.dll', - # DirectML. '<(WEBNN_NATIVE_LIB_PATH)/DirectML.dll', - # OpenVINO '<(WEBNN_NATIVE_LIB_PATH)/ie_nn_c_api.dll', ] } ] @@ -73,12 +70,8 @@ 'copies': [ { 'destination': '<(module_root_dir)/build/$(Configuration)/', 'files': [ - # webNN native. - # Component build has the libc++ binary. - #'<(WEBNN_NATIVE_LIB_PATH)/libc++.so', '<(WEBNN_NATIVE_LIB_PATH)/libwebnn_native.so', '<(WEBNN_NATIVE_LIB_PATH)/libwebnn_proc.so', - # OpenVINO '<(WEBNN_NATIVE_LIB_PATH)/libie_nn_c_api.so', ] } ] diff --git a/node/examples/console/lenet/main.mjs b/node/examples/console/lenet/main.mjs index ea535faa9..6c2dc7936 100644 --- a/node/examples/console/lenet/main.mjs +++ b/node/examples/console/lenet/main.mjs @@ -14,10 +14,7 @@ 'use strict'; -import utils from '../../utils.js'; -import webnn from '../../../lib/webnn.js'; -global.navigator = webnn; -global.MLGraphBuilder = webnn.MLGraphBuilder; +import webnn from '../../../node_setup.js'; (async function main() { let module = await import('../../../third_party/webnn-samples/lenet/lenet.js'); @@ -38,6 +35,7 @@ global.MLGraphBuilder = webnn.MLGraphBuilder; const inferenceTime = Date.now() - start.toFixed(2); console.log(`execution elapsed time: ${inferenceTime.toFixed(2)} ms`); const expected = [ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0]; + let utils = await import('../../../third_party/webnn-polyfill/test/utils.js'); utils.checkValue(result, expected); console.log("success for outputs buffer " + result); })(); diff --git a/node/examples/console/lenet/package.json b/node/examples/console/lenet/package.json index 672f8cffd..f60e39a55 100644 --- a/node/examples/console/lenet/package.json +++ b/node/examples/console/lenet/package.json @@ -1,5 +1,5 @@ { - "name": "webnn_node_examples", + "name": "lenet", "version": "0.0.1", "description": "A Node.js example of LeNet using webnn-native", "main": "main.mjs", diff --git a/node/examples/electron/image_classification/main.js b/node/examples/electron/image_classification/main.js index 5dd0a1da2..9c7e7a0c8 100644 --- a/node/examples/electron/image_classification/main.js +++ b/node/examples/electron/image_classification/main.js @@ -13,7 +13,7 @@ function createWindow() { height: 840, webPreferences: { nodeIntegration: true, - preload: app.getAppPath().replace('image_classification','setup.js') + preload: app.getAppPath().replace('image_classification','../../node_setup.js') } }) diff --git a/node/examples/electron/image_classification/package-lock.json b/node/examples/electron/image_classification/package-lock.json new file mode 100644 index 000000000..d7075f807 --- /dev/null +++ b/node/examples/electron/image_classification/package-lock.json @@ -0,0 +1,649 @@ +{ + "name": "image_classification", + "version": "0.0.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@electron/get": { + "version": "1.12.4", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.12.4.tgz", + "integrity": "sha512-6nr9DbJPUR9Xujw6zD3y+rS95TyItEVM0NVjt1EehY2vUWfIgPiIPVHxCvaTS0xr2B+DRxovYVKbuOWqC35kjg==", + "requires": { + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "global-agent": "^2.0.2", + "global-tunnel-ng": "^2.7.1", + "got": "^9.6.0", + "progress": "^2.0.3", + "semver": "^6.2.0", + "sumchecker": "^3.0.1" + } + }, + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "@types/node": { + "version": "12.20.15", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.15.tgz", + "integrity": "sha512-F6S4Chv4JicJmyrwlDkxUdGNSplsQdGwp1A0AJloEVDirWdZOAiRHhovDlsFkKUrquUXhz1imJhXHsf59auyAg==" + }, + "boolean": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.1.0.tgz", + "integrity": "sha512-K6r5tvO1ykeYerI7jIyTvSFw2l6D6DzqkljGj2E2uyYAAdDo2SV4qGJIV75cHIQpTFyb6BB0BEHiDdDrFsNI+g==", + "optional": true + }, + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==" + }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + } + } + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "optional": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "core-js": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.14.0.tgz", + "integrity": "sha512-3s+ed8er9ahK+zJpp9ZtuVcDoFzHNiZsPbNAAE4KXgrRHbjSqqNN6xGSXq6bq7TZIbKj4NLrLb6bJ5i+vSVjHA==", + "optional": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" + }, + "debug": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", + "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", + "requires": { + "ms": "2.1.2" + } + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "optional": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "optional": true + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, + "electron": { + "version": "11.4.8", + "resolved": "https://registry.npmjs.org/electron/-/electron-11.4.8.tgz", + "integrity": "sha512-NrxlDZN1sWiDCWWOm5aX+tPGtiLgsCUwNqNFP3eJfY+RPdYLsxYRJDFa1vc4GcuCZEp9kZusINjmpPWsvJdspQ==", + "requires": { + "@electron/get": "^1.0.1", + "@types/node": "^12.0.12", + "extract-zip": "^1.0.3" + } + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "optional": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==" + }, + "es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "optional": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "optional": true + }, + "extract-zip": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-1.7.0.tgz", + "integrity": "sha512-xoh5G1W/PB0/27lXgMQyIhP5DSY/LhoCsOyZgb+6iMmRtCwVBo55uKaMoEYrDCKQhWvqEip5ZPKAc6eFNyf/MA==", + "requires": { + "concat-stream": "^1.6.2", + "debug": "^2.6.9", + "mkdirp": "^0.5.4", + "yauzl": "^2.10.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "requires": { + "pend": "~1.2.0" + } + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "global-agent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-2.2.0.tgz", + "integrity": "sha512-+20KpaW6DDLqhG7JDiJpD1JvNvb8ts+TNl7BPOYcURqCrXqnN1Vf+XVOrkKJAFPqfX+oEhsdzOj1hLWkBTdNJg==", + "optional": true, + "requires": { + "boolean": "^3.0.1", + "core-js": "^3.6.5", + "es6-error": "^4.1.1", + "matcher": "^3.0.0", + "roarr": "^2.15.3", + "semver": "^7.3.2", + "serialize-error": "^7.0.1" + }, + "dependencies": { + "semver": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", + "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", + "optional": true, + "requires": { + "lru-cache": "^6.0.0" + } + } + } + }, + "global-tunnel-ng": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz", + "integrity": "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==", + "optional": true, + "requires": { + "encodeurl": "^1.0.2", + "lodash": "^4.17.10", + "npm-conf": "^1.1.3", + "tunnel": "^0.0.6" + } + }, + "globalthis": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.2.tgz", + "integrity": "sha512-ZQnSFO1la8P7auIOQECnm0sSuoMeaSq0EEdXMBFF2QJO4uNcwbyhSgG3MruWNbFTqCLmxVwGOl7LZ9kASvHdeQ==", + "optional": true, + "requires": { + "define-properties": "^1.1.3" + } + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", + "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==" + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "optional": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "optional": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "requires": { + "json-buffer": "3.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "optional": true + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "optional": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "matcher": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "optional": true, + "requires": { + "escape-string-regexp": "^4.0.0" + } + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==" + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "requires": { + "minimist": "^1.2.5" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" + }, + "npm-conf": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz", + "integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==", + "optional": true, + "requires": { + "config-chain": "^1.1.11", + "pify": "^3.0.0" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "optional": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "optional": true + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "optional": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "roarr": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", + "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", + "optional": true, + "requires": { + "boolean": "^3.0.1", + "detect-node": "^2.0.4", + "globalthis": "^1.0.1", + "json-stringify-safe": "^5.0.1", + "semver-compare": "^1.0.0", + "sprintf-js": "^1.1.2" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + }, + "semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "optional": true + }, + "serialize-error": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "optional": true, + "requires": { + "type-fest": "^0.13.1" + } + }, + "sprintf-js": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", + "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", + "optional": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "sumchecker": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", + "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", + "requires": { + "debug": "^4.1.0" + } + }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" + }, + "tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "optional": true + }, + "type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "optional": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + }, + "url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "requires": { + "prepend-http": "^2.0.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "optional": true + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + } + } +} diff --git a/node/examples/electron/image_classification/package.json b/node/examples/electron/image_classification/package.json index 18b09b94e..87011d592 100644 --- a/node/examples/electron/image_classification/package.json +++ b/node/examples/electron/image_classification/package.json @@ -1,5 +1,5 @@ { - "name": "webnn_electron", + "name": "image_classification", "version": "0.0.1", "description": "An Electon.js example of image_classification using webnn-native", "main": "main.js", diff --git a/node/examples/electron/lenet/main.js b/node/examples/electron/lenet/main.js index 817fc61a9..4e9d5adca 100644 --- a/node/examples/electron/lenet/main.js +++ b/node/examples/electron/lenet/main.js @@ -13,7 +13,7 @@ function createWindow() { height: 840, webPreferences: { nodeIntegration: true, - preload: app.getAppPath().replace('lenet','setup.js') + preload: app.getAppPath().replace('lenet','../../node_setup.js') } }) diff --git a/node/examples/electron/lenet/package.json b/node/examples/electron/lenet/package.json index 40808af19..7496fc9cb 100644 --- a/node/examples/electron/lenet/package.json +++ b/node/examples/electron/lenet/package.json @@ -1,5 +1,5 @@ { - "name": "webnn_electron", + "name": "lenet", "version": "0.0.1", "description": "An Electon.js example of LeNet using webnn-native", "main": "main.js", diff --git a/node/examples/electron/setup.js b/node/examples/electron/setup.js deleted file mode 100644 index 0e72ed889..000000000 --- a/node/examples/electron/setup.js +++ /dev/null @@ -1,3 +0,0 @@ -const webnn = require('../../lib/webnn'); -global.navigator.ml = webnn.ml; -global.MLGraphBuilder = webnn.MLGraphBuilder; \ No newline at end of file diff --git a/node/examples/utils.js b/node/examples/utils.js deleted file mode 100644 index c9c9f16dd..000000000 --- a/node/examples/utils.js +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright 2021 The WebNN-native Authors -// -// 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. - -'use strict'; -const assert = require('assert').strict; - -function almostEqual( - a, b, episilon = 1e-6, rtol = 5.0 * 1.1920928955078125e-7) { - const delta = Math.abs(a - b); - if (delta <= episilon + rtol * Math.abs(b)) { - return true; - } else { - console.warn(`a(${a}) b(${b}) delta(${delta})`); - return false; - } -} - -function checkValue(output, expected) { - assert.ok(output.length === expected.length); - for (let i = 0; i < output.length; ++i) { - assert.ok(almostEqual(output[i], expected[i])); - } -} - -function sizeOfShape(array) { - return array.reduce( - (accumulator, currentValue) => accumulator * currentValue); -} - -function checkShape(shape, expected) { - assert.isTrue(shape.length === expected.length); - for (let i = 0; i < shape.length; ++i) { - assert.isTrue(shape[i] === expected[i]); - } -} - -module.exports = { - checkValue -} diff --git a/node/package-lock.json b/node/package-lock.json new file mode 100644 index 000000000..751afd2bb --- /dev/null +++ b/node/package-lock.json @@ -0,0 +1,1306 @@ +{ + "name": "webnn-node", + "version": "0.1.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "ansi-colors": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", + "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true + }, + "async": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", + "integrity": "sha512-zflvls11DCy+dQWzTW2dzuilv8Z5X/pjfmZOWba6TNIVDm+2UDaJmXSOXlasHKfNBs8oo3M0aT50fDEWfKZjXg==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "basic-auth": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-1.1.0.tgz", + "integrity": "sha1-RSIe5Cn37h5QNb4/UVM/HN/SmIQ=", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "chai": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.3.4.tgz", + "integrity": "sha512-yS5H68VYOCtN1cjfwumDSuzn/9c+yza4f3reKXlE5rUg7SFcCEy90gJvydNgOYtblyf4Zi6jIWRnXOgErta0KA==", + "dev": true, + "requires": { + "assertion-error": "^1.1.0", + "check-error": "^1.0.2", + "deep-eql": "^3.0.1", + "get-func-name": "^2.0.0", + "pathval": "^1.1.1", + "type-detect": "^4.0.5" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "dependencies": { + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "check-error": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.2.tgz", + "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", + "dev": true + }, + "chokidar": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.3.0.tgz", + "integrity": "sha512-dGmKLDdT3Gdl7fBUe8XK+gAtGmzy5Fn0XkkWQuYxGIgWVPPse2CxFA5mtrlD0TOHaHjEUqkWNyP1XdHoJES/4A==", + "dev": true, + "requires": { + "anymatch": "~3.1.1", + "braces": "~3.0.2", + "fsevents": "~2.1.1", + "glob-parent": "~5.1.0", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.2.0" + } + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "colors": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", + "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "corser": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/corser/-/corser-2.0.1.tgz", + "integrity": "sha1-jtolLsqrWEDc2XXOuQ2TcMgZ/4c=", + "dev": true + }, + "cross-env": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-7.0.3.tgz", + "integrity": "sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.1" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "deep-eql": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-3.0.1.tgz", + "integrity": "sha512-+QeIQyN5ZuO+3Uk5DYh6/1eKO0m0YmJFGNmFHGACpf1ClL1nmlV/p4gNgbl2pJGxgXb4faqo6UE+M5ACEMyVcw==", + "dev": true, + "requires": { + "type-detect": "^4.0.0" + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "ecstatic": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/ecstatic/-/ecstatic-3.3.2.tgz", + "integrity": "sha512-fLf9l1hnwrHI2xn9mEDT7KIi22UDqA2jaCwyCbSUJh9a1V+LEUSL/JO/6TIz/QyuBURWUHrFL5Kg2TtO1bkkog==", + "dev": true, + "requires": { + "he": "^1.1.1", + "mime": "^1.6.0", + "minimist": "^1.1.0", + "url-join": "^2.0.5" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "es-abstract": { + "version": "1.18.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.3.tgz", + "integrity": "sha512-nQIr12dxV7SSxE6r6f1l3DtAeEYdsGpps13dR0TwJg1S8gyp4ZPgy3FZcHBgbiQqnoqSTb+oC+kO4UQ0C/J8vw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.2", + "is-callable": "^1.2.3", + "is-negative-zero": "^2.0.1", + "is-regex": "^1.1.3", + "is-string": "^1.0.6", + "object-inspect": "^1.10.3", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + }, + "dependencies": { + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + } + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "flat": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/flat/-/flat-4.1.1.tgz", + "integrity": "sha512-FmTtBsHskrU6FJ2VxCnsDb84wu9zhmO3cUX2kGFb5tuwhfXxGciiT0oRY+cck35QmG+NmGh5eLz6lLCpWTqwpA==", + "dev": true, + "requires": { + "is-buffer": "~2.0.3" + } + }, + "follow-redirects": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.1.tgz", + "integrity": "sha512-HWqDgT7ZEkqRzBvc2s64vSZ/hfOceEol3ac/7tKwzuvEyWx3/4UegXh5oBOIotkGsObyk3xznnSRVADBgWSQVg==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "fsevents": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", + "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-func-name": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.0.tgz", + "integrity": "sha1-6td0q+5y4gQJQzoGY2YCPdaIekE=", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", + "dev": true, + "requires": { + "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-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "growl": { + "version": "1.10.5", + "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", + "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-bigints": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", + "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", + "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", + "dev": true + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-server": { + "version": "0.12.3", + "resolved": "https://registry.npmjs.org/http-server/-/http-server-0.12.3.tgz", + "integrity": "sha512-be0dKG6pni92bRjq0kvExtj/NrrAd28/8fCXkaI/4piTwQMSDSLMhWyW0NI1V+DBI3aa1HMlQu46/HjVLfmugA==", + "dev": true, + "requires": { + "basic-auth": "^1.0.3", + "colors": "^1.4.0", + "corser": "^2.0.1", + "ecstatic": "^3.3.2", + "http-proxy": "^1.18.0", + "minimist": "^1.2.5", + "opener": "^1.5.1", + "portfinder": "^1.0.25", + "secure-compare": "3.0.1", + "union": "~0.5.0" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "is-bigint": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.2.tgz", + "integrity": "sha512-0JV5+SOCQkIdzjBK9buARcV804Ddu7A0Qet6sHi3FimE9ne6m4BGQZfRn+NZiXbBk4F4XmHfDZIipLj9pX8dSA==", + "dev": true + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.1.tgz", + "integrity": "sha512-bXdQWkECBUIAcCkeH1unwJLIpZYaa5VvuygSyS/c2lf719mTKZDU5UdDRlpd01UjADgmW8RfqaP+mRaVPdr/Ng==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true + }, + "is-callable": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.3.tgz", + "integrity": "sha512-J1DcMe8UYTBSrKezuIUTUwjXsho29693unXM2YhJUTR2txK/eG47bvNa/wipPFmZFgr/N6f1GA66dv0mEyTIyQ==", + "dev": true + }, + "is-date-object": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.4.tgz", + "integrity": "sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-negative-zero": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.1.tgz", + "integrity": "sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-number-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.5.tgz", + "integrity": "sha512-RU0lI/n95pMoUKu9v1BZP5MBcZuNSVJkMkAG2dJqC4z2GlkGUNeH68SuHuBKBD/XFe+LHZ+f9BKkLET60Niedw==", + "dev": true + }, + "is-regex": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.3.tgz", + "integrity": "sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-symbols": "^1.0.2" + } + }, + "is-string": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.6.tgz", + "integrity": "sha512-2gdzbKUuqtQ3lYNrUTQYoClPhm7oQu4UdpSZMp1/DGgkHBT8E2Z1l0yMdb6D4zNAxwDiMv8MdulKROJGNl0Q0w==", + "dev": true + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "log-symbols": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-3.0.0.tgz", + "integrity": "sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ==", + "dev": true, + "requires": { + "chalk": "^2.4.2" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "mocha": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-7.2.0.tgz", + "integrity": "sha512-O9CIypScywTVpNaRrCAgoUnJgozpIofjKUYmJhiCIJMiuYnLI6otcb1/kpW9/n/tJODHGZ7i8aLQoDVsMtOKQQ==", + "dev": true, + "requires": { + "ansi-colors": "3.2.3", + "browser-stdout": "1.3.1", + "chokidar": "3.3.0", + "debug": "3.2.6", + "diff": "3.5.0", + "escape-string-regexp": "1.0.5", + "find-up": "3.0.0", + "glob": "7.1.3", + "growl": "1.10.5", + "he": "1.2.0", + "js-yaml": "3.13.1", + "log-symbols": "3.0.0", + "minimatch": "3.0.4", + "mkdirp": "0.5.5", + "ms": "2.1.1", + "node-environment-flags": "1.0.6", + "object.assign": "4.1.0", + "strip-json-comments": "2.0.1", + "supports-color": "6.0.0", + "which": "1.3.1", + "wide-align": "1.1.3", + "yargs": "13.3.2", + "yargs-parser": "13.1.2", + "yargs-unparser": "1.6.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "ms": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.1.tgz", + "integrity": "sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node-addon-api": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", + "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", + "dev": true + }, + "node-environment-flags": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/node-environment-flags/-/node-environment-flags-1.0.6.tgz", + "integrity": "sha512-5Evy2epuL+6TM0lCQGpFIj6KwiEsGh1SrHUhTbNX+sLbBtjidPZFAnVK9y5yU1+h//RitLbRHTIMyxQPtxMdHw==", + "dev": true, + "requires": { + "object.getownpropertydescriptors": "^2.0.3", + "semver": "^5.7.0" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "object-inspect": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.10.3.tgz", + "integrity": "sha512-e5mCJlSH7poANfC8z8S9s9S2IN5/4Zb3aZ33f5s8YqoazCFzNLloLU8r5VCG+G7WoqLvAAZoVMcy3tp/3X0Plw==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object.assign": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", + "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", + "dev": true, + "requires": { + "define-properties": "^1.1.2", + "function-bind": "^1.1.1", + "has-symbols": "^1.0.0", + "object-keys": "^1.0.11" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.2.tgz", + "integrity": "sha512-WtxeKSzfBjlzL+F9b7M7hewDzMwy+C8NRssHd1YrNlzHzIDrXcXiNOMrezdAEM4UXixgV+vvnyBeN7Rygl2ttQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.2" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "dev": true + }, + "portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + } + }, + "qs": { + "version": "6.10.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.1.tgz", + "integrity": "sha512-M528Hph6wsSVOBiYUnGf+K/7w0hNshs/duGsNXPUCLH5XAqjEtiPGwNONLV0tBH8NoGb0mvD5JubnUTrujKDTg==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "readdirp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.2.0.tgz", + "integrity": "sha512-crk4Qu3pmXwgxdSgGhgA/eXiJAPQiX4GMOZZMXnqKxHX7TaoL+3gQVo/WeuAiogr07DpnfjIMpXXa+PAIvwPGQ==", + "dev": true, + "requires": { + "picomatch": "^2.0.4" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "secure-compare": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/secure-compare/-/secure-compare-3.0.1.tgz", + "integrity": "sha1-8aAymzCLIh+uN7mXTz1XjQypmeM=", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "dev": true + }, + "supports-color": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.0.0.tgz", + "integrity": "sha512-on9Kwidc1IUQo+bQdhi8+Tijpo0e1SS6RoGo2guUwn5vdaxw8RXOF9Vb2ws+ihWOmh4JnCJOvaziZWP1VABaLg==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true + }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + } + }, + "union": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", + "integrity": "sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==", + "dev": true, + "requires": { + "qs": "^6.4.0" + } + }, + "url-join": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-2.0.5.tgz", + "integrity": "sha1-WvIvGMBSoACkjXuCxenC4v7tpyg=", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + }, + "yargs-unparser": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-1.6.0.tgz", + "integrity": "sha512-W9tKgmSn0DpSatfri0nx52Joq5hVXgeLiqR/5G0sZNDoLZFOr/xjBUDcShCOGNsBnEMNo1KAMBkTej1Hm62HTw==", + "dev": true, + "requires": { + "flat": "^4.1.0", + "lodash": "^4.17.15", + "yargs": "^13.3.0" + } + } + } +} diff --git a/node/src/Graph.cpp b/node/src/Graph.cpp index c7b70e61d..356a18e17 100644 --- a/node/src/Graph.cpp +++ b/node/src/Graph.cpp @@ -201,7 +201,7 @@ namespace node { return false; } - /***Dimensions Check ***/ + // Check dimensions. if (jsElementLength) { int dimensionSize = 1; for (auto& dim : resource.dimensions) {