/* * 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 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