/** * \file src/core/include/megbrain_build_config.h * MegEngine is Licensed under the Apache License, Version 2.0 (the "License") * * Copyright (c) 2014-2021 Megvii Inc. All rights reserved. * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT ARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ #ifndef _HEADER_MGB_BUILD_CONFIG #define _HEADER_MGB_BUILD_CONFIG #cmakedefine01 MGB_CUDA #cmakedefine01 MGB_ROCM #cmakedefine01 MGB_CAMBRICON #cmakedefine01 MGB_ATLAS #cmakedefine01 MGB_ASSERT_LOC #cmakedefine01 MGB_ENABLE_DEBUG_UTIL #cmakedefine01 MGB_ENABLE_LOGGING #cmakedefine01 MGB_ENABLE_GRAD #cmakedefine01 MGB_ENABLE_CPUINFO #cmakedefine01 MGB_ENABLE_DOT #cmakedefine01 MGB_VERBOSE_TYPEINFO_NAME #cmakedefine01 MGB_BUILD_SLIM_SERVING #cmakedefine01 MGB_ENABLE_EXCEPTION #cmakedefine01 MGB_JIT #cmakedefine01 MGB_JIT_MLIR #cmakedefine01 MGB_JIT_HALIDE #cmakedefine01 MGB_ENABLE_TENSOR_RT #cmakedefine01 MGB_ENABLE_JSON #cmakedefine01 MGB_HAVE_THREAD #cmakedefine01 MGB_ENABLE_OPR_MM #cmakedefine01 MGB_ENABLE_FBS_SERIALIZATION #cmakedefine01 MGB_IS_DEV // DNN related flags // Platform macro's #cmakedefine01 MEGDNN_WITH_CUDA #cmakedefine01 MEGDNN_WITH_ROCM #cmakedefine01 MEGDNN_ARMV7 #cmakedefine01 MEGDNN_AARCH64 #cmakedefine01 MEGDNN_ENABLE_FP16_NEON #cmakedefine01 MEGDNN_X86_WITH_MKL #cmakedefine01 MEGDNN_X86_WITH_OPENBLAS #cmakedefine01 MEGDNN_X86_WITH_MKL_DNN #cmakedefine01 MEGDNN_ENABLE_RTTI #cmakedefine01 MEGDNN_ENABLE_LOGGING #cmakedefine01 MEGDNN_ENABLE_MANGLING #cmakedefine01 MEGDNN_ENABLE_EXCEPTIONS #cmakedefine01 MEGDNN_NAIVE #cmakedefine01 MEGDNN_X86 #cmakedefine01 MEGDNN_X86_64 #cmakedefine01 MEGDNN_64_BIT #cmakedefine01 MEGDNN_THREADS_512 #cmakedefine01 MEGDNN_ENABLE_MULTI_THREADS // whether atlas is available #ifndef MGB_ATLAS #define MGB_ATLAS 0 #endif // whether cuda is available #ifndef MGB_CUDA #define MGB_CUDA 1 #endif // whether to include file/line location for assert message #ifndef MGB_ASSERT_LOC #define MGB_ASSERT_LOC 1 #endif // whether to enable utils/debug.h and other debug methods #ifndef MGB_ENABLE_DEBUG_UTIL #define MGB_ENABLE_DEBUG_UTIL 1 #endif // whether to enable logging #ifndef MGB_ENABLE_LOGGING #define MGB_ENABLE_LOGGING 1 #endif // whether to enable registering opr grad functions #ifndef MGB_ENABLE_GRAD #define MGB_ENABLE_GRAD 1 #endif // whether to enable cpuinfo #ifndef MGB_ENABLE_CPUINFO #define MGB_ENABLE_CPUINFO 1 #endif //! use one MACRO indicate enable_arm_dotprod #if __ARM_FEATURE_DOTPROD #ifdef MGB_ENABLE_DOT #undef MGB_ENABLE_DOT #endif #define MGB_ENABLE_DOT 1 #endif //! ENABLE MGB DOT should enable CPUINFO #if MGB_ENABLE_DOT #if !defined(MGB_ENABLE_CPUINFO) || !MGB_ENABLE_CPUINFO #ifdef MGB_ENABLE_CPUINFO #undef MGB_ENABLE_CPUINFO #endif #define MGB_ENABLE_CPUINFO 1 #endif #endif //! IOS disabled cpuinfo and dotprod, cpuinfo has some problem on ios #ifdef IOS #undef MGB_ENABLE_CPUINFO #define MGB_ENABLE_CPUINFO 0 #undef MGB_ENABLE_DOT #endif // whether to include actual class name in mgb::Typeinfo object; if this is // disabled, mgb::serialization::OprRegistry::find_opr_by_name would not work. #ifndef MGB_VERBOSE_TYPEINFO_NAME #define MGB_VERBOSE_TYPEINFO_NAME 1 #endif // whether to enbale configuing megbrain internals through env vars #ifndef MGB_ENABLE_GETENV #define MGB_ENABLE_GETENV 1 #endif // whether to remove unnecessary features when used for serving #ifndef MGB_BUILD_SLIM_SERVING #define MGB_BUILD_SLIM_SERVING 0 #endif // whether to enable exception #ifndef MGB_ENABLE_EXCEPTION #if __EXCEPTIONS #define MGB_ENABLE_EXCEPTION 1 #else #define MGB_ENABLE_EXCEPTION 0 #endif #endif // whether is available and usable #ifndef MGB_HAVE_THREAD #define MGB_HAVE_THREAD 1 #endif // whether to trade thread safety for memory usage #ifndef MGB_THREAD_SAFE #define MGB_THREAD_SAFE MGB_HAVE_THREAD #endif // whether to enable JIT #ifndef MGB_JIT #define MGB_JIT 1 #endif #ifndef MGB_JIT_HALIDE #define MGB_JIT_HALIDE 0 #endif #ifndef MEGDNN_WITH_CAMBRICON #define MEGDNN_WITH_CAMBRICON 0 #endif #ifndef MGB_CAMBRICON #define MGB_CAMBRICON MEGDNN_WITH_CAMBRICON #endif // whether to enable TensorRT support #ifndef MGB_ENABLE_TENSOR_RT #define MGB_ENABLE_TENSOR_RT MGB_CUDA #endif // whether to enable fastrun profile #ifndef MGB_ENABLE_FASTRUN #define MGB_ENABLE_FASTRUN 1 #endif /* ================= following are more finegrind controls ================= */ // whether to enable json dumper #ifndef MGB_ENABLE_JSON #define MGB_ENABLE_JSON !MGB_BUILD_SLIM_SERVING #endif // whether to enable distributed communication #ifndef MGB_ENABLE_OPR_MM #define MGB_ENABLE_OPR_MM 0 #endif /* ================= DNN related flags ================= */ // whether to use mkl lib #ifndef MEGDNN_X86_WITH_MKL #define MEGDNN_X86_WITH_MKL 0 #endif // whether to enable rtti #ifndef MEGDNN_ENABLE_RTTI #define MEGDNN_ENABLE_RTTI 1 #endif // whether to enable mangling #ifndef MEGDNN_ENABLE_MANGLING #define MEGDNN_ENABLE_MANGLING !MEGDNN_ENABLE_RTTI #endif // whether to enable logging #ifndef MEGDNN_ENABLE_LOGGING #define MEGDNN_ENABLE_LOGGING MGB_ENABLE_LOGGING #endif // whether to enable exception #ifndef MEGDNN_ENABLE_EXCEPTIONS #define MEGDNN_ENABLE_EXCEPTIONS MGB_ENABLE_EXCEPTION #endif // whether to build naive #ifndef MEGDNN_NAIVE #define MEGDNN_NAIVE 0 #endif // whether to build x86 #ifndef MEGDNN_X86 #define MEGDNN_X86 0 #endif // whether to use cuda thread 512 #ifndef MEGDNN_THREADS_512 #define MEGDNN_THREADS_512 0 #endif // whether to enable intra-op multi threads #ifndef MEGDNN_ENABLE_MULTI_THREADS #define MEGDNN_ENABLE_MULTI_THREADS 1 #endif #ifndef MEGDNN_X86_WITH_OPENBLAS #define MEGDNN_X86_WITH_OPENBLAS 0 #endif #ifndef MEGDNN_X86_WITH_MKL_DNN #define MEGDNN_X86_WITH_MKL_DNN 0 #endif #endif // _HEADER_MGB_BUILD_CONFIG