From fb314b7bec1751c692675fd0be7e46882d46c9b6 Mon Sep 17 00:00:00 2001 From: Liyang Ling Date: Wed, 11 Nov 2020 05:15:11 +0800 Subject: [PATCH] Add GELU (#107) --- .../src/plaidml_plugin/ops/gelu.cpp | 22 +++++++++++++++++++ .../single_layer_tests/activation.cpp | 1 + 2 files changed, 23 insertions(+) create mode 100644 inference-engine/src/plaidml_plugin/ops/gelu.cpp diff --git a/inference-engine/src/plaidml_plugin/ops/gelu.cpp b/inference-engine/src/plaidml_plugin/ops/gelu.cpp new file mode 100644 index 00000000000000..8d9d1fdc987176 --- /dev/null +++ b/inference-engine/src/plaidml_plugin/ops/gelu.cpp @@ -0,0 +1,22 @@ +// Copyright (C) 2020 Intel Corporation +// SPDX-License-Identifier: Apache-2.0 +// + +#include "ngraph/opsets/opset.hpp" +#include "ngraph/opsets/opset1.hpp" +#include "plaidml/op/op.h" +#include "plaidml_ops.hpp" + +using namespace plaidml; // NOLINT[build/namespaces] +using namespace InferenceEngine; // NOLINT[build/namespaces] + +namespace PlaidMLPlugin { + +static OpRegistration reg("gelu", [](const Context& ctx) { + IE_ASSERT(ctx.operands.size() == 1); + auto I = ctx.operands.at(0); + auto O = I * 0.5 * (1 + edsl::erf(I / sqrt(2))); + return edsl::make_tuple(O); +}); + +} // namespace PlaidMLPlugin diff --git a/inference-engine/tests/functional/plugin/plaidml/shared_tests_instances/single_layer_tests/activation.cpp b/inference-engine/tests/functional/plugin/plaidml/shared_tests_instances/single_layer_tests/activation.cpp index 5c5ea91fea010e..674c5c1dc7a761 100644 --- a/inference-engine/tests/functional/plugin/plaidml/shared_tests_instances/single_layer_tests/activation.cpp +++ b/inference-engine/tests/functional/plugin/plaidml/shared_tests_instances/single_layer_tests/activation.cpp @@ -41,6 +41,7 @@ const std::map>> activationTypes {Selu, {{1.6732f, 1.0507f}}}, {Ceiling, {{}}}, {Swish, {{1.0f}}}, + {Gelu, {{}}}, // {Mish, {{}}}, {HSwish, {{}}} // {SoftPlus, {{}}}