2564 lines
85 KiB
C++
2564 lines
85 KiB
C++
// Copyright (c) 2024 PaddlePaddle Authors. All Rights Reserved.
|
|
// Copyright (c) 2022 NVIDIA Authors. 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 "paddle/common/flags.h"
|
|
|
|
namespace phi {
|
|
|
|
const ExportedFlagInfoMap &GetExportedFlagInfoMap() {
|
|
return *GetMutableExportedFlagInfoMap();
|
|
}
|
|
|
|
ExportedFlagInfoMap *GetMutableExportedFlagInfoMap() {
|
|
static ExportedFlagInfoMap g_exported_flag_info_map;
|
|
return &g_exported_flag_info_map;
|
|
}
|
|
|
|
} // namespace phi
|
|
|
|
PHI_DEFINE_EXPORTED_int32(inner_op_parallelism,
|
|
0,
|
|
"number of threads for inner op");
|
|
|
|
/**
|
|
* NOTE(paddle-dev): This file is designed to define all public FLAGS.
|
|
*/
|
|
|
|
/**
|
|
* Paddle initialization related FLAG
|
|
* Name: FLAGS_paddle_num_threads
|
|
* Since Version: 0.15.0
|
|
* Value Range: int32, default=1
|
|
* Example: FLAGS_paddle_num_threads=2, set the maximum thread number per
|
|
* instance to 2
|
|
* Note:
|
|
*/
|
|
|
|
PHI_DEFINE_EXPORTED_int32(paddle_num_threads,
|
|
1,
|
|
"Number of threads for each paddle instance.");
|
|
|
|
/**
|
|
* Low Precision Op related FLAG
|
|
* Name: FLAGS_low_precision_op_list
|
|
* Since Version: 2.5.0
|
|
* Value Range: int32, default=0
|
|
* Example:
|
|
* Note: Used to debug. Get the low precision op list of current module.
|
|
* FLAGS_check_nan_inf is set.
|
|
* - 1, return the low precision op list of current module.
|
|
* - 2, return the op list of current module.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_int32(low_precision_op_list,
|
|
0,
|
|
"Setting the level of low precision op "
|
|
"list printing. It will be return the "
|
|
"low precision op list of current module.");
|
|
|
|
/**
|
|
* Operator related FLAG
|
|
* Name: FLAGS_check_nan_inf
|
|
* Since Version: 0.13.0
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: Used to debug. Checking whether operator produce NAN/INF or not.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
check_nan_inf,
|
|
false,
|
|
"Checking whether operator produce NAN/INF or not. It will be "
|
|
"extremely slow so please use this flag wisely.");
|
|
|
|
/**
|
|
* Operator related FLAG
|
|
* Name: FLAGS_check_nan_inf_level
|
|
* Since Version: 2.5.0
|
|
* Value Range: int32, default=0
|
|
* Example:
|
|
* Note: Used to debug. Setting the check and print level when
|
|
* FLAGS_check_nan_inf is set.
|
|
* - 0, abort the process when any operator produce NAN/INF and only print the
|
|
* information of tensor which holds NAN/INF.
|
|
* - 1, continue the training or inference process and print the information of
|
|
* all tensors which holds NAN/INF.
|
|
* - 2, print the information of float tensors when the max or min value
|
|
* overflowing float16's limit.
|
|
* - 3, print the information of all tensors.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_int32(
|
|
check_nan_inf_level,
|
|
0,
|
|
"Setting the check and print level when FLAGS_check_nan_inf is set.");
|
|
|
|
/**
|
|
* Operator related FLAG
|
|
* Name: FLAGS_check_nan_inf_blacklist
|
|
* Since Version:
|
|
* Value Range: string, default=""
|
|
* Example: FLAGS_check_nan_inf_blacklist="op1,op2,op3"
|
|
* Note: Blacklist of ops to skip when checking NAN/INF
|
|
*/
|
|
PHI_DEFINE_EXPORTED_string(
|
|
check_nan_inf_blacklist,
|
|
"",
|
|
"Blacklist of ops to skip when checking NAN/INF, split by ','");
|
|
|
|
/**
|
|
* Operator related FLAG
|
|
* Name: FLAGS_check_nan_inf
|
|
* Since Version: 0.13.0
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: Used to debug. Checking whether operator produce NAN/INF or not.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
enable_opt_get_features,
|
|
false,
|
|
"Checking whether operator produce NAN/INF or not. It will be "
|
|
"extremely slow so please use this flag wisely.");
|
|
|
|
// NOTE(zhiqiu): better to share the flags, otherwise we will have too many
|
|
// flags.
|
|
#if defined(PADDLE_WITH_CUDA) || defined(PADDLE_WITH_HIP)
|
|
|
|
/**
|
|
* CUDA related related FLAG
|
|
* Name: FLAGS_enable_cublas_tensor_op_math
|
|
* Since Version: 1.2.0
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: whether to use Tensor Core, faster but it may loss precision.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
enable_cublas_tensor_op_math,
|
|
false,
|
|
"The enable_cublas_tensor_op_math indicate whether to use Tensor Core, "
|
|
"but it may loss precision. Currently, There are two CUDA libraries that"
|
|
" use Tensor Cores, cuBLAS and cuDNN. cuBLAS uses Tensor Cores to speed up"
|
|
" GEMM computations(the matrices must be either half precision or single "
|
|
"precision); cuDNN uses Tensor Cores to speed up both convolutions(the "
|
|
"input and output must be half precision) and recurrent neural networks "
|
|
"(RNNs).");
|
|
|
|
/**
|
|
* CUDA related related FLAG
|
|
* Name: FLAGS_gemm_use_half_precision_compute_type
|
|
* Since Version: 2.4
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: whether to use fp16 compute type when the input and output is fp16,
|
|
* faster but it may loss precision.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
gemm_use_half_precision_compute_type,
|
|
false,
|
|
"Whether to use fp16 compute type when the input and output is fp16, "
|
|
"faster but it may loss precision in most case. If true, the compute "
|
|
"type will be set to fp16. Default is false.");
|
|
|
|
/**
|
|
* CUDA related FLAG
|
|
* Name: FLAGS_selected_gpus
|
|
* Since Version: 1.3.0
|
|
* Value Range: integer list separated by comma, default empty list
|
|
* Example: FLAGS_selected_gpus=0,1,2,3,4,5,6,7 to train or predict with 0~7 gpu
|
|
* cards
|
|
* Note: A list of device ids separated by comma, like: 0,1,2,3
|
|
*/
|
|
PHI_DEFINE_EXPORTED_string(
|
|
selected_gpus,
|
|
"",
|
|
"A list of device ids separated by comma, like: 0,1,2,3. "
|
|
"This option is useful when doing multi process training and "
|
|
"each process have only one device (GPU). If you want to use "
|
|
"all visible devices, set this to empty string. NOTE: the "
|
|
"reason of doing this is that we want to use P2P communication "
|
|
"between GPU devices, use CUDA_VISIBLE_DEVICES can only use "
|
|
"share-memory only.");
|
|
#endif
|
|
|
|
#if defined(PADDLE_WITH_CUDA) || defined(PADDLE_WITH_HIP)
|
|
/**
|
|
* CUDA related FLAG
|
|
* Name: FLAGS_cublaslt_exhaustive_search_times
|
|
* Since Version: 2.3.0
|
|
* Value Range: int64_t, default=0
|
|
* Example:
|
|
* Note: Represents times of exhaustive search to evaluate performance of
|
|
* cuBlasLt matmul algorithm (with/without epilogue). Set this flag
|
|
* with value > 0 to enable exhaustive search. Default is 0, means
|
|
* getting algorithms via heuristic search. There are two search methods
|
|
* in cuBlasLt, heuristic search and exhaustive search. Exhaustive search
|
|
* attempts all cuBlasLt algorithms to select the fastest, which is very
|
|
* time-consuming, and the selected algorithm will be cached for a given
|
|
* layer specification Once you change the layer specifications
|
|
* (such as M, N and K), it will re-search again.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_int64(
|
|
cublaslt_exhaustive_search_times,
|
|
0,
|
|
"The times of exhaustive search for cuBlasLt matmul with/without "
|
|
" epilogue algorithms, default is 0, means disabling exhaustive search.");
|
|
#endif
|
|
|
|
/*
|
|
* Kernel related FLAG
|
|
* Name: FLAGS_enable_api_kernel_fallback
|
|
* Since Version: 2.4
|
|
* Value Range: bool, default=true
|
|
* Example: FLAGS_enable_api_kernel_fallback=true would allow kernel of current
|
|
* backend fallback to CPU one when not found
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
enable_api_kernel_fallback,
|
|
true,
|
|
"Whether enable api kernel fallback to CPU one when not found");
|
|
|
|
#if defined(PADDLE_WITH_CUDA) || defined(PADDLE_WITH_HIP)
|
|
/**
|
|
* CUDNN related FLAG
|
|
* Name: FLAGS_cudnn_deterministic
|
|
* Since Version: 0.13.0
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: whether to use deterministic algorithm in cudnn.
|
|
* If true, it will slow down some operators such as conv and pooling.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
cudnn_deterministic,
|
|
false,
|
|
"Whether allow using an autotuning algorithm for convolution "
|
|
"operator. The autotuning algorithm may be non-deterministic. If "
|
|
"true, the algorithm is deterministic.");
|
|
|
|
/**
|
|
* GPU RNG related FLAG
|
|
* Name: FLAGS_deterministic_rng
|
|
* Since Version: 3.4
|
|
* Value Range: bool, default=false
|
|
* Example: paddle.set_flags({'FLAGS_deterministic_rng': True})
|
|
* Note: Fix RNG kernel launch config so same seed gives same results
|
|
* across GPU types.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
deterministic_rng,
|
|
false,
|
|
"Enable cross-device RNG consistency by fixing GPU kernel launch "
|
|
"configuration. When true, RNG kernels use a fixed grid/block size "
|
|
"so that the same seed produces identical results across GPU types.");
|
|
|
|
/**
|
|
* GPU RNG related FLAG
|
|
* Name: FLAGS_deterministic_rng_grid
|
|
* Since Version: 3.4
|
|
* Value Range: int32, default=1024
|
|
* Example: paddle.set_flags({'FLAGS_deterministic_rng_grid': 4096})
|
|
* Note: Grid size cap used when FLAGS_deterministic_rng is enabled.
|
|
* Cross-device consistency requires the same value on all devices.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_int32(
|
|
deterministic_rng_grid,
|
|
1024,
|
|
"Grid size cap when FLAGS_deterministic_rng is enabled.");
|
|
|
|
/**
|
|
* CUDA related FLAG
|
|
* Name: FLAGS_embedding_deterministic
|
|
* Since Version: 2.5
|
|
* Value Range: int64, default=0
|
|
* Example:
|
|
* Note: whether to use deterministic algorithm in embedding op.
|
|
* If it is 1, it will use the optimized deterministic CUDA kernel in
|
|
* embedding op. If it is 2, it will use the legacy deterministic
|
|
* CUDA kernel in embedding op.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_int64(
|
|
embedding_deterministic,
|
|
0,
|
|
"Whether allow using an deterministic algorithm for embedding "
|
|
"operator. The deterministic algorithm may be slower. If "
|
|
"it is larger than 0, the algorithm is deterministic.");
|
|
|
|
/**
|
|
* CUDNN related FLAG
|
|
* Name: FLAGS_cudnn_exhaustive_search
|
|
* Since Version: 1.2.0
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: Represents whether an exhaustive search method is used to
|
|
* select a convolution algorithm. There are two search methods in cuDNN,
|
|
* heuristic search and exhaustive search. Exhaustive search attempts
|
|
* all cuDNN algorithms to select the fastest. This method is very
|
|
* time-consuming, and the selected algorithm will be cached for a given
|
|
* layer specification. Once you change the layer specifications
|
|
* (such as batch size, feature map size), it will search again.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
cudnn_exhaustive_search,
|
|
false,
|
|
"Whether enable exhaustive search for cuDNN convolution or "
|
|
"not, default is False.");
|
|
|
|
/**
|
|
* CUDNN related FLAG
|
|
* Name: FLAGS_cudnn_exhaustive_search_times
|
|
* Since Version:
|
|
* Value Range:
|
|
* Example:
|
|
* Note: only used to predict for advanced developer
|
|
*/
|
|
PHI_DEFINE_EXPORTED_int64(cudnn_exhaustive_search_times,
|
|
-1,
|
|
"Exhaustive search times for cuDNN convolution, "
|
|
"default is -1, not exhaustive search");
|
|
|
|
/**
|
|
* CUDNN related FLAG
|
|
* Name: FLAGS_cudnn_allow_tf32
|
|
* Since Version: 3.3.0
|
|
* Value Range: bool, default=true
|
|
* Example:
|
|
* Note: whether to allow using TensorFloat-32 (TF32) in cudnn convolution.
|
|
* TF32 is only available on Ampere or newer GPUs.
|
|
* It provides better performance but lower precision than FP32.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
cudnn_allow_tf32,
|
|
true,
|
|
"Whether to allow using TensorFloat-32 (TF32) tensor cores for "
|
|
"convolution operators in cuDNN on Ampere or newer GPUs. "
|
|
"Default is true.");
|
|
|
|
/**
|
|
* CUBLAS related FLAG
|
|
* Name: FLAGS_cublas_allow_tf32
|
|
* Since Version: 3.3.0
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: whether to allow using TensorFloat-32 (TF32) in cublas matmul.
|
|
* TF32 is only available on Ampere or newer GPUs.
|
|
* It provides better performance but lower precision than FP32.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
cublas_allow_tf32,
|
|
false,
|
|
"Whether to allow using TensorFloat-32 (TF32) tensor cores for "
|
|
"matrix multiplication operators in cuBLAS on Ampere or newer GPUs. "
|
|
"Default is false.");
|
|
|
|
#ifdef PADDLE_WITH_HIP
|
|
/**
|
|
* MIOPEN related FLAG
|
|
* Name: FLAGS_batch_norm_use_miopen
|
|
* Since Version:
|
|
* Value Range:
|
|
* Example:
|
|
* Note: Use MIOpen batch norm instead of native
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(batch_norm_use_miopen,
|
|
false,
|
|
"Whether use MIOpen batch norm or not, "
|
|
"default is false, not use miopen bn");
|
|
#endif
|
|
|
|
/**
|
|
* CUDNN related FLAG
|
|
* Name: FLAGS_cudnn_batchnorm_spatial_persistent
|
|
* Since Version: 1.4.0
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: CUDNN_BATCHNORM_SPATIAL_PERSISTENT in batchnorm. This mode can be
|
|
* faster in
|
|
* some tasks because an optimized path may be selected for
|
|
* CUDNN_DATA_FLOAT
|
|
* and CUDNN_DATA_HALF data types, compute capability 6.0 or higher. The
|
|
* reason we set it to false by default is that this mode may use scaled
|
|
* atomic integer reduction that may cause a numerical overflow for
|
|
* certain
|
|
* input data range.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
cudnn_batchnorm_spatial_persistent,
|
|
false,
|
|
"Whether enable CUDNN_BATCHNORM_SPATIAL_PERSISTENT mode for cudnn "
|
|
"batch_norm, default is False.");
|
|
#endif
|
|
|
|
#if defined(PADDLE_WITH_CUDA) || defined(PADDLE_WITH_HIP)
|
|
|
|
/**
|
|
* NCCL related FLAG
|
|
* Name: FLAGS_sync_nccl_allreduce
|
|
* Since Version: 1.3
|
|
* Value Range: bool, default=true
|
|
* Example:
|
|
* Note: asynchronous nccl allreduce or synchronous issue:
|
|
* https://github.com/PaddlePaddle/Paddle/issues/15049
|
|
* If you want to change this default value, why?(gongwb)
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
sync_nccl_allreduce,
|
|
true,
|
|
"If set true, will call `cudaStreamSynchronize(nccl_stream)`"
|
|
"after allreduce, this mode can get better performance in some scenarios.");
|
|
#endif
|
|
|
|
#ifdef PADDLE_WITH_DISTRIBUTE
|
|
/**
|
|
* Distributed related FLAG
|
|
* Name: FLAGS_communicator_max_merge_var_num
|
|
* Since Version: 1.5.0
|
|
* Value Range: int32, default=20
|
|
* Example:
|
|
* Note: The maximum number of gradients to be merged into a gradient and
|
|
* sent through the communicator. The trainer puts all the gradients
|
|
* into the queue, and then the communicator takes the gradients out
|
|
* of the queue and sends them after merging.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_int32(communicator_max_merge_var_num,
|
|
20,
|
|
"max var num to merge and send");
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
communicator_is_sgd_optimizer,
|
|
true,
|
|
"gradient sent to the server is the sum of the gradients "
|
|
"calculated by each thread if optimizer is sgd");
|
|
/**
|
|
* Distributed related FLAG
|
|
* Name: FLAGS_communicator_send_queue_size
|
|
* Since Version: 1.5.0
|
|
* Value Range: int32, default=20
|
|
* Example:
|
|
* Note: Size for each gradient queue. The trainer puts the gradient into
|
|
* the queue, and then the communicator takes it out of the queue and
|
|
* sends it out. When the communicator is slow, the queue may be full,
|
|
* and the trainer will be continuously blocked before the queue has
|
|
* space. It is used to avoid training much faster than communication,
|
|
* so that too many gradients are not sent out in time.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_int32(communicator_send_queue_size,
|
|
20,
|
|
"queue size to recv gradient before send");
|
|
#endif
|
|
|
|
/**
|
|
* Distributed related FLAG
|
|
* Name: FLAGS_dist_threadpool_size
|
|
* Since Version: 1.0.0
|
|
* Value Range: int32, default=0
|
|
* Example:
|
|
* Note: Control the number of threads used for distributed modules.
|
|
* If it is not set, it is set to a hard thread.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_int32(dist_threadpool_size,
|
|
0,
|
|
"number of threads used for distributed executed.");
|
|
|
|
/**
|
|
* Garbage collector related FLAG
|
|
* Name: FLAGS_eager_delete_tensor_gb
|
|
* Since Version: 1.0.0
|
|
* Value Range: double, default=kDefaultEagerDeleteTensorGB
|
|
* Example: FLAGS_eager_delete_tensor_gb=0.0, Release memory garbage once it is
|
|
* no longer used.
|
|
* FLAGS_eager_delete_tensor_gb=1.0, Release memory garbage when
|
|
* garbage occupies 1.0GB of memory.
|
|
* FLAGS_eager_delete_tensor_gb=-1.0, Disable garbage collection
|
|
* policy.
|
|
* Note: Represents whether a garbage collection strategy is used to optimize
|
|
* network memory usage.
|
|
* It is recommended that users set FLAGS_eager_delete_tensor_gb=0.0 to
|
|
* enable garbage collection strategy when training large networks.
|
|
*/
|
|
// Disable gc by default when inference library is built
|
|
static const double kDefaultEagerDeleteTensorGB = 0;
|
|
|
|
PHI_DEFINE_EXPORTED_double(
|
|
eager_delete_tensor_gb,
|
|
kDefaultEagerDeleteTensorGB,
|
|
"Memory size threshold (GB) when the garbage collector clear tensors."
|
|
"Disabled when this value is less than 0");
|
|
|
|
/**
|
|
* Memory related FLAG
|
|
* Name: FLAGS_fast_eager_deletion_mode
|
|
* Since Version: 1.3.0
|
|
* Value Range: bool, default=true
|
|
* Example:
|
|
* Note: Whether to use fast garbage collection strategy.
|
|
* If not set, the GPU memory is released at the end of the CUDA kernel.
|
|
* Otherwise, the GPU memory will be released before the CUDA kernel
|
|
* has finished, which will make the garbage collection strategy faster.
|
|
* Only works when garbage collection strategy is enabled.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
fast_eager_deletion_mode,
|
|
true,
|
|
"Fast eager deletion mode. If enabled, memory would release "
|
|
"immediately without waiting GPU kernel ends.");
|
|
|
|
/**
|
|
* Memory related FLAG
|
|
* Name: FLAGS_async_fast_eager_deletion_mode
|
|
* Since Version: 3.1.1
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: Enable async fast garbage collection mode. If enabled, allocation will
|
|
* be released asynchronously, which makes the garbage collection process
|
|
* faster. This flag is valid when fast_eager_deletion_mode is enabled.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
async_fast_eager_deletion_mode,
|
|
false,
|
|
"Enable async fast garbage collection mode. If enabled, allocation will "
|
|
"be released asynchronously, which make the garbage collection process "
|
|
"non-blocking. This flag is only valid when FLAGS_fast_eager_deletion_mode "
|
|
"is true.");
|
|
|
|
/**
|
|
* Memory related FLAG
|
|
* Name: FLAGS_memory_fraction_of_eager_deletion
|
|
* Since Version: 1.4
|
|
* Value Range: double [0.0, 1.0], default=1.0
|
|
* Example:
|
|
* Note: The percentage of memory size of garbage collection policy
|
|
* to release variables.
|
|
* If FLAGS_memory_fraction_of_eager_deletion = 1.0,
|
|
* all temporary variables in the network will be released.
|
|
* If FLAGS_memory_fraction_of_eager_deletion = 0.0,
|
|
* no temporary variables in the network are released.
|
|
* If 0.0 < FLAGS_memory_fraction_of_eager_deletion < 1.0,
|
|
* all temporary variables will be sorted in descending order
|
|
* according to their memory size, and only variables with the
|
|
* largest FLAGS_memory_fraction_of_eager_deletion ratio will be released.
|
|
* The flag is only valid when running parallel data compilers.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_double(
|
|
memory_fraction_of_eager_deletion,
|
|
1.0,
|
|
"Fraction of eager deletion. If less than 1.0, all variables in "
|
|
"the program would be sorted according to its memory size, and "
|
|
"only the FLAGS_memory_fraction_of_eager_deletion of the largest "
|
|
"variables would be deleted.");
|
|
|
|
/**
|
|
* Allocator related FLAG
|
|
* Name: FLAGS_allocator_strategy
|
|
* Since Version: 1.2
|
|
* Value Range: string, {naive_best_fit, auto_growth, thread_local},
|
|
* default=auto_growth
|
|
* Example:
|
|
* Note: For selecting allocator policy of PaddlePaddle.
|
|
*/
|
|
static constexpr char kDefaultAllocatorStrategy[] = "auto_growth"; // NOLINT
|
|
PHI_DEFINE_EXPORTED_string(
|
|
allocator_strategy,
|
|
kDefaultAllocatorStrategy,
|
|
"The allocation strategy, enum in [naive_best_fit, auto_growth]. "
|
|
"naive_best_fit means the original pre-allocated allocator of Paddle. "
|
|
"auto_growth means the auto-growth allocator. "
|
|
"These two strategies differ in GPU memory allocation. "
|
|
"naive_best_fit strategy would occupy almost all GPU memory by default, "
|
|
"which prevents users from starting several Paddle jobs on the same GPU "
|
|
"card but leads to less memory fragmentation (i.e., maximum batch "
|
|
"size of models may be larger). auto_growth strategy would allocate "
|
|
"GPU memory on demand, which allows users to start several Paddle jobs "
|
|
"on the same GPU card but may lead to more memory fragmentation "
|
|
"(i.e., maximum batch size of models may be smaller).");
|
|
|
|
/**
|
|
* Memory related FLAG
|
|
* Name: FLAGS_fraction_of_cpu_memory_to_use
|
|
* Since Version: 0.12.0
|
|
* Value Range: double, [0.0, 1.0], default=1
|
|
* Example:
|
|
* Note: Represents the proportion of allocated CPU memory blocks
|
|
* to the total memory size of the CPU. Future CPU memory usage
|
|
* will be allocated from this memory block. If the memory block does
|
|
* not have enough CUDA pinned memory, new memory blocks of the same
|
|
* size as the memory block will be allocated from the CUDA pinned
|
|
* request util the CPU does not have enough memory.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_double(fraction_of_cpu_memory_to_use,
|
|
1,
|
|
"Default use 100% of CPU memory for PaddlePaddle,"
|
|
"reserve the rest for page tables, etc");
|
|
|
|
/**
|
|
* Memory related FLAG
|
|
* Name: FLAGS_initial_cpu_memory_in_mb
|
|
* Since Version: 0.14.0
|
|
* Value Range: uint64, default=500 (MB)
|
|
* Example:
|
|
* Note: The CPU memory block size of the initial allocator in MB.
|
|
* The allocator takes the minimum values of
|
|
* FLAGS_initial_cpu_memory_in_mb and
|
|
* FLAGS_fraction_of_cpu_memory_to_use*(total physical memory)
|
|
* as memory block sizes.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_uint64(initial_cpu_memory_in_mb,
|
|
500ul,
|
|
"Initial CPU memory for PaddlePaddle, in MD unit.");
|
|
|
|
/**
|
|
* Memory related FLAG
|
|
* Name: FLAGS_fraction_of_cuda_pinned_memory_to_use
|
|
* Since Version: 0.12.0
|
|
* Value Range: double, [0.0, 1.0], default=0.5
|
|
* Example:
|
|
* Note: Represents the proportion of allocated CUDA pinned memory blocks
|
|
* to the total memory size of the CPU. Future CUDA pinned memory usage
|
|
* will be allocated from this memory block. If the memory block does
|
|
* not have enough CPU memory, new memory blocks of the same
|
|
* size as the memory block will be allocated from the CPU
|
|
* request util the CPU does not have enough memory.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_double(
|
|
fraction_of_cuda_pinned_memory_to_use,
|
|
0.5,
|
|
"Default use 50% of CPU memory as the pinned_memory for PaddlePaddle,"
|
|
"reserve the rest for page tables, etc");
|
|
|
|
// NOTE(zhiqiu): better to share the flags, otherwise we will have too many
|
|
// flags.
|
|
#if defined(PADDLE_WITH_CUDA) || defined(PADDLE_WITH_HIP) || \
|
|
defined(PADDLE_WITH_CUSTOM_DEVICE) || defined(PADDLE_WITH_XPU)
|
|
|
|
/**
|
|
* Memory related FLAG
|
|
* Name: FLAGS_fraction_of_gpu_memory_to_use
|
|
* Since Version: 1.2.0
|
|
* Value Range: double, default=0.5 if win32, 0.92 else
|
|
* Example:
|
|
* Note: Represents the proportion of allocated memory blocks to the total
|
|
* memory size
|
|
* of the GPU. Future memory usage will be allocated from this memory
|
|
* block.
|
|
* If the memory block does not have enough GPU memory, new memory blocks
|
|
* of
|
|
* the same size as the memory block will be allocated from the GPU
|
|
* request
|
|
* until the GPU does not have enough memory.
|
|
*/
|
|
|
|
#ifndef _WIN32
|
|
constexpr static float fraction_of_gpu_memory_to_use = 0.92f;
|
|
#else
|
|
// fraction_of_gpu_memory_to_use cannot be too high on windows,
|
|
// since the win32 graphic sub-system can occupy some GPU memory
|
|
// which may lead to insufficient memory left for paddle
|
|
constexpr static float fraction_of_gpu_memory_to_use = 0.5f;
|
|
#endif
|
|
PHI_DEFINE_EXPORTED_double(
|
|
fraction_of_gpu_memory_to_use,
|
|
fraction_of_gpu_memory_to_use,
|
|
"Allocate a trunk of gpu memory that is this fraction of the "
|
|
"total gpu memory size. Future memory usage will be allocated "
|
|
"from the trunk. If the trunk doesn't have enough gpu memory, "
|
|
"additional trunks of the same size will be requested from gpu "
|
|
"until the gpu has no memory left for another trunk.");
|
|
|
|
/**
|
|
* Memory related FLAG
|
|
* Name: FLAGS_initial_gpu_memory_in_mb
|
|
* Since Version: 1.4.0
|
|
* Value Range: uint64, default=0 (MB)
|
|
* Example:
|
|
* Note: Allocate a specified size of GPU memory block. Later memory usage
|
|
* will be allocated from that memory block. If the memory block does not
|
|
* have enough GPU memory, the memory block with the size
|
|
* FLAGS_reallocate_gpu_memory_in_mb will be requested from the GPU until
|
|
* the GPU has no remaining memory.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_uint64(
|
|
initial_gpu_memory_in_mb,
|
|
0ul,
|
|
"Allocate a trunk of gpu memory whose byte size is specified by "
|
|
"the flag. Future memory usage will be allocated from the "
|
|
"trunk. If the trunk doesn't have enough gpu memory, additional "
|
|
"trunks of the gpu memory will be requested from gpu with size "
|
|
"specified by FLAGS_reallocate_gpu_memory_in_mb until the gpu has "
|
|
"no memory left for the additional trunk. Note: if you set this "
|
|
"flag, the memory size set by "
|
|
"FLAGS_fraction_of_gpu_memory_to_use will be overridden by this "
|
|
"flag. If you don't set this flag, PaddlePaddle will use "
|
|
"FLAGS_fraction_of_gpu_memory_to_use to allocate gpu memory");
|
|
|
|
/**
|
|
* Memory related FLAG
|
|
* Name: FLAGS_reallocate_gpu_memory_in_mb
|
|
* Since Version: 1.4.0
|
|
* Value Range: uint64, default=0 (MB)
|
|
* Example:
|
|
* Note: If the allocated GPU memory blocks are exhausted,
|
|
* additional GPU memory blocks are reallocated
|
|
*/
|
|
PHI_DEFINE_EXPORTED_uint64(
|
|
reallocate_gpu_memory_in_mb,
|
|
0ul,
|
|
"If this flag is set, Paddle will reallocate the gpu memory with "
|
|
"size specified by this flag. Else Paddle will reallocate by "
|
|
"FLAGS_fraction_of_gpu_memory_to_use");
|
|
|
|
PHI_DEFINE_EXPORTED_uint64(
|
|
gpu_memory_limit_mb,
|
|
0UL,
|
|
"The maximum gpu memory limit that the process can allocate. "
|
|
"If it is equal to 0, there would be no limit and all gpu memory "
|
|
"would be available to the process. If it is larger than 0, "
|
|
"the process would raise out of memory error if the allocated "
|
|
"memory exceeds the limit even though there is available "
|
|
"memory on the gpu card. The unit is MB and default value is 0.");
|
|
|
|
/**
|
|
* Memory related FLAG
|
|
* Name: FLAGS_auto_growth_chunk_size_in_mb
|
|
* Since Version: 2.5.0
|
|
* Value Range: uint64, default=0 (MB)
|
|
* Example:
|
|
* Note: The minimal chunk size of GPU memory block in auto_growth allocator.
|
|
* The real chunk size is max(request_size,
|
|
* FLAGS_auto_growth_chunk_size_in_mb).
|
|
*/
|
|
PHI_DEFINE_EXPORTED_uint64(
|
|
auto_growth_chunk_size_in_mb,
|
|
0ul,
|
|
"The minimal chunk size of GPU memory block in auto_growth allocator. "
|
|
"The real chunk size is max(request_size, "
|
|
"FLAGS_auto_growth_chunk_size_in_mb).");
|
|
|
|
#endif
|
|
|
|
/**
|
|
* Scope related FLAG
|
|
* Name: local_exe_sub_scope_limit
|
|
* Since Version: 1.6.0
|
|
* Value Range: double, default=256 (MB)
|
|
* Example:
|
|
* Note:
|
|
*/
|
|
PHI_DEFINE_EXPORTED_double(
|
|
local_exe_sub_scope_limit,
|
|
256.0, // MBytes
|
|
"The memory up limit of sub-scopes of local execution scope for "
|
|
"each CUDAPlace. If you don't need to limit the memory, "
|
|
"you should set FLAGS_local_exe_sub_scope_limit=-1. "
|
|
"The default value is 256 MBytes.");
|
|
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
reader_queue_speed_test_mode,
|
|
false,
|
|
"If set true, the queue.pop will only get data from queue but not "
|
|
"remove the data from queue for speed testing");
|
|
|
|
/**
|
|
* MKLDNN related FLAG
|
|
* Name: use_mkldnn
|
|
* Since Version:
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note:
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(use_mkldnn, false, "Use MKLDNN to run");
|
|
|
|
/**
|
|
* ONEDNN related FLAG
|
|
* Name: use_onednn
|
|
* Since Version:
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note:
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(use_onednn, false, "Use ONEDNN to run");
|
|
|
|
/**
|
|
* Debug related FLAG
|
|
* Name: FLAGS_call_stack_level
|
|
* Since Version: 2.0.0
|
|
* Value Range: int, default=2
|
|
* Example:
|
|
* Note: Used to debug. Determine the call stack to print when error or
|
|
* exception happens.
|
|
* If FLAGS_call_stack_level == 0, only the error message summary will be shown.
|
|
* If FLAGS_call_stack_level == 1, the python stack and error message summary
|
|
* will be shown.
|
|
* If FLAGS_call_stack_level == 2, the python stack, c++ stack, and error
|
|
* message summary will be shown.
|
|
*/
|
|
#ifdef PADDLE_NO_PYTHON
|
|
static const int32_t kDefaultCallStackLevel = 2;
|
|
#else
|
|
static const int32_t kDefaultCallStackLevel = 1;
|
|
#endif
|
|
|
|
PHI_DEFINE_EXPORTED_int32(
|
|
call_stack_level,
|
|
kDefaultCallStackLevel,
|
|
"Determine the call stack to print when error or exception happens."
|
|
// TODO(zhiqiu): implement logic of FLAGS_call_stack_level==0
|
|
// "If FLAGS_call_stack_level == 0, only the error message summary will be "
|
|
// "shown. "
|
|
"If FLAGS_call_stack_level == 1, the python stack and error message "
|
|
"summary will be shown."
|
|
"If FLAGS_call_stack_level == 2, the python stack, c++ stack, and "
|
|
"error message summary will be shown.");
|
|
/**
|
|
* Debug related FLAG
|
|
* Name: dump_grad_node_forward_stack_path
|
|
* Since Version: 3.3
|
|
* Value Range: string, default=""
|
|
* Example:
|
|
* Note: Dump grad node forward call stack to the dir path.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_string(dump_grad_node_forward_stack_path,
|
|
"",
|
|
"Dump grad node forward call stack to the dir path");
|
|
/**
|
|
* Debug related FLAG
|
|
* Name: dump_api_python_stack_path
|
|
* Since Version: 3.3
|
|
* Value Range: string, default=""
|
|
* Example:
|
|
* Note: Dump api forward python call stack to the dir path.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_string(
|
|
dump_api_python_stack_path,
|
|
"",
|
|
"Dump api forward python call stack to the dir path");
|
|
/**
|
|
* Debug related FLAG
|
|
* Name: dump_api_and_gradnode_python_stack_dir
|
|
* Since Version: 3.3
|
|
* Value Range: string, default=""
|
|
* Example:
|
|
* Note: Dump api and gradnode forward python call stack to the dir path.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_string(
|
|
dump_api_and_gradnode_python_stack_dir,
|
|
"",
|
|
"Dump api and gradnode forward python call stack to the dir path");
|
|
|
|
/**
|
|
* Debug related FLAG
|
|
* Name: tensor_md5_checksum_output_path
|
|
* Since Version: 3.3
|
|
* Value Range: string, default=""
|
|
* Example:
|
|
* Note: Export all API output tensors to the specified file.
|
|
* If tensor_md5_checksum_output_path is "", this flag will not take effect.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_string(
|
|
tensor_md5_checksum_output_path,
|
|
"",
|
|
"Export all API output tensors to the specified file.");
|
|
|
|
/**
|
|
* Debug related FLAG
|
|
* Name: enable_unique_name
|
|
* Since Version: 3.3
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: If True,the Tensor, C++ API and GradNode will has unique name,such as
|
|
* 'matmul2_out_float32_2x10' or 'matmul2_out_float32_2x10@Grad'
|
|
*
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
enable_unique_name,
|
|
false,
|
|
"Enable unique name in Eager mode for Tensor, C++ API and GradNode.");
|
|
PHI_DEFINE_EXPORTED_bool(share_tensor_for_grad_tensor_holder,
|
|
false,
|
|
"CopyValueFromTensor do not deep copy, if true.");
|
|
/**
|
|
* Debug related FLAG
|
|
* Name: tensor_md5_checksum_precision
|
|
* Since Version: 3.3
|
|
* Value Range: int32, default=3
|
|
* Example:
|
|
* Note: The precision of the tensor data used for computing the MD5 checksum
|
|
* (the number of decimal places after the decimal point).
|
|
*
|
|
*/
|
|
PHI_DEFINE_EXPORTED_int32(tensor_md5_checksum_precision,
|
|
3,
|
|
"The precision of tensor md5 checksum.");
|
|
/**
|
|
* Debug related FLAG
|
|
* Name: tensor_md5_checksum_use_binary_input
|
|
* Since Version: 3.3
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: The data format used for calculating the md5 checksum. If true, the md5
|
|
* checksum will be calculated based on the binary format of the stored data.
|
|
*
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
tensor_md5_checksum_use_binary_format,
|
|
false,
|
|
"Whether to use binary format when computing tensor md5 checksum.");
|
|
|
|
/**
|
|
* Debug related FLAG
|
|
* Name: sort_sum_gradient
|
|
* Since Version: 2.0.0
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: If True, gradients are summed by the reverse order of
|
|
* the forward execution sequence.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(sort_sum_gradient,
|
|
false,
|
|
"Sum gradients by the reverse order of "
|
|
"the forward execution sequence.");
|
|
|
|
/**
|
|
* Performance related FLAG
|
|
* Name: max_inplace_grad_add
|
|
* Since Version: 2.0.0
|
|
* Value Range: int32, default=0
|
|
* Example:
|
|
* Note: The maximum number of inplace grad_add.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_int32(
|
|
max_inplace_grad_add,
|
|
0,
|
|
"The maximum number of inplace grad_add. When doing "
|
|
"gradient accumulation, if the number of gradients need to that "
|
|
"less FLAGS_max_inplace_grad_add, than it will be use several grad_add "
|
|
"instead of sum. Default is 0.");
|
|
|
|
/**
|
|
* Tensor.numpy() has a hack, and this flag can close this hack
|
|
* [true]: set 0D Tensor to 1D Numpy
|
|
* [false]: not set 0D Tensor to 1D Numpy, close the hack
|
|
*
|
|
* Now, just set true by default in 2.5 transition time
|
|
* which will be removed in future (2.6) .
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(set_to_1d, false, "set 0D Tensor to 1D numpy");
|
|
|
|
/**
|
|
* Debug related FLAG
|
|
* Name: tracer_onednn_ops_on
|
|
* Since Version: 2.0.0
|
|
* Value Range: string, default=empty
|
|
* Example:
|
|
* Note: Holds list of operation types with OneDNN kernels to be enabled.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_string(tracer_onednn_ops_on,
|
|
"",
|
|
"List of OneDNN operation types to be turned on");
|
|
|
|
/**
|
|
* Debug related FLAG
|
|
* Name: static_runtime_data_save_path
|
|
* Since Version: 2.6.0
|
|
* Value Range: string, default=./
|
|
* Example:
|
|
* Note: set the static runtime tensor save path.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_string(static_runtime_data_save_path,
|
|
"./",
|
|
"set the static runtime tensor save path");
|
|
|
|
/**
|
|
* Debug related FLAG
|
|
* Name: tracer_onednn_ops_off
|
|
* Since Version: 2.0.0
|
|
* Value Range: string, default=empty
|
|
* Example:
|
|
* Note: Holds list of operation types with OneDNN kernels to be disabled.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_string(tracer_onednn_ops_off,
|
|
"",
|
|
"List of OneDNN operation types to be turned off");
|
|
|
|
/**
|
|
* Performance related FLAG
|
|
* Name: engine_serialized_path
|
|
* Since Version: 2.0.0
|
|
* Value Range: string, default=./
|
|
* Example:
|
|
* Note: Path to directory where engine serialized files are stored.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_string(trt_engine_serialized_path,
|
|
"./",
|
|
"Path to directory of engine serialized files");
|
|
|
|
/**
|
|
* Debug related FLAG
|
|
* Name: check_kernel_launch
|
|
* Since Version: 2.1.0
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: Check kernel launch status after every kernel compute.
|
|
*/
|
|
#if defined(PADDLE_WITH_CUDA) || defined(PADDLE_WITH_HIP)
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
check_kernel_launch,
|
|
false,
|
|
"Check kernel launch status after every kernel compute");
|
|
#endif
|
|
|
|
/**
|
|
* CUDNN related FLAG
|
|
* Name: conv2d_disable_cudnn
|
|
* Since Version:
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: Disable cudnn in conv2d.
|
|
*/
|
|
#if defined(PADDLE_WITH_CUDA) || defined(PADDLE_WITH_HIP)
|
|
PHI_DEFINE_EXPORTED_bool(conv2d_disable_cudnn,
|
|
false,
|
|
"Disable cudnn in conv2d");
|
|
|
|
PHI_DEFINE_EXPORTED_bool(use_fast_math,
|
|
false,
|
|
"Whether to use fast math GPU functions.");
|
|
#endif
|
|
|
|
/**
|
|
* CUDNN related FLAG
|
|
* Name: conv3d_disable_cudnn
|
|
* Since Version:
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: Disable cudnn in conv3d.
|
|
*/
|
|
#if defined(PADDLE_WITH_CUDA) || defined(PADDLE_WITH_HIP)
|
|
PHI_DEFINE_EXPORTED_bool(conv3d_disable_cudnn,
|
|
false,
|
|
"Disable cudnn in conv3d");
|
|
#endif
|
|
|
|
/**
|
|
* Distributed related FLAG
|
|
* Name: FLAGS_get_host_by_name_time
|
|
* Since Version: 2.2.0
|
|
* Value Range: int32, default=120
|
|
* Example:
|
|
* Note: Get host by name time.
|
|
*/
|
|
#if defined(PADDLE_WITH_CUDA) || defined(PADDLE_WITH_XPU) || \
|
|
defined(PADDLE_WITH_HIP) || defined(PADDLE_WITH_CUSTOM_DEVICE)
|
|
PHI_DEFINE_EXPORTED_int32(get_host_by_name_time,
|
|
120,
|
|
"The maximum time for get host by name time");
|
|
#endif
|
|
|
|
/**
|
|
* Distributed related FLAG
|
|
* Name: FLAGS_apply_pass_to_program
|
|
* Since Version: 2.2.0
|
|
* Value Range: bool, default=false
|
|
* Example: FLAGS_apply_pass_to_program=true would apply IR Pass to
|
|
* program when using Fleet APIs.
|
|
* Note: Apply IR pass to program. Be only useful when using Fleet APIs.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
apply_pass_to_program,
|
|
false,
|
|
"It controls whether to apply IR pass to program when using Fleet APIs");
|
|
|
|
/**
|
|
* Debug related FLAG
|
|
* Name: FLAGS_save_static_runtime_data
|
|
* Since Version: 2.6.0
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: It controls whether to save runtime tensor in static mode.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
save_static_runtime_data,
|
|
false,
|
|
"It controls whether to save runtime tensor in static mode");
|
|
|
|
/**
|
|
* Distributed related FLAG
|
|
* Name: FLAGS_graph_load_in_parallel
|
|
* Since Version: 2.2.0
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: Control whether load graph node and edge with multi threads parallelly
|
|
* If it is not set, load graph data with one thread
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(graph_load_in_parallel,
|
|
false,
|
|
"It controls whether load graph node and edge with "
|
|
"multi threads parallelly.");
|
|
|
|
/**
|
|
* Distributed related FLAG
|
|
* Name: FLAGS_enable_neighbor_list_use_uva
|
|
* Since Version: 2.5.0
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: Control whether store neighbor_list with UVA in gpu graph mode
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(enable_neighbor_list_use_uva,
|
|
false,
|
|
"It controls whether store neighbor_list with UVA");
|
|
|
|
/**
|
|
* Distributed related FLAG
|
|
* Name: FLAGS_graph_neighbor_size_percent
|
|
* Since Version: 2.5.0
|
|
* Value Range: double, default=1.0
|
|
* Example:
|
|
* Note: Control whether load graph node and edge with multi threads parallelly
|
|
* If it is not set, load graph data with one thread
|
|
*/
|
|
PHI_DEFINE_EXPORTED_double(graph_neighbor_size_percent,
|
|
1.0,
|
|
"It controls whether percent of neighbor_size.");
|
|
|
|
/**
|
|
* Distributed related FLAG
|
|
* Name: FLAGS_graph_metapath_split_opt
|
|
* Since Version: 2.2.0
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: Control whether load graph node and edge with multi threads parallelly
|
|
* If it is not set, load graph data with one thread
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(graph_metapath_split_opt,
|
|
false,
|
|
"It controls whether load graph node and edge with "
|
|
"multi threads parallelly.");
|
|
|
|
/**
|
|
* Distributed related FLAG
|
|
* Name: FLAGS_graph_get_neighbor_id
|
|
* Since Version: 2.2.0
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: Control get all neighbor id when running sub part graph
|
|
* If it is not set, do not need get neighbor id when run all part graph
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
graph_get_neighbor_id,
|
|
false,
|
|
"It controls get all neighbor id when running sub part graph.");
|
|
|
|
/**
|
|
* Distributed related FLAG
|
|
* Name: enable_exit_when_partial_worker
|
|
* Since Version: 2.2.0
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: Control whether exit trainer when an worker has no ins.
|
|
* If it is not set, trainer will exit until all worker finish train.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
enable_exit_when_partial_worker,
|
|
false,
|
|
"It controls whether exit trainer when an worker has no ins.");
|
|
|
|
/**
|
|
* Distributed related FLAG
|
|
* Name: enable_adjust_op_order
|
|
* Since Version: 2.5.0
|
|
* Value Range: int32, default=0
|
|
* Example:
|
|
* Note: Control whether adjust op order in worker to reduce hbm cost in gpu
|
|
* graph mode.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_int32(
|
|
enable_adjust_op_order,
|
|
0,
|
|
"It controls whether adjust op order in worker to reduce hbm cost");
|
|
|
|
/**
|
|
* Distributed related FLAG
|
|
* Name: enable_exit_when_partial_worker
|
|
* Since Version: 2.2.0
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: represent gpugraph storage mode, 1 for full hbm, 2 for hbm + mem + ssd.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_int32(gpugraph_storage_mode,
|
|
1,
|
|
"gpugraph storage mode, default 1");
|
|
|
|
/**
|
|
* KP kernel related FLAG
|
|
* Name: FLAGS_run_kp_kernel
|
|
* Since Version: 2.3.0
|
|
* Value Range: bool, default=false
|
|
* Example: FLAGS_run_kp_kernel=true would use the kp kernel to compute in the
|
|
* Op.
|
|
* Note:
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(run_kp_kernel,
|
|
false,
|
|
"It controls whether to run PaddlePaddle using KP");
|
|
|
|
/**
|
|
* Distributed related FLAG
|
|
* Name: FLAGS_allreduce_record_one_event
|
|
* Since Version: 2.2.0
|
|
* Value Range: bool, default=false
|
|
* Example: FLAGS_allreduce_record_one_event=true makes the allreduce
|
|
* operations would only wait one event instead of multiple events.
|
|
* Note: Make the allreduce operations would only wait one event instead of
|
|
* multiple events. Currently, only fuse allreduce supports this.
|
|
* Otherwise, the precision may be wrong.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(allreduce_record_one_event,
|
|
false,
|
|
"It controls whether the allreduce operations "
|
|
"would only wait one event instead of multiple "
|
|
"events. Currently, only fuse allreduce supports "
|
|
"this. Otherwise, the precision may be wrong.");
|
|
|
|
#ifdef PADDLE_WITH_CINN
|
|
/*
|
|
* CINN related FLAG
|
|
* Name: FLAGS_use_cinn
|
|
* Since Version: 2.3
|
|
* Value Range: bool, default=false
|
|
* Example: FLAGS_use_cinn=true would run PaddlePaddle using CINN
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(use_cinn,
|
|
false,
|
|
"It controls whether to run PaddlePaddle using CINN");
|
|
|
|
/*
|
|
* CINN related FLAG
|
|
* Name: FLAGS_allow_cinn_ops
|
|
* Since Version: 2.3
|
|
* Value Range: string, default=""
|
|
* Example: FLAGS_allow_cinn_ops="mul;relu" would only cover `mul` and `relu`
|
|
* when using CINN
|
|
*/
|
|
PHI_DEFINE_EXPORTED_string(allow_cinn_ops,
|
|
"",
|
|
"It controls the cinn op subset to be used, "
|
|
"which has the highest priority.");
|
|
|
|
/*
|
|
* CINN related FLAG
|
|
* Name: FLAGS_deny_cinn_ops
|
|
* Since Version: 2.3
|
|
* Value Range: string, default=""
|
|
* Example: FLAGS_deny_cinn_ops="mul;relu" would block `mul` and `relu` two ops
|
|
* when using CINN
|
|
*/
|
|
PHI_DEFINE_EXPORTED_string(deny_cinn_ops,
|
|
"",
|
|
"It controls the cinn op subset to be not used.");
|
|
|
|
/*
|
|
* CINN related FLAG
|
|
* Name: FLAGS_enable_cinn_compile_cache
|
|
* Since Version: 3.0 Beta
|
|
* Value Range: bool, default=true
|
|
* Example: FLAGS_enable_cinn_compile_cache=true would reuse cached Kernel
|
|
* function
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
enable_cinn_compile_cache,
|
|
true,
|
|
"It controls whether to enable cinn compilation cache.");
|
|
/*
|
|
* CINN related FLAG
|
|
* Name: FLAGS_cinn_compile_thread_num
|
|
* Since Version: 3.0 Beta
|
|
* Value Range: bool, default=-1
|
|
* Example: FLAGS_cinn_compile_thread_num=8
|
|
*/
|
|
PHI_DEFINE_EXPORTED_int64(
|
|
cinn_compile_thread_num,
|
|
-1,
|
|
"It controls how many thread numbers applying compilation cache.");
|
|
|
|
/*
|
|
* CINN related FLAG
|
|
* Name: FLAGS_cinn_specify_input_dynamic_dim
|
|
* Since Version: 3.0 Beta
|
|
* Value Range: bool, default=false
|
|
* Example: FLAGS_cinn_specify_input_dynamic_dim=true will use file set by
|
|
* FLAGS_cinn_input_dynamic_dim_spec_file to specify input dynamic dimension.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(cinn_specify_input_dynamic_dim,
|
|
false,
|
|
"Whether to specify input dynamic dimension.");
|
|
|
|
/*
|
|
* CINN related FLAG
|
|
* Name: FLAGS_cinn_input_dynamic_dim_spec_file
|
|
* Since Version: 3.0 Beta
|
|
* Value Range: string, default=""
|
|
* Example: FLAGS_cinn_input_dynamic_dim_spec_file="./config.json",
|
|
* FLAGS_cinn_specify_input_dynamic_dim=true would use input dynamic dimension
|
|
* predefined in ./config.json to specify input dynamic dimension.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_string(
|
|
cinn_input_dynamic_dim_spec_file,
|
|
"",
|
|
"File path of predefined input dynamic dimension specification.");
|
|
|
|
/*
|
|
* CINN related FLAG
|
|
* Name: FLAGS_cinn_debug
|
|
* Since Version: 3.0
|
|
* Value Range: bool, default=false
|
|
* Example: FLAGS_cinn_debug=true would enable debug log for CINN.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(cinn_debug,
|
|
false,
|
|
"Whether to enable debug log for CINN.");
|
|
|
|
#endif
|
|
|
|
/*
|
|
* CUDA Graph related FLAG
|
|
* Name: FLAGS_new_executor_use_cuda_graph
|
|
* Since Version: 2.4
|
|
* Value Range: bool, default=false
|
|
* Example: FLAGS_new_executor_use_cuda_graph=true would allow
|
|
* new executor to use CUDA Graph.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(new_executor_use_cuda_graph,
|
|
false,
|
|
"Use CUDA Graph in new executor");
|
|
|
|
/*
|
|
* CUDA Graph / Allocator related FLAG
|
|
* Name: FLAGS_use_cuda_malloc_async_allocator
|
|
* Since Version: 2.7
|
|
* Value Range: bool, default=false
|
|
* Example: FLAGS_use_cuda_malloc_async_allocator=true would allow
|
|
* CUDAMallocAsyncAllocator replace StreamSafeCUDAAllocator.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(use_cuda_malloc_async_allocator,
|
|
false,
|
|
"Enable CUDAMallocAsyncAllocator");
|
|
|
|
/*
|
|
* CUDAMallocAsyncAllocator related FLAG
|
|
* Name: FLAGS_cuda_malloc_async_pool_memory_throttle_ratio
|
|
* Since Version: 3.0
|
|
* Value Range: double, [0.0, 1.0], default=0.8
|
|
* Note:memory_throttle_ratio provides a threshold that determines when to
|
|
* initiate synchronization operations to deallocate memory. This mechanism
|
|
* helps in ensuring that the system does not exceed its memory capacity while
|
|
* also attempting to minimize performance degradation caused by frequent memory
|
|
* synchronization.
|
|
*
|
|
* Please see Note [cuda_malloc_async_pool_memory_throttle_ratio]
|
|
*/
|
|
PHI_DEFINE_EXPORTED_double(
|
|
cuda_malloc_async_pool_memory_throttle_ratio,
|
|
0.8,
|
|
"memory_throttle_ratio provides a threshold that determines when to "
|
|
"initiate synchronization operations to deallocate memory. "
|
|
"This mechanism helps in ensuring that the system does not exceed its "
|
|
"memory capacity while also attempting to minimize performance degradation "
|
|
"caused by frequent memory synchronization.");
|
|
|
|
/*
|
|
* CUDA Graph / Allocator related FLAG
|
|
* Name: FLAGS_auto_free_cudagraph_allocations_on_launch
|
|
* Since Version: 2.7
|
|
* Value Range: bool, default=true
|
|
* Example: When enabling CUDA Graph with CUDAMallocAsyncAllocator, we add
|
|
* cudaGraphInstantiateFlagAutoFreeOnLaunch so it would automatically
|
|
* release graph-owned blocks that have not freed before relaunching.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
auto_free_cudagraph_allocations_on_launch,
|
|
true,
|
|
"When enabling CUDA Graph with CUDAMallocAsyncAllocator, we add "
|
|
"cudaGraphInstantiateFlagAutoFreeOnLaunch so it would automatically "
|
|
"release graph-owned blocks that have not freed before relaunching.");
|
|
|
|
/*
|
|
* CUDA Graph related FLAG
|
|
* Name: FLAGS_cuda_graph_blacklist
|
|
* Since Version: 3.1
|
|
* Value Range: string, default=""
|
|
* Example: FLAGS_cuda_graph_blacklist="op1,op2,op3" would
|
|
* blacklist op1, op2, op3 from being captured in CUDA Graph.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_string(
|
|
cuda_graph_blacklist,
|
|
"",
|
|
"CUDA Graph blacklist, split by ',', e.g., 'op1,op2,op3'");
|
|
|
|
/*
|
|
* Executor related FLAG
|
|
* Name: FLAGS_executor_log_deps_every_microseconds
|
|
* Since Version: 2.5
|
|
* Value Range: uint64, default=0
|
|
* Example: FLAGS_executor_log_deps_every_microseconds=n (n>0) would
|
|
* allow new executor log deps every n microseconds.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_uint64(executor_log_deps_every_microseconds,
|
|
0,
|
|
"Enable new executor log deps every n microseconds");
|
|
|
|
PD_DEFINE_int32(record_pool_max_size,
|
|
2000000,
|
|
"SlotRecordDataset slot record pool max size");
|
|
PD_DEFINE_int32(slotpool_thread_num,
|
|
1,
|
|
"SlotRecordDataset slot pool thread num");
|
|
PD_DEFINE_bool(enable_slotpool_wait_release, // NOLINT
|
|
false,
|
|
"enable slotrecord object wait release, default false");
|
|
PD_DEFINE_bool(enable_slotrecord_reset_shrink, // NOLINT
|
|
false,
|
|
"enable slotrecord object reset shrink memory, default false");
|
|
PD_DEFINE_bool(enable_ins_parser_file, // NOLINT
|
|
false,
|
|
"enable parser ins file, default false");
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
gpugraph_enable_hbm_table_collision_stat,
|
|
false,
|
|
"enable hash collisions stat for hbm table, default false");
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
cache_inference_while_scope,
|
|
false,
|
|
"Cache the scope of the while op to avoid repeated creation of the scope "
|
|
"for each iteration and improve inference performance.");
|
|
PHI_DEFINE_EXPORTED_double(gpugraph_hbm_table_load_factor,
|
|
0.75,
|
|
"the load factor of hbm table, default 0.75");
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
gpugraph_enable_gpu_direct_access,
|
|
false,
|
|
"enable direct access between multi gpu cards, default false");
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
gpugraph_enable_segment_merge_grads,
|
|
false,
|
|
"enable segment merge gradients while push sparse, default false");
|
|
PHI_DEFINE_EXPORTED_uint64(
|
|
gpugraph_merge_grads_segment_size,
|
|
128,
|
|
"segment size with segment gradient merge, default 128");
|
|
PHI_DEFINE_EXPORTED_uint64(gpugraph_slot_feasign_max_num,
|
|
5,
|
|
"max feasign number in one slot, default 5");
|
|
PHI_DEFINE_EXPORTED_int32(
|
|
gpugraph_dedup_pull_push_mode,
|
|
0,
|
|
"enable dedup keys while pull push sparse, default 0");
|
|
PHI_DEFINE_EXPORTED_bool(gpugraph_load_node_list_into_hbm,
|
|
true,
|
|
"enable load_node_list_into_hbm, default true");
|
|
PHI_DEFINE_EXPORTED_int32(gpugraph_sparse_table_storage_mode,
|
|
0,
|
|
"parse_table_storage_mode, default 0");
|
|
PHI_DEFINE_EXPORTED_bool(enable_auto_detect_gpu_topo,
|
|
true,
|
|
"enable auto detect gpu topo, default true");
|
|
PHI_DEFINE_EXPORTED_bool(enable_auto_rdma_trans,
|
|
true,
|
|
"enable auto gpu rdma trans, default true");
|
|
PHI_DEFINE_EXPORTED_bool(enable_tracker_all2all,
|
|
false,
|
|
"enable tracker all2all log, default false");
|
|
PHI_DEFINE_EXPORTED_bool(enable_all2all_use_fp16,
|
|
false,
|
|
"enable all2all use fp16, default false");
|
|
PHI_DEFINE_EXPORTED_bool(enable_sparse_inner_gather,
|
|
false,
|
|
"enable sparse inner gather, default false");
|
|
PHI_DEFINE_EXPORTED_bool(gpugraph_debug_gpu_memory,
|
|
false,
|
|
"enable debug gpu memory, default false");
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
graph_embedding_split_infer_mode,
|
|
true,
|
|
"graph embedding split infer mode not need nccl barrier in gpu graph mode");
|
|
PHI_DEFINE_EXPORTED_bool(enable_graph_multi_node_sampling,
|
|
false,
|
|
"control multi-node sample in gpu graph mode");
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
query_dest_rank_by_multi_node,
|
|
false,
|
|
"Control whether to query dest rank by multi machine in gpu graph mode");
|
|
PHI_DEFINE_EXPORTED_bool(multi_node_sample_use_gpu_table,
|
|
true,
|
|
"Control whether to use gpu table in sample multi "
|
|
"machine in gpu graph mode");
|
|
|
|
/**
|
|
* ProcessGroupNCCL related FLAG
|
|
* Name: nccl_blocking_wait
|
|
* Since Version:
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: nccl blocking wait.
|
|
*/
|
|
|
|
#if defined(PADDLE_WITH_CUDA) || defined(PADDLE_WITH_HIP)
|
|
PHI_DEFINE_EXPORTED_bool(nccl_blocking_wait, false, "nccl blocking wait");
|
|
#endif
|
|
|
|
/**
|
|
* ProcessGroupFlagCX related FLAG
|
|
* Name: flagcx_blocking_wait
|
|
* Since Version:
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: nccl blocking wait.
|
|
* blocks host thread until collective operation completes
|
|
*/
|
|
#if defined(PADDLE_WITH_FLAGCX)
|
|
PHI_DEFINE_EXPORTED_bool(flagcx_blocking_wait, false, "flagcx blocking wait");
|
|
#endif
|
|
|
|
#if defined(PADDLE_WITH_CUDA) || defined(PADDLE_WITH_HIP)
|
|
PHI_DEFINE_EXPORTED_bool(benchmark_nccl,
|
|
false,
|
|
"enable nccl debug mode to synchronize nccl comm");
|
|
#endif
|
|
|
|
/**
|
|
* ProcessGroupNCCL/ProcessGroupBKCL related FLAG
|
|
* Name: enable_nccl_dynamic_check/enable_bkcl_dynamic_check
|
|
* Since Version:
|
|
* Value Range: bool, default=false
|
|
*/
|
|
|
|
#if defined(PADDLE_WITH_CUDA) || defined(PADDLE_WITH_HIP)
|
|
PHI_DEFINE_EXPORTED_bool(enable_nccl_dynamic_check,
|
|
false,
|
|
"enable nccl dynamic checks");
|
|
#elif (defined(PADDLE_WITH_XPU) && defined(PADDLE_WITH_XPU_BKCL))
|
|
PHI_DEFINE_EXPORTED_bool(enable_bkcl_dynamic_check,
|
|
false,
|
|
"enable bkcl dynamic checks");
|
|
#endif
|
|
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
benchmark,
|
|
false,
|
|
"Doing memory benchmark. It will make deleting scope synchronized, "
|
|
"and add some memory usage logs."
|
|
"Default cuda is asynchronous device, set to True will "
|
|
"force op run in synchronous mode.");
|
|
|
|
PHI_DEFINE_EXPORTED_bool(eager_communication_connection,
|
|
false,
|
|
"enable eager to create nccl comm");
|
|
|
|
PHI_DEFINE_EXPORTED_bool(tcp_store_using_libuv, true, "enable libuv tcp store");
|
|
|
|
PHI_DEFINE_EXPORTED_int64(
|
|
tcp_max_syn_backlog,
|
|
2048,
|
|
"The maximum length of the queue for completely established sockets "
|
|
"waiting to be accepted for tcp, default is 2048.");
|
|
|
|
/**
|
|
* Autotune related FLAG
|
|
* Name: FLAGS_use_autotune
|
|
* Since Version: 2.3.0
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(use_autotune, false, "Whether enable autotune.");
|
|
|
|
/**
|
|
* CINN training related FLAG
|
|
* Name: FLAGS_disable_dyshape_in_train
|
|
* Since Version: 2.7.0
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(disable_dyshape_in_train,
|
|
false,
|
|
"Whether disable dyshape in training.");
|
|
|
|
/**
|
|
* CINN accuracy check related FLAG
|
|
* Name: FLAGS_enable_cinn_accuracy_check
|
|
* Since Version: 3.0 beta
|
|
* Value Range: bool, default=false
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(enable_cinn_accuracy_check,
|
|
false,
|
|
"Whether enable accuracy check in cinn.");
|
|
|
|
/**
|
|
* CINN fuse parallel matmul pass related FLAG
|
|
* Name: FLAGS_enable_fuse_parallel_matmul_pass
|
|
* Since Version: 3.0 beta
|
|
* Value Range: bool, default=true
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(enable_fuse_parallel_matmul_pass,
|
|
true,
|
|
"Whether enable fuse_parallel_matmul_pass in cinn.");
|
|
|
|
/**
|
|
* CINN fallback fusion ops FLAG
|
|
* Name: FLAGS_enable_fusion_fallback
|
|
* Since Version: 3.0 beta
|
|
* Value Range: bool, default=false
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(enable_fusion_fallback,
|
|
false,
|
|
"Whether enable fallback fusion ops in cinn.");
|
|
|
|
/**
|
|
* CINN fusion result check FLAG
|
|
* Name: FLAGS_enable_fusion_result_check
|
|
* Since Version: 3.0 beta
|
|
* Value Range: bool, default=false
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(enable_fusion_result_check,
|
|
false,
|
|
"Whether enable fusion result check in cinn.");
|
|
|
|
/**
|
|
* CINN all horizontal groups merge FLAG
|
|
* Name: FLAGS_merge_all_horizontal_groups
|
|
* Since Version: 3.0
|
|
* Value Range: bool, default=false
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(merge_all_horizontal_groups,
|
|
false,
|
|
"Whether enable merge all horizontal groups in cinn.");
|
|
|
|
/**
|
|
* Conv Search cache max number related FLAG
|
|
* Name: FLAGS_search_cache_max_number
|
|
* Since Version: 2.3.0
|
|
* Value Range: int32, default=1000000
|
|
* Example:
|
|
*/
|
|
PHI_DEFINE_EXPORTED_int32(search_cache_max_number,
|
|
1000000,
|
|
"search_cache_max_number.");
|
|
|
|
/**
|
|
* Performance related FLAG
|
|
* Name: einsum_opt
|
|
* Since Version: 2.3.0
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: If True, EinsumOp will be optimized by innercache reuse, which
|
|
* uses more gpu memory.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
einsum_opt,
|
|
false,
|
|
"EinsumOp backward will be speedup at the expense of more gpu memory.");
|
|
|
|
/**
|
|
* Performance related FLAG
|
|
* Name: enable_auto_layout_pass
|
|
* Since Version: 3.0.0
|
|
* Value Range: bool, default=true
|
|
* Example:
|
|
* Note: If True, using AutoLayoutInsertPass and AutuLayoutSimplifyPass by
|
|
* default
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(enable_auto_layout_pass,
|
|
true,
|
|
"Whether enable auto_layout_pass.");
|
|
|
|
/**
|
|
* Performance related FLAG
|
|
* Name: enable_auto_layout_pass_in_inference
|
|
* Since Version: 3.0.0
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: This is a temporary flag, When enabled by default in the inference
|
|
* process, this flag will be removed and enabled or disabled by the
|
|
* `enable_auto_layout_pass` flag.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(enable_auto_layout_pass_in_inference,
|
|
false,
|
|
"Whether enable auto_layout_pass_in_inference.");
|
|
|
|
/**
|
|
* JitLayer related FLAG
|
|
* Name: FLAGS_jit_engine_type
|
|
* Since Version: 2.3.0
|
|
* Value Range: string, {Executor, PE},
|
|
* default=Predictor
|
|
* Example:
|
|
* Note:
|
|
* FLAGS_jit_engine_type == New, using InterpreterEngine by default
|
|
* FLAGS_jit_engine_type == Predictor, using inference Predictor by default
|
|
*/
|
|
PHI_DEFINE_EXPORTED_string(jit_engine_type,
|
|
"Predictor",
|
|
"Choose default function type in JitLayer.");
|
|
|
|
/**
|
|
* Custom Device NPU related FLAG
|
|
* Name: FLAGS_npu_storage_format
|
|
* Since Version: 2.5.0
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: Enable NPU Storage Format for Ascend910 performance improvement.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(npu_storage_format, false, "");
|
|
|
|
#ifdef PADDLE_WITH_CUDNN_FRONTEND
|
|
/**
|
|
* CUDNNv8 related FLAG
|
|
* Name: enable_cudnn_frontend
|
|
* Since Version: 2.5.0
|
|
* Value Range: bool, default=true
|
|
* Example:
|
|
* Note: Enable CUDNNv8 Frontend API for CUDNN kernels.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(enable_cudnn_frontend, true, "");
|
|
|
|
/**
|
|
* CUDNNv8 related FLAG
|
|
* Name: cudnn_cache_saturation_count
|
|
* Since Version: 2.5.0
|
|
* Value Range: int64_t, default=1
|
|
* Example:
|
|
* Note: Set saturation count for CUDNNv8 cache. A candidate execution
|
|
* plan need to be considered as the fastest plan by exhaustive search
|
|
* N times before it is actually added in the cache. It is useful when
|
|
* the result of exhaustive search is unstable.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_int32(cudnn_cache_saturation_count, 1, "");
|
|
#endif // PADDLE_WITH_CUDNN_FRONTEND
|
|
|
|
/**
|
|
* CI related FLAG
|
|
* Name: trt_ibuilder_cache
|
|
* Since Version: 2.5.0
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: This FLAG is only enabled when CI is running. If True, a persistent
|
|
* IBuilder is added to avoid TensorRT unload/reload kernels.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(trt_ibuilder_cache,
|
|
false,
|
|
"Add a persistent ibuilder.");
|
|
|
|
/**
|
|
* mmap_allocator related FLAG
|
|
* Name: use_shm_cache
|
|
* Since Version: 2.5.0
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: . If True, mmap_allocator will cache shm file to decrease munmap
|
|
* operation.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(use_shm_cache,
|
|
false,
|
|
"Use shm cache in mmap_allocator.");
|
|
|
|
/**
|
|
* mmap_allocator related FLAG
|
|
* Name: dataloader_use_file_descriptor
|
|
* Since Version: 2.6.2
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: . If True, mmap_allocator will use file descriptor to open shared
|
|
* memory operation.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(dataloader_use_file_descriptor,
|
|
false,
|
|
"Use file descriptor in mmap_allocator.");
|
|
|
|
/**
|
|
* Tensor operants related FLAG
|
|
* Name: tensor_operants_mode
|
|
* Since Version: 2.5.0
|
|
* Value Range: string, {eager, phi, static}
|
|
* default=eager
|
|
* Example:
|
|
* Note: For switching tensor operants mode of PaddlePaddle.
|
|
* - eager mode: tensor operants with dygraph autograd;
|
|
* - phi mode: tensor operants with only phi forward API;
|
|
* - static mode: tensor operants within static graph.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_string(tensor_operants_mode,
|
|
"eager",
|
|
"Tensor operants mode");
|
|
|
|
/**
|
|
* Using PIR in executor FLAG
|
|
* Name: enable_pir_in_executor
|
|
* Since Version: 2.6.0
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: If True, executor will use PIR
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(enable_pir_in_executor,
|
|
false,
|
|
"Enable PIR in executor");
|
|
|
|
/**
|
|
* Using PIR API in Python
|
|
* Name: enable_custom_engine
|
|
* Since Version: 3.0.0
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: If True, CustomDevice can use subgraph engine optimize
|
|
*/
|
|
PHI_DEFINE_EXPORTED_string(enable_custom_engine,
|
|
"",
|
|
"Set CustomDevice subgraph engine translate pass");
|
|
|
|
/**
|
|
* Using PIR by translating legacy program to pir program
|
|
* for dy2st mode FLAG
|
|
* Name: enable_pir_in_executor
|
|
* Since Version: 2.6.0
|
|
* Value Range: bool, default=true
|
|
* Example:
|
|
* Note: If True, program will be translated to pir program
|
|
* and then run in executor for dy2st mode.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(enable_pir_with_pt_in_dy2st,
|
|
true,
|
|
"Enable PIR in executor");
|
|
|
|
PHI_DEFINE_EXPORTED_string(logging_pir_py_code_dir,
|
|
"",
|
|
"the logging directory to save pir py code");
|
|
|
|
PHI_DEFINE_EXPORTED_int64(
|
|
logging_pir_py_code_int_tensor_element_limit,
|
|
2048,
|
|
"dump int tensor data if its element count less than this limit.");
|
|
|
|
PHI_DEFINE_EXPORTED_bool(logging_trunc_pir_py_code,
|
|
true,
|
|
"whether truncate the logging files under directory "
|
|
"FLAGS_logging_pir_py_code_dir");
|
|
|
|
PHI_DEFINE_EXPORTED_bool(logging_pir_py_code_dump_symbolic_dims,
|
|
false,
|
|
"whether dump symbolic dims into pir py code.");
|
|
|
|
/**
|
|
* Enable Abstract Pass
|
|
* Name: enable_ap
|
|
* Since Version: 3.0.0
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: If True, abstract pass will be enabled to optimize performance.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(enable_ap, false, "whether enable abstract pass.");
|
|
|
|
/**
|
|
* Enable Classic fused_gemm_epilogue when Abstract Pass is enabled.
|
|
* Name: ap_enable_classic_gemm_epilogue
|
|
* Since Version: 3.0.0
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: If True, classic fused_gemm_epilogue will be enabled.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(ap_enable_classic_gemm_epilogue,
|
|
false,
|
|
"whether enable classic fused_gemm_epilogue when "
|
|
"abstract pass is enabled.");
|
|
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
pir_interpreter_record_stream_for_gc_cache,
|
|
false,
|
|
"whether PirInterpreter::RecordStreamForGC use cache strategy.");
|
|
|
|
/**
|
|
* Using PIR API in Python
|
|
* Name: enable_pir_api
|
|
* Since Version: 2.6.0
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: If True, PIR API will be used in Python
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(enable_pir_api, true, "Enable PIR API in Python");
|
|
|
|
/**
|
|
* Using PIR in executor FLAG
|
|
* Name: enable_pir_in_executor_trace_run
|
|
* Since Version: 2.6.0
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: If True, executor will use PIR and run in beta version by for trace
|
|
* version.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(enable_pir_in_executor_trace_run,
|
|
false,
|
|
"Enable PIR in executor");
|
|
|
|
/**
|
|
* Apply inplace pass to PIR FLAG
|
|
* Name: pir_apply_inplace_pass
|
|
* Since Version: 2.6.0
|
|
* Value Range: bool, default=true
|
|
* Example:
|
|
* Note: If True, will apply inplace pass to PIR.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(pir_apply_inplace_pass,
|
|
true,
|
|
"Whether to apply inplace pass on lowering "
|
|
"::pir::Program to Kernel Dialect");
|
|
|
|
PHI_DEFINE_EXPORTED_string(
|
|
ir_inplace_kernel_blacklist,
|
|
"",
|
|
"It controls the ir inplace kernel subset do not use.");
|
|
|
|
PHI_DEFINE_EXPORTED_bool(enable_record_memory, false, "Enable memory recorder");
|
|
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
eager_delete_scope,
|
|
true,
|
|
"Delete local scope eagerly. It will reduce GPU memory usage but "
|
|
"slow down the destruction of variables.(around 1% performance harm)");
|
|
|
|
// Used to filter events, works like glog VLOG(level).
|
|
// RecordEvent will works if host_trace_level >= level.
|
|
PHI_DEFINE_EXPORTED_int64(host_trace_level,
|
|
1,
|
|
"RecordEvent will works "
|
|
"if host_trace_level >= level.");
|
|
|
|
PHI_DEFINE_EXPORTED_int32(
|
|
multiple_of_cupti_buffer_size,
|
|
1,
|
|
"Multiple of the CUPTI device buffer size. If the timestamps have "
|
|
"been dropped when you are profiling, try increasing this value.");
|
|
|
|
PHI_DEFINE_EXPORTED_bool(print_ir, false, "Whether print ir debug str.");
|
|
|
|
// Whether to enable CINN kernel cache
|
|
// When enabled, generated files will be saved under:
|
|
// FLAGS_cinn_kernel_cache_save_path/virtual_device_id/HostFuncName__fushionHashKey
|
|
// Files:
|
|
// - cinn_cuda_kernel.fatbin (CUDA kernels)
|
|
// - cinn_cache.so (host modules)
|
|
// This cache can accelerate subsequent CINN compilations
|
|
PHI_DEFINE_EXPORTED_bool(enable_cinn_kernel_cache,
|
|
false,
|
|
"Whether enable cinn kernel cache.");
|
|
|
|
// Specify the directory path of generated cinn kernel cache
|
|
PHI_DEFINE_EXPORTED_string(
|
|
cinn_kernel_cache_save_path,
|
|
"/tmp/cinn/",
|
|
"Specify the directory path of generated cinn kernel cache.");
|
|
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
comp_skip_default_ops,
|
|
true,
|
|
"Whether to skip decomposing comp op in default list (decomp_trans.cc).");
|
|
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
prim_skip_dynamic,
|
|
true,
|
|
"Whether to skip decomposing vjp op with dynamic shape.");
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
prim_enable_dynamic,
|
|
false,
|
|
"Whether to enable decomposing composite op with dynamic shape.");
|
|
PHI_DEFINE_EXPORTED_bool(prim_check_ops,
|
|
false,
|
|
"Whether to check the decomposed program, to ensure "
|
|
"that only the primitive operator is present.");
|
|
|
|
// PIR and prim related FLAG
|
|
// Example: FLAGS_prim_forward_blacklist="pd_op.relu;pd_op.mean" would block
|
|
// `relu` and `mean` two ops in decompsition.
|
|
PHI_DEFINE_EXPORTED_string(
|
|
prim_forward_blacklist,
|
|
"",
|
|
"It controls the forward blacklist ops not to be decomposed.");
|
|
PHI_DEFINE_EXPORTED_bool(prim_forward, false, "enable prim_forward or not");
|
|
PHI_DEFINE_EXPORTED_bool(prim_backward, false, "enable prim_backward or not");
|
|
|
|
/**
|
|
* Remove some redundant information when printing the pir program
|
|
* Name: disable_logging_op_attr_list
|
|
* Since Version: 3.0.0
|
|
* Value Range: string, default=""
|
|
* Example: FLAGS_disable_logging_op_attr_list="op_dist_attr"
|
|
* Note: If "dtype", "dtype:float32" will be deleted in Pir program
|
|
*/
|
|
PHI_DEFINE_EXPORTED_string(
|
|
disable_logging_op_attr_list,
|
|
"",
|
|
"Remove some redundant information when printing the pir program");
|
|
|
|
#ifdef _WIN32
|
|
PHI_DEFINE_EXPORTED_string(
|
|
flagcx_dir, // NOLINT
|
|
"",
|
|
"Specify path for loading libflagcx.so. For instance, "
|
|
"For instance, /usr/local/flagcx/lib. If default, "
|
|
"dlopen will search flagcx from LD_LIBRARY_PATH");
|
|
#endif
|
|
|
|
/**
|
|
* ProcessGroupNCCL related FLAG
|
|
* Name: enable_async_trace
|
|
* Since Version:
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: enable nccl async trace.
|
|
*/
|
|
|
|
PHI_DEFINE_EXPORTED_bool(enable_async_trace,
|
|
false,
|
|
"enable collective async trace");
|
|
|
|
PHI_DEFINE_EXPORTED_int32(async_trace_count, 5, "collective async trace count");
|
|
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
use_auto_growth_pinned_allocator,
|
|
false,
|
|
"Whether to use the auto_growth CUDA pinned allocator.");
|
|
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
sync_after_alloc,
|
|
false,
|
|
"Whether to perform device synchronization after allocation.");
|
|
PHI_DEFINE_EXPORTED_int64(alloc_fill_value,
|
|
-1,
|
|
"Whether to fill fixed value after allocation. "
|
|
"This is useful for debugging.");
|
|
|
|
PHI_DEFINE_EXPORTED_int64(
|
|
pir_broadcast_tree_limit,
|
|
32,
|
|
"Maximum number of broadcast nodes allowed in a tree");
|
|
|
|
PHI_DEFINE_EXPORTED_string(
|
|
nvidia_package_dir, // NOLINT
|
|
"",
|
|
"Specify root dir path for nvidia site-package, such as "
|
|
"python3.10/site-packages/nvidia");
|
|
|
|
PHI_DEFINE_EXPORTED_string(
|
|
cuda_cccl_dir, // NOLINT
|
|
"",
|
|
"Specify root dir path for nv/target, such as "
|
|
"python3.10/site-packages/nvidia/cuda_cccl/include/");
|
|
|
|
PHI_DEFINE_EXPORTED_string(
|
|
cudnn_dir, // NOLINT
|
|
"",
|
|
"Specify path for loading libcudnn.so. For instance, "
|
|
"/usr/local/cudnn/lib. If empty [default], dlopen "
|
|
"will search cudnn from LD_LIBRARY_PATH");
|
|
|
|
PHI_DEFINE_EXPORTED_string( // NOLINT
|
|
cuda_dir,
|
|
"",
|
|
"Specify path for loading cuda library, such as libcublas, libcublasLt "
|
|
"libcurand, libcusolver. For instance, /usr/local/cuda/lib64. "
|
|
"If default, dlopen will search cuda from LD_LIBRARY_PATH");
|
|
|
|
PHI_DEFINE_EXPORTED_string(cublas_dir, // NOLINT
|
|
"",
|
|
"Specify path for loading libcublas.so.");
|
|
PHI_DEFINE_EXPORTED_string(
|
|
nccl_dir, // NOLINT
|
|
"",
|
|
"Specify path for loading nccl library, such as libnccl.so. "
|
|
"For instance, /usr/local/cuda/lib64. If default, "
|
|
"dlopen will search cuda from LD_LIBRARY_PATH");
|
|
|
|
PHI_DEFINE_EXPORTED_string(cupti_dir,
|
|
"",
|
|
"Specify path for loading cupti.so."); // NOLINT
|
|
|
|
PHI_DEFINE_EXPORTED_string( // NOLINT
|
|
tensorrt_dir,
|
|
"",
|
|
"Specify path for loading tensorrt library, such as libnvinfer.so.");
|
|
|
|
PHI_DEFINE_EXPORTED_string(
|
|
mklml_dir,
|
|
"",
|
|
"Specify path for loading libmklml_intel.so."); // NOLINT
|
|
|
|
PHI_DEFINE_EXPORTED_string(hml_dir,
|
|
"",
|
|
"Specify path for loading libhml_rt.so."); // NOLINT
|
|
|
|
PHI_DEFINE_EXPORTED_string(lapack_dir,
|
|
"",
|
|
"Specify path for loading liblapack.so."); // NOLINT
|
|
|
|
#ifdef PADDLE_WITH_MAGMA
|
|
PHI_DEFINE_EXPORTED_string(magma_dir,
|
|
"",
|
|
"Specify path for loading libmagma.so."); // NOLINT
|
|
#endif
|
|
|
|
/**
|
|
* Apply check infer symbolic pass FLAG
|
|
* Name: check_infer_symbolic_pass
|
|
* Since Version: 3.0.0
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: If True, will apply check_infer_symbolic pass.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
check_infer_symbolic,
|
|
false,
|
|
"Whether to use check_infer_symbolic_pass. This pass can check "
|
|
"the symbolic inference accuracy by comparing the the value "
|
|
"shape between dynamic shape and static shape.");
|
|
|
|
/**
|
|
* Name: manually_trans_conv_filter
|
|
* Since Version: 3.0.0 Beta
|
|
* Value Range: bool, default=false
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
manually_trans_conv_filter,
|
|
false,
|
|
"Whether to manually transpose the filter of conv2d. This pass can "
|
|
"accelerate the performance of conv2d since it transpose filter ahead");
|
|
|
|
/**
|
|
* Apply CSE optimize pass in Dy2St
|
|
* Name: enable_cse_in_dy2st
|
|
* Since Version: 3.0.0
|
|
* Value Range: bool, default=true
|
|
* Example:
|
|
* Note: If True, will apply CSE optimize pass in Dy2St.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(enable_cse_in_dy2st,
|
|
true,
|
|
"Apply CSE optimize pass in Dy2St");
|
|
|
|
/**
|
|
* Run Dy2St in specialized device
|
|
* Name: specialize_device_in_dy2st
|
|
* Since Version: 3.1.0 Beta
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: If True, will specialize device for DataOp's place based on input
|
|
* tensor's place before lowering.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(specialize_device_in_dy2st,
|
|
false,
|
|
"Run Dy2St in specialized device");
|
|
|
|
/**
|
|
* Persist parameters in scope to avoid the overhead of
|
|
* repeated sharing during each execution period.
|
|
* Name: parameters_persistent_mode_in_dy2st
|
|
* Since Version: 3.1.1
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: If True, will persist parameters in scope to avoid the overhead of
|
|
* repeated sharing during each execution period.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(parameters_persistent_mode_in_dy2st,
|
|
false,
|
|
"Persist parameters in scope to avoid the overhead of "
|
|
"repeated sharing during each execution period.");
|
|
|
|
/**
|
|
* Max count of eliminate redundant computation in CSE, for debug usage
|
|
* Name: cse_max_count
|
|
* Since Version: 3.0.0
|
|
* Value Range: int32, default=-1
|
|
* Example:
|
|
* Note: If -1, will not limit the max count of eliminate redundant computation.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_int32(
|
|
cse_max_count,
|
|
-1,
|
|
"Max count of eliminate redundant computation in CSE, for debug usage");
|
|
|
|
/**
|
|
* Apply global search in cublaslt gemm
|
|
* Name: enable_blaslt_global_search
|
|
* Since Version: 3.0.0
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: If True, will apply global search in blaslt.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(enable_blaslt_global_search,
|
|
false,
|
|
"Whether to use global search in cublaslt gemm.");
|
|
|
|
/**
|
|
* Apply load search configs file generated by offline in cublaslt gemm
|
|
* Name: cublaslt_device_best_config
|
|
* Since Version: 3.0.0
|
|
* Value Range: string, default="", a absolute file path
|
|
* Example:
|
|
* Note: If set this flag, will load search configs file generated by offline.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_string(cublaslt_device_best_config,
|
|
"",
|
|
"Whether to load search configs file generated by "
|
|
"offline in cublaslt gemm.");
|
|
|
|
/**
|
|
* Whether to use xqa optim in block_multihead_attention kernel (GQA)
|
|
* Name: use_xqa_optim
|
|
* Since Version: 3.0.0
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: If True, will use xqa optim in block_multihead_attention kernel (GQA).
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
use_xqa_optim,
|
|
false,
|
|
"Enable xqa optim in block_multihead_attention kernel (GQA).");
|
|
|
|
/**
|
|
* Whether to use FP32 for accumulation of QK output in
|
|
* block_multihead_attention kernel(fp16)
|
|
* Name: blha_use_fp32_qk_sum Since Version: 3.0.0
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: If TRUE, FP32 will be used for accumulation of the QK output
|
|
* in block_multihead_attention kernel(fp16) .
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(blha_use_fp32_qk_sum,
|
|
false,
|
|
"use FP32 for accumulation of QK output in "
|
|
"block_multihead_attention kernel(fp16).");
|
|
|
|
PHI_DEFINE_EXPORTED_bool(cuda_core_int8_gemm,
|
|
false,
|
|
"Enable speed up int8 gemm calculations when m<=4");
|
|
|
|
PHI_DEFINE_EXPORTED_string(
|
|
mkl_dir, // NOLINT
|
|
"",
|
|
"Specify path for loading libmkl_rt.so. "
|
|
"For instance, /opt/intel/oneapi/mkl/latest/lib/intel64/."
|
|
"If default, "
|
|
"dlopen will search mkl from LD_LIBRARY_PATH");
|
|
|
|
PHI_DEFINE_EXPORTED_string(op_dir, // NOLINT
|
|
"",
|
|
"Specify path for loading user-defined op library.");
|
|
|
|
PHI_DEFINE_EXPORTED_string(cusparselt_dir, // NOLINT
|
|
"",
|
|
"Specify path for loading libcusparseLt.so.");
|
|
PHI_DEFINE_EXPORTED_string(curand_dir, // NOLINT
|
|
"",
|
|
"Specify path for loading libcurand.so.10.");
|
|
PHI_DEFINE_EXPORTED_string(cusolver_dir, // NOLINT
|
|
"",
|
|
"Specify path for loading libcusolver.so.*.");
|
|
PHI_DEFINE_EXPORTED_string(cusparse_dir, // NOLINT
|
|
"",
|
|
"Specify path for loading libcusparse.so.*.");
|
|
PHI_DEFINE_EXPORTED_string(
|
|
win_cuda_bin_dir, // NOLINT
|
|
"",
|
|
"Specify path for loading *.dll about cuda on windows");
|
|
|
|
/**
|
|
* Collect shapes of value for TensorRTEngine
|
|
* Name: enable_collect_shape
|
|
* Since Version: 3.0.0
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: If True, will collect shapes of value when run executor.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(enable_collect_shape,
|
|
false,
|
|
"Collect shapes of value for TensorRTEngine");
|
|
// Example: FLAGS_accuracy_check_atol=1e-3 would set the atol to 1e-3.
|
|
PHI_DEFINE_EXPORTED_double(accuracy_check_atol_fp32,
|
|
1e-6,
|
|
"It controls the atol of accuracy_check op");
|
|
|
|
// Example: FLAGS_accuracy_check_rtol=1e-3 would set the rtol to 1e-3.
|
|
PHI_DEFINE_EXPORTED_double(accuracy_check_rtol_fp32,
|
|
1e-6,
|
|
"It controls the rtol of accuracy_check op");
|
|
|
|
// Example: FLAGS_accuracy_check_atol=1e-3 would set the atol to 1e-3.
|
|
PHI_DEFINE_EXPORTED_double(accuracy_check_atol_fp16,
|
|
1e-3,
|
|
"It controls the atol of accuracy_check op");
|
|
|
|
// Example: FLAGS_accuracy_check_rtol=1e-3 would set the rtol to 1e-3.
|
|
PHI_DEFINE_EXPORTED_double(accuracy_check_rtol_fp16,
|
|
1e-3,
|
|
"It controls the rtol of accuracy_check op");
|
|
|
|
// Example: FLAGS_accuracy_check_atol=1e-3 would set the atol to 1e-3.
|
|
PHI_DEFINE_EXPORTED_double(accuracy_check_atol_bf16,
|
|
1e-3,
|
|
"It controls the atol of accuracy_check op");
|
|
|
|
// Example: FLAGS_accuracy_check_rtol=1e-3 would set the rtol to 1e-3.
|
|
PHI_DEFINE_EXPORTED_double(accuracy_check_rtol_bf16,
|
|
1e-3,
|
|
"It controls the rtol of accuracy_check op");
|
|
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
pinned_memory_as_cpu_backend,
|
|
false,
|
|
"Whether use CPU backend, when tensor is pinned_memory.");
|
|
|
|
PHI_DEFINE_EXPORTED_int32(
|
|
trt_min_group_size,
|
|
3,
|
|
"when the trt subgraph size is not larger than `trt_min_group_size`, the "
|
|
"group will fallback to original graph.");
|
|
|
|
/**
|
|
* Enable align mode for auto parallel. If True, the loss results will aligned
|
|
* with dynamic manual-parallel.
|
|
* Name: enable_auto_parallel_align_mode
|
|
* Since Version: 3.0.0
|
|
* Value Range: bool, default=false
|
|
* Note: Just used for testing. Do not use in model training.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(enable_auto_parallel_align_mode,
|
|
false,
|
|
"Enable align mode for auto parallel");
|
|
|
|
/**
|
|
* fused_multi_transformer_op related FLAG
|
|
* Name: fused_multi_transformer_op_use_mbfmha
|
|
* Since Version: 2.5.0
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: Enable flash decoding for mmha kernels in fused_multi_transformer_op.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(fused_multi_transformer_op_use_mbfmha,
|
|
false,
|
|
"Enable flash decoding for mmha kernels in "
|
|
"fused_multi_transformer_op.");
|
|
|
|
PHI_DEFINE_EXPORTED_int64(multi_block_attention_min_partition_size,
|
|
1024,
|
|
"The minimum partition size for flash decoding");
|
|
|
|
PHI_DEFINE_EXPORTED_bool(save_cf_stack_op,
|
|
false,
|
|
"Save cf stack op for higher-order derivatives.");
|
|
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
enable_auto_growth_allocator_add_lock,
|
|
false,
|
|
"Enable add lock when call AutoGrowthBestFitAllocator::ReleaseImpl");
|
|
|
|
PHI_DEFINE_EXPORTED_int64(offload_retry_times, -1, "Offload retry times.");
|
|
|
|
PHI_DEFINE_EXPORTED_bool(offload_inplace_tensor,
|
|
true,
|
|
"Whether to allow offload inplace tensor.");
|
|
|
|
PHI_DEFINE_EXPORTED_bool(print_offload_info,
|
|
false,
|
|
"Whether to print the offload information.");
|
|
|
|
#if defined(PADDLE_WITH_CUDA) || defined(PADDLE_WITH_HIP)
|
|
/**
|
|
* FlashAttention related FLAG
|
|
* Name: FLAGS_flash_attn_version
|
|
* Value Range: int32, default=2
|
|
* Example:
|
|
* Note: Specify the version of FlashAttention to use, options are 2 or 3.
|
|
* Version 2 requires Ampere architecture or higher,
|
|
* while version 3 requires Hopper architecture.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_int32(
|
|
flash_attn_version,
|
|
2,
|
|
"Specify the version of FlashAttention to use, options are 2 or 3. "
|
|
"Version 2 requires Ampere architecture or higher, "
|
|
"while version 3 requires Hopper architecture.");
|
|
#endif
|
|
|
|
/**
|
|
* Operator related FLAG
|
|
* Name: FLAGS_check_cuda_error
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: Used to debug. Checking whether CUDA error occurred or not.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(check_cuda_error,
|
|
false,
|
|
"Checking whether CUDA error occurred or not.");
|
|
|
|
/**
|
|
* Stream related FLAG
|
|
* Name: FLAGS_use_default_stream
|
|
* Since Version: 3.1.1
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: Whether use default stream.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(use_default_stream,
|
|
false,
|
|
"Whether use default stream.");
|
|
|
|
/**
|
|
* Stride_Compute_Kernel related FLAG
|
|
* Name: FLAGS_use_stride_compute_kernel
|
|
* Since Version: 3.2
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: Whether use Stride_Compute_Kernel.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(use_stride_compute_kernel,
|
|
true,
|
|
"Whether use Stride_Compute_Kernel.");
|
|
|
|
/**
|
|
* Allocator related FLAG
|
|
* Name: FLAGS_deep_ep_comm_prealloc_in_mb
|
|
* Since Version: 3.2
|
|
* Value Range: int64, default=0
|
|
* Example:
|
|
* Note: Whether use prealloc for deepep communication.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_int64(deep_ep_comm_prealloc_in_mb,
|
|
0,
|
|
"Whether use prealloc for deepep communication.");
|
|
|
|
/**
|
|
* Stride_Compute_Kernel related FLAG
|
|
* Name: FLAGS_force_stride_compute_contig_out
|
|
* Since Version: 3.2.1
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: Whether force Stride_Compute_Kernel output contiguous.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
force_stride_compute_contig_out,
|
|
false,
|
|
"Whether force Stride_Compute_Kernel output contiguous.");
|
|
|
|
/**
|
|
* Torch Compatible related FLAG
|
|
* Name: FLAGS_use_accuracy_compatible_kernel
|
|
* Since Version: 3.2.2
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: Whether use torch compatible version kernel.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(use_accuracy_compatible_kernel,
|
|
false,
|
|
"Whether use torch compatible version kernel.");
|
|
|
|
/**
|
|
* LayerNorm Apex Compatible related FLAG
|
|
* Name: FLAGS_use_apex_layer_norm_kernel
|
|
* Since Version: 3.5.0
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: Whether use apex compatible version LayerNorm kernel.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(
|
|
use_apex_layer_norm_kernel,
|
|
false,
|
|
"Whether use apex compatible version LayerNorm kernel.");
|
|
|
|
/**
|
|
* Legacy gemm related FLAG
|
|
* Name: FLAGS_use_legacy_gemm
|
|
* Since Version: 3.2.2
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: Whether use legacy gemm kernel.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(use_legacy_gemm,
|
|
false,
|
|
"Whether use legacy gemm dispatch logics.");
|
|
|
|
/**
|
|
* Legacy gemm related FLAG
|
|
* Name: FLAGS_use_legacy_linear
|
|
* Since Version: 3.3.1
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: Whether use legacy linear kernel.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(use_legacy_linear,
|
|
false,
|
|
"Whether use legacy linear dispatch logics.");
|
|
|
|
/**
|
|
* Allocator Compact related FLAG
|
|
* Name: FLAGS_enable_compact_mem
|
|
* Since Version: 3.3
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: whether start compact memory.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(enable_compact_mem,
|
|
false,
|
|
"whether start compact memory or not.");
|
|
/**
|
|
* Allocator Compact related FLAG
|
|
* Name: FLAGS_max_reserved_threshold_in_gb
|
|
* Since Version: 3.3
|
|
* Value Range: int64, default=70
|
|
* Example:
|
|
* Note: Threshold (GB) used in compact memory. Only reserved_mem greater than
|
|
* threshold may trigger defragmentation.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_int64(
|
|
max_reserved_threshold_in_gb,
|
|
70,
|
|
"Threshold (GB) used in compact memory. Only reserved_mem greater than "
|
|
"threshold may trigger defragmentation.");
|
|
|
|
/**
|
|
* Allocator Compact related FLAG
|
|
* Name: FLAGS_cur_allocated_threshold_in_gb
|
|
* Since Version: 3.3
|
|
* Value Range: int64, default=70
|
|
* Example:
|
|
* Note: Threshold (GB) used in compact memory. Only reserved_mem greater than
|
|
* threshold may trigger defragmentation.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_int64(
|
|
cur_allocated_threshold_in_gb,
|
|
55,
|
|
"Threshold (GB) used in compact memory. Only reserved_mem greater than "
|
|
"threshold may trigger defragmentation.");
|
|
|
|
/**
|
|
* Allocator Compact related FLAG
|
|
* Name: FLAGS_try_allocate
|
|
* Since Version: 3.3
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: whether start compact memory.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(try_allocate,
|
|
false,
|
|
"whether use try allocate in memory compact.");
|
|
|
|
/**
|
|
* Allocator Compact related FLAG
|
|
* Name: FLAGS_record_alloc_event
|
|
* Since Version: 3.3
|
|
* Value Range: bool, default=false
|
|
* Example:
|
|
* Note: whether record allocate event.
|
|
*/
|
|
PHI_DEFINE_EXPORTED_bool(record_alloc_event,
|
|
false,
|
|
"whether record allocate event.");
|