diff options
Diffstat (limited to 'runtimes/nn/common/NNFWKernels.cpp')
-rw-r--r-- | runtimes/nn/common/NNFWKernels.cpp | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/runtimes/nn/common/NNFWKernels.cpp b/runtimes/nn/common/NNFWKernels.cpp new file mode 100644 index 000000000..dd5c2d2bc --- /dev/null +++ b/runtimes/nn/common/NNFWKernels.cpp @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2018 Samsung Electronics Co., Ltd. All Rights Reserved + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#include "CpuExecutor.h" +#include "NeuralNetworks.h" +#include "Operations.h" + +#include "NNFWKernels.h" + +#ifdef USE_NNFW_ACL_KERNELS +#include "kernel/acl/Conv2D.h" +#include "kernel/acl/DepthwiseConv2D.h" +#include "kernel/acl/Pooling.h" +#include "kernel/acl/Softmax.h" +#include "kernel/acl/FullyConnected.h" +#include "kernel/acl/Concatenation.h" +#include "kernel/acl/Reshape.h" +#include "kernel/acl/nnfw_kernel_acl.h" +#endif // USE_NNFW_ACL_KERNELS + +#include <map> + +namespace nnfw { +namespace rt { + +#define NNFW_KERNEL(Name, Ret, Params) \ + NNFW_KERNELS_##Name nnfw_kernels_##Name; + +#include "NNFWKernels.lst" +#undef NNFW_KERNEL + +void init_nnfw_kernels() +{ +#ifdef USE_NNFW_ACL_KERNELS + nnfw::kernel::acl::Initialize(); + + nnfw_kernels_convFloat32["acl"] = nnfw::kernel::acl::convFloat32; + nnfw_kernels_depthwiseConvFloat32["acl"] = nnfw::kernel::acl::depthwiseConvFloat32; + nnfw_kernels_averagePoolFloat32["acl"] = nnfw::kernel::acl::averagePoolFloat32; + nnfw_kernels_maxPoolFloat32["acl"] = nnfw::kernel::acl::maxPoolFloat32; + nnfw_kernels_softmaxFloat32["acl"] = nnfw::kernel::acl::softmaxFloat32; + nnfw_kernels_fullyConnectedFloat32["acl"] = nnfw::kernel::acl::fullyConnectedFloat32; + nnfw_kernels_concatenationFloat32["acl"] = nnfw::kernel::acl::concatenationFloat32; + nnfw_kernels_reshapeGeneric["acl"] = nnfw::kernel::acl::reshapeGeneric; + + nnfw_kernels_convFloat32["neon"] = nnfw::kernel::acl::neon::convFloat32; + nnfw_kernels_depthwiseConvFloat32["neon"] = nnfw::kernel::acl::neon::depthwiseConvFloat32; + nnfw_kernels_averagePoolFloat32["neon"] = nnfw::kernel::acl::neon::averagePoolFloat32; + nnfw_kernels_maxPoolFloat32["neon"] = nnfw::kernel::acl::neon::maxPoolFloat32; + nnfw_kernels_softmaxFloat32["neon"] = nnfw::kernel::acl::neon::softmaxFloat32; + nnfw_kernels_fullyConnectedFloat32["neon"] = nnfw::kernel::acl::neon::fullyConnectedFloat32; + nnfw_kernels_concatenationFloat32["neon"] = nnfw::kernel::acl::neon::concatenationFloat32; + nnfw_kernels_reshapeGeneric["neon"] = nnfw::kernel::acl::reshapeGeneric; +#endif // USE_NNFW_ACL_KERNELS + return; +} + +} // namespace rt +} // namespace nnfw |