|
- // Tencent is pleased to support the open source community by making ncnn available.
- //
- // Copyright (C) 2019 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_OPTION_H
- #define NCNN_OPTION_H
-
- #include "platform.h"
-
- namespace ncnn {
-
- #if NCNN_VULKAN
- class VkAllocator;
- #endif // NCNN_VULKAN
-
- class Allocator;
- class Option
- {
- public:
- // default option
- Option();
-
- public:
- // light mode
- // intermediate blob will be recycled when enabled
- // enabled by default
- bool lightmode;
-
- // thread count
- // default value is the one returned by get_cpu_count()
- int num_threads;
-
- // blob memory allocator
- Allocator* blob_allocator;
-
- // workspace memory allocator
- Allocator* workspace_allocator;
-
- #if NCNN_VULKAN
- // blob memory allocator
- VkAllocator* blob_vkallocator;
-
- // workspace memory allocator
- VkAllocator* workspace_vkallocator;
-
- // staging memory allocator
- VkAllocator* staging_vkallocator;
- #endif // NCNN_VULKAN
-
- // enable winograd convolution optimization
- // improve convolution 3x3 stride1 performace, may consume more memory
- // changes should be applied before loading network structure and weight
- // enabled by default
- bool use_winograd_convolution;
-
- // enable sgemm convolution optimization
- // improve convolution 1x1 stride1 performace, may consume more memory
- // changes should be applied before loading network structure and weight
- // enabled by default
- bool use_sgemm_convolution;
-
- // enable quantized int8 inference
- // use low-precision int8 path for quantized model
- // changes should be applied before loading network structure and weight
- // enabled by default
- bool use_int8_inference;
-
- // enable vulkan compute
- bool use_vulkan_compute;
-
- // enable options for gpu inference
- bool use_fp16_packed;
- bool use_fp16_storage;
- bool use_fp16_arithmetic;
- bool use_int8_storage;
- bool use_int8_arithmetic;
-
- //
- bool use_packing_layout;
-
- bool use_shader_pack8;
-
- // enable options for cpu inference
- bool use_bf16_storage;
- };
-
- } // namespace ncnn
-
- #endif // NCNN_OPTION_H
|