// Tencent is pleased to support the open source community by making ncnn available. // // Copyright (C) 2017 THL A29 Limited, a Tencent company. All rights reserved. // // Licensed under the BSD 3-Clause License (the "License"); you may not use this file except // in compliance with the License. You may obtain a copy of the License at // // https://opensource.org/licenses/BSD-3-Clause // // 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 NCNN_CPU_H #define NCNN_CPU_H namespace ncnn { // test optional cpu features // neon = armv7 neon or aarch64 asimd int cpu_support_arm_neon(); // vfpv4 = armv7 fp16 + fma int cpu_support_arm_vfpv4(); // asimdhp = aarch64 asimd half precision int cpu_support_arm_asimdhp(); // cpu info int get_cpu_count(); // bind all threads on little clusters if powersave enabled // affacts HMP arch cpu like ARM big.LITTLE // only implemented on android at the moment // switching powersave is expensive and not thread-safe // 0 = all cores enabled(default) // 1 = only little clusters enabled // 2 = only big clusters enabled // return 0 if success for setter function int get_cpu_powersave(); int set_cpu_powersave(int powersave); // misc function wrapper for openmp routines int get_omp_num_threads(); void set_omp_num_threads(int num_threads); int get_omp_dynamic(); void set_omp_dynamic(int dynamic); } // namespace ncnn #endif // NCNN_CPU_H