diff --git a/doc/fluid/api/index_en.rst b/doc/fluid/api/index_en.rst index b1a633f10270da2f045230f80132db560018426a..ff42a292f6269023a9d19a96c948718e18739207 100644 --- a/doc/fluid/api/index_en.rst +++ b/doc/fluid/api/index_en.rst @@ -5,6 +5,7 @@ API Reference .. toctree:: :maxdepth: 1 + ../flags_en.rst ../api_guides/index_en.rst fluid.rst average.rst diff --git a/doc/fluid/api_cn/index_cn.rst b/doc/fluid/api_cn/index_cn.rst index f5c38bc9d6b5e1b1dc269724e78ee66b767ea23b..fa2c190c84bd3f38e4faee4c53a92a1c7e83aa87 100644 --- a/doc/fluid/api_cn/index_cn.rst +++ b/doc/fluid/api_cn/index_cn.rst @@ -5,6 +5,7 @@ API .. toctree:: :maxdepth: 1 + ../flags_cn.rst ../api_guides/index_cn.rst fluid_cn.rst average_cn.rst diff --git a/doc/fluid/flags_cn.rst b/doc/fluid/flags_cn.rst new file mode 100755 index 0000000000000000000000000000000000000000..f19720389e99792ba8e2ab4b68f9ba431e6696b2 --- /dev/null +++ b/doc/fluid/flags_cn.rst @@ -0,0 +1,877 @@ + +环境变量FLAGS +================== + + +allocator_strategy +******************** +(始于1.2) + +用于选择PaddlePaddle的分配器策略。 分配器策略正在开发中,且非legacy分配器尚未稳定。 + +取值范围 +--------------- +String型,['legacy', 'naive_best_fit']中的一个。缺省值为'legacy'。 + +示例 +-------- +FLAGS_allocator_strategy=legacy - 使用legacy分配器。 + +FLAGS_allocator_strategy=naive_best_fit - 使用新设计的分配器。 + + +benchmark +******************** +(始于0.12.0) + +用于基准测试。设置后,它将使局域删除同步,添加一些内存使用日志,并在内核启动后同步所有cuda内核。 + +取值范围 +--------------- +Bool型,缺省值为False。 + +示例 +------- +FLAGS_benchmark=True - 同步以测试基准。 + + +check_nan_inf +******************** +(始于0.13.0) + +用于调试。它用于检查Operator的结果是否含有Nan或Inf。 + +取值范围 +--------------- +Bool型,缺省值为False。 + +示例 +------- +FLAGS_check_nan_inf=True - 检查Operator的结果是否含有Nan或Inf。 + + +communicator_fake_rpc +********************** +(始于1.5.0) + +当设为True时,通信器不会实际进行rpc调用,因此速度不会受到网络通信的影响。该flag用于调试。 + +取值范围 +--------------- +Bool型,缺省值为False。 + +示例 +------- +FLAGS_communicator_fake_rpc=True - 启用通信器fake模式。 + +注释 +------- +该flag仅用于paddlepaddle的开发者,普通用户不应对其设置。 + + +communicator_independent_recv_thread +************************************** +(始于1.5.0) + +使用独立线程以从参数服务器接收参数。 + +取值范围 +--------------- +Bool型,缺省值为True。 + +示例 +------- +FLAGS_communicator_independent_recv_thread=True - 使用独立线程以从参数服务器接收参数。 + +注释 +------- +开发者使用该flag进行框架的调试与优化,普通用户不应对其设置。 + + +communicator_max_merge_var_num +************************************** +(始于1.5.0) + +要通过通信器合并为一个梯度并发送的最大梯度数。训练器将所有梯度放入队列,然后通信器将从队列中取出梯度并在合并后发送。 + +取值范围 +--------------- +Int32型,缺省值为20。 + +示例 +------- +FLAGS_communicator_max_merge_var_num=16 - 将要通过通信器合并为一个梯度并发送的最大梯度数设为16。 + +注释 +------- +该flag和训练器线程数有着密切关联,缺省值应和线程数一致。 + + +communicator_min_send_grad_num_before_recv +******************************************* +(始于1.5.0) + +在通信器中,有一个发送线程向参数服务器发送梯度,一个接收线程从参数服务器接收参数,且它们之间彼此独立。该flag用于控制接收线程的频率。 仅当发送线程至少发送communicator_min_send_grad_num_before_recv数量的梯度时,接收线程才会从参数服务器接收参数。 + +取值范围 +--------------- +Int32型,缺省值为20。 + +示例 +------- +FLAGS_communicator_min_send_grad_num_before_recv=10 - 在接收线程从参数服务器接收参数之前,发送线程发送的梯度数为10。 + +注释 +------- +由于该flag和训练器的训练线程数强相关,而每个训练线程都会发送其梯度,所以缺省值应和线程数一致。 + + +communicator_send_queue_size +******************************************* +(始于1.5.0) + +每个梯度的队列大小。训练器将梯度放入队列,然后通信器将其从队列中取出并发送出去。 当通信器很慢时,队列可能会满,训练器在队列有空间之前被持续阻塞。它用于避免训练比通信快得多,以致太多的梯度没有及时发出的情况。 + +取值范围 +--------------- +Int32型,缺省值为20。 + +示例 +------- +FLAGS_communicator_send_queue_size=10 - 设置每个梯度的队列大小为10。 + +注释 +------- +该flag会影响训练速度,若队列大小过大,速度会变快但结果可能会变差。 + + +communicator_send_wait_times +******************************************* +(始于1.5.0) + +合并数没有达到max_merge_var_num的情况下发送线程等待的次数。 + +取值范围 +--------------- +Int32型,缺省值为5。 + +示例 +------- +FLAGS_communicator_send_wait_times=5 - 将合并数没有达到max_merge_var_num的情况下发送线程等待的次数设为5。 + + +communicator_thread_pool_size +******************************************* +(始于1.5.0) + +设置用于发送梯度和接收参数的线程池大小。 + +取值范围 +--------------- +Int32型,缺省值为5。 + +示例 +------- +FLAGS_communicator_thread_pool_size=10 - 设置线程池大小为10。 + +注释 +------- +大部分情况下,用户不需要设置该flag。 + + +conv_workspace_size_limit +******************************************* +(始于0.13.0) + +用于选择cuDNN卷积算法的工作区限制大小(单位为MB)。cuDNN的内部函数在这个内存限制范围内获得速度最快的匹配算法。通常,在较大的工作区内可以选择更快的算法,但同时也会显著增加内存空间。用户需要在内存和速度之间进行权衡。 + +取值范围 +--------------- +Uint64型,缺省值为4096。即4G内存工作区。 + +示例 +------- +FLAGS_conv_workspace_size_limit=1024 - 将用于选择cuDNN卷积算法的工作区限制大小设置为1024MB。 + + +cpu_deterministic +******************************************* +(始于0.15.0) + +该flag用于调试。它表示是否在CPU侧确定计算结果。 在某些情况下,不同求和次序的结果可能不同,例如,`a+b+c+d` 的结果可能与 `c+a+b+d` 的结果不同。 + +取值范围 +--------------- +Bool型,缺省值为False。 + +示例 +------- +FLAGS_cpu_deterministic=True - 在CPU侧确定计算结果。 + + +cudnn_batchnorm_spatial_persistent +******************************************* +(始于1.4.0) + +表示是否在batchnorm中使用新的批量标准化模式CUDNN_BATCHNORM_SPATIAL_PERSISTENT函数。 + +取值范围 +--------------- +Bool型,缺省值为False。 + +示例 +------- +FLAGS_cudnn_batchnorm_spatial_persistent=True - 开启CUDNN_BATCHNORM_SPATIAL_PERSISTENT模式。 + +注释 +------- +此模式在某些任务中可以更快,因为将为CUDNN_DATA_FLOAT和CUDNN_DATA_HALF数据类型选择优化路径。我们默认将其设置为False的原因是此模式可能使用原子整数缩减(scaled atomic integer reduction)而导致某些输入数据范围的数字溢出。 + + +cudnn_deterministic +******************************************* +(始于0.13.0) + +cuDNN对于同一操作有几种算法,一些算法结果是非确定性的,如卷积算法。该flag用于调试。它表示是否选择cuDNN中的确定性函数。 + +取值范围 +--------------- +Bool型,缺省值为False。 + +示例 +------- +FLAGS_cudnn_deterministic=True - 选择cuDNN中的确定性函数。 + +注释 +------- +现在,在cuDNN卷积和池化Operator中启用此flag。确定性算法速度可能较慢,因此该flag通常用于调试。 + + +cudnn_exhaustive_search +******************************************* +(始于1.2.0) + +表示是否使用穷举搜索方法来选择卷积算法。在cuDNN中有两种搜索方法,启发式搜索和穷举搜索。穷举搜索尝试所有cuDNN算法以选择其中最快的算法。此方法非常耗时,所选择的算法将针对给定的层规格进行缓存。 一旦更改了图层规格(如batch大小,feature map大小),它将再次搜索。 + +取值范围 +--------------- +Bool型,缺省值为False。 + +示例 +------- +FLAGS_cudnn_exhaustive_search=True - 使用穷举搜索方法来选择卷积算法。 + + +dist_threadpool_size +******************************************* +(始于1.0.0) + +控制用于分布式模块的线程数。如果未设置,则将其设置为硬线程。 + +取值范围 +--------------- +Int32型,缺省值为0。 + +示例 +------- +FLAGS_dist_threadpool_size=10 - 将用于分布式模块的最大线程数设为10。 + + +eager_delete_scope +******************************************* +(始于0.12.0) + +同步局域删除。设置后,它将降低GPU内存使用量,但同时也会减慢销毁变量的速度(性能损害约1%)。 + +取值范围 +--------------- +Bool型,缺省值为True。 + +示例 +------- +FLAGS_eager_delete_scope=True - 同步局域删除。 + + +eager_delete_tensor_gb +******************************************* +(始于1.0.0) + +表示是否使用垃圾回收策略来优化网络的内存使用。如果FLAGS_eager_delete_tensor_gb >= 0,则启用垃圾回收策略,并在运行网络时回收内存垃圾,这有利于节省内存使用量。它仅在您使用Executor运行程序、编译程序或使用并行数据编译程序时才有用。如果FLAGS_eager_delete_tensor_gb < 0,则禁用垃圾回收策略。垃圾回收器直到垃圾的内存大小达到FLAGS_eager_delete_tensor_gb GB时才会释放内存垃圾。 + +取值范围 +--------------- +Double型,单位为GB,缺省值为-1.0。 + +示例 +------- +FLAGS_eager_delete_tensor_gb=0.0 - 一旦不再使用即释放内存垃圾。 + +FLAGS_eager_delete_tensor_gb=1.0 - 垃圾占用内存大小达到1.0GB时释放内存垃圾。 + +FLAGS_eager_delete_tensor_gb=-1.0 - 禁用垃圾回收策略。 + +注释 +------- +建议用户在训练大型网络时设置FLAGS_eager_delete_tensor_gb=0.0以启用垃圾回收策略。 + + +enable_cublas_tensor_op_math +******************************************* +(始于1.2.0) + +该flag表示是否使用Tensor Core,但可能会因此降低部分精确度。 + +取值范围 +--------------- +Bool型,缺省值为False。 + +示例 +------- +enable_cublas_tensor_op_math=True - 使用Tensor Core。 + + +enable_inplace_whitelist +******************************************* +(始于1.4) + +该flag用于调试,在某些ops中禁止内存原位复用。设置后,一些ops不会执行原位复用优化以节省内存。这些Ops包括:sigmoid, exp, relu, tanh, sqrt, ceil, floor, reciprocal, relu6, soft_relu, hard_sigmoid, batch_norm, batch_norm_grad, sum, sum_grad, scale, reshape, elementwise_add, and elementwise_add_grad。 + +取值范围 +--------------- +Bool型,缺省值为False。 + +示例 +------- +FLAGS_enable_inplace_whitelist=True - 在特定op上禁止内存原位复用优化。 + + +enable_parallel_graph +******************************************* +(始于1.2.0) + +该flag用于ParallelExecutor以禁用并行图执行模式。 + +取值范围 +--------------- +Bool型,缺省值为False。 + +示例 +------- +FLAGS_enable_parallel_graph=False - 通过ParallelExecutor强制禁用并行图执行模式。 + + +enable_rpc_profiler +******************************************* +(始于1.0.0) + +是否启用RPC分析器。 + +取值范围 +---------------- +Bool型,缺省值为False。 + +示例 +------- +FLAGS_enable_rpc_profiler=True - 启用RPC分析器并在分析器文件中记录时间线。 + + +fast_eager_deletion_mode +******************************************* +(始于1.3) + +是否使用快速垃圾回收策略。如果未设置,则在CUDA内核结束时释放gpu内存。否则gpu内存将在CUDA内核尚未结束的情况下被释放,从而使垃圾回收策略更快。仅在启用垃圾回收策略时有效。 + +取值范围 +--------------- +Bool型,缺省值为True。 + +示例 +------- +FLAGS_fast_eager_deletion_mode=True - 启用快速垃圾回收策略。 + +FLAGS_fast_eager_deletion_mode=False - 禁用快速垃圾回收策略。 + + +fraction_of_gpu_memory_to_use +******************************************* +(始于1.2.0) + +表示分配的内存块占GPU总内存大小的比例。将来的内存使用将从该内存块分配。 如果内存块没有足够的gpu内存,将从gpu请求分配与内存块同样大小的新的内存块,直到gpu没有足够的内存为止。 + +取值范围 +--------------- +Uint64型,大于0,表示初始分配的内存块占GPU内存的比例。 + +示例 +------- +FLAGS_fraction_of_gpu_memory_to_use=0.1 - 分配总GPU内存大小的10%作为初始GPU 内存块。 + +注释 +------- +Windows系列平台会将FLAGS_fraction_of_gpu_memory_to_use默认设为0.5,Linux则会默认设为0.92。 + + +free_idle_memory +******************************************* +(始于0.15.0) + +是否在运行时释放从系统预分配的空闲内存。设置后,如果预分配的分配器中有太多空闲内存,则释放空闲内存。 + +取值范围 +--------------- +Bool型,缺省值为False。 + +示例 +------- +FLAGS_free_idle_memory=True - 空闲内存太多时释放。 + +FLAGS_free_idle_memory=False - 不释放空闲内存。 + + +fuse_parameter_groups_size +******************************************* +(始于1.4.0) + +FLAGS_fuse_parameter_groups_size表示每一组中参数的个数。缺省值是一个经验性的结果。如果fuse_parameter_groups_size为1,则表示组的大小和参数梯度的数目一致。 如果fuse_parameter_groups_size为-1,则表示只有一个组。缺省值为3,这只是一个经验值。 + +取值范围 +--------------- +Int32型,缺省值为3。 + +示例 +------- +FLAGS_fuse_parameter_groups_size=3 - 将单组参数的梯度大小设为3。 + + +fuse_parameter_memory_size +******************************************* +(始于1.5.0) + +FLAGS_fuse_parameter_memory_size表示作为通信调用输入(例如NCCLAllReduce)的单组参数梯度的上限内存大小。默认值为-1.0,表示不根据memory_size设置组。单位是MB。 + +取值范围 +--------------- +Double型,缺省值为-1.0。 + +示例 +------- +FLAGS_fuse_parameter_memory_size=16 - 将单组参数梯度的上限大小设为16MB。 + + +init_allocated_mem +******************************************* +(始于0.15.0) + +是否对分配的内存进行非零值初始化。该flag用于调试,以防止某些Ops假定已分配的内存都是初始化为零的。 + +取值范围 +--------------- +Bool型,缺省值为False。 + +示例 +------- +FLAGS_init_allocated_mem=True - 对分配的内存进行非零初始化。 + +FLAGS_init_allocated_mem=False - 不会对分配的内存进行非零初始化。 + + +initial_cpu_memory_in_mb +******************************************* +(始于0.14.0) + +初始PaddlePaddle分配器的CPU内存块大小,单位为MB。分配器将FLAGS_initial_cpu_memory_in_mb和FLAGS_fraction_of_cpu_memory_to_use*(总物理内存)的最小值作为内存块大小。 + +取值范围 +--------------- +Uint64型,缺省值为500,单位为MB。 + +示例 +------- +FLAGS_initial_cpu_memory_in_mb=100 - 在FLAGS_fraction_of_cpu_memory_to_use*(总物理内存)大于100MB的情况下,首次提出分配请求时,分配器预先分配100MB内存,并在预分配的内存耗尽时再次分配100MB。 + + +initial_gpu_memory_in_mb +******************************************* +(始于1.4.0) + +分配一块指定大小的GPU内存块。之后的内存使用将从该内存块分配。如果内存块没有足够的gpu内存,将从gpu请求大小为FLAGS_reallocate_gpu_memory_in_mb的内存块,直到gpu没有剩余内存为止。 + +取值范围 +--------------- +Uint64型,大于0,为初始GPU内存大小,单位为MB。 + +示例 +------- +FLAGS_initial_gpu_memory_in_mb=4096 - 分配4GB作为初始GPU内存块大小。 + +注释 +------- +如果设置该flag,则FLAGS_fraction_of_gpu_memory_to_use设置的内存大小将被该flag覆盖。如果未设置该flag,PaddlePaddle将使用FLAGS_fraction_of_gpu_memory_to_use分配GPU内存。 + + +inner_op_parallelism +******************************************* +(始于1.3.0) + +大多数Operators都在单线程模式下工作,但对于某些Operators,使用多线程更合适。 例如,优化稀疏梯度的优化Op使用多线程工作会更快。该flag用于设置Op内的线程数。 + +取值范围 +--------------- +Int32型,缺省值为0,这意味着operator将不会在多线程模式下运行。 + +示例 +------- +FLAGS_inner_op_parallelism=5 - 将operator内的线程数设为5。 + +注释 +------- +目前只有稀疏的adam op支持inner_op_parallelism。 + + +limit_of_tmp_allocation +******************************************* +(始于1.3) + +FLAGS_limit_of_tmp_allocation表示temporary_allocation大小的上限,单位为字节。如果FLAGS_limit_of_tmp_allocation为-1,temporary_allocation的大小将没有限制。 + +取值范围 +--------------- +Int64型,缺省值为-1。 + +示例 +------- +FLAGS_limit_of_tmp_allocation=1024 - 将temporary_allocation大小的上限设为1024字节。 + + +max_body_size +******************************************* +(始于1.0.0) + +控制BRPC中的最大消息大小。 + +取值范围 +--------------- +Int32型,缺省值为2147483647。 + +示例 +------- +FLAGS_max_body_size=2147483647 - 将BRPC消息大小设为2147483647。 + + +memory_fraction_of_eager_deletion +******************************************* +(始于1.4) + +垃圾回收策略释放变量的内存大小百分比。如果FLAGS_memory_fraction_of_eager_deletion = 1.0,则将释放网络中的所有临时变量。如果FLAGS_memory_fraction_of_eager_deletion = 0.0,则不会释放网络中的任何临时变量。如果0.0= 0, garbage collection strategy would be enabled, and collect memory garbages when running network, which is beneficial to saving memory usage. It is only useful when you use Executor to run program, or compile program, or compile program with data parallel. If FLAGS_eager_delete_tensor_gb < 0, garbage collection strategy is disabled. Garbage collector would not release memory garbages until the memory size of garbages reaches FLAGS_eager_delete_tensor_gb GB. + +Values accepted +--------------- +Double, in GB unit. The default value is -1.0. + +Example +------- +FLAGS_eager_delete_tensor_gb=0.0 would make memory garbage release immediately once it is not used. + +FLAGS_eager_delete_tensor_gb=1.0 would make memory garbage release till the memory size of garbages reaches 1.0GB. + +FLAGS_eager_delete_tensor_gb=-1.0 would disable garbage collection strategy. + +Note +------- +It is recommended that users enable garbage collection strategy by setting FLAGS_eager_delete_tensor_gb=0.0 when training large network. + + +enable_cublas_tensor_op_math +******************************************* +(since 1.2.0) + +This Flag indicates whether to use Tensor Core, but it may lose some precision. + +Values accepted +--------------- +Bool. The default value is False. + +Example +------- +enable_cublas_tensor_op_math=True will use Tensor Core. + + +enable_inplace_whitelist +******************************************* +(since 1.4) + +Debug use to disable memory in-place in some ops. If set, some ops would not perform in-place optimization to save memory. These ops include: sigmoid, exp, relu, tanh, sqrt, ceil, floor, reciprocal, relu6, soft_relu, hard_sigmoid, batch_norm, batch_norm_grad, sum, sum_grad, scale, reshape, elementwise_add, and elementwise_add_grad. + +Values accepted +--------------- +Bool. The default value is False. + +Example +------- +FLAGS_enable_inplace_whitelist=True would disable memory in-place optimization on certain ops. + + +enable_parallel_graph +******************************************* +(since 1.2.0) + +This Flag is used for ParallelExecutor to disable parallel graph execution mode. + +Values accepted +--------------- +Bool. The default value is False. + +Example +------- +FLAGS_enable_parallel_graph=False will force disable parallel graph execution mode by ParallelExecutor. + + +enable_rpc_profiler +******************************************* +(Since 1.0.0) + +Enable RPC profiler or not. + +Values accepted +---------------- +Bool. The default value is False. + +Example +------- +FLAGS_enable_rpc_profiler=True will enable rpc profiler and record the timeline to profiler file. + + +fast_eager_deletion_mode +******************************************* +(since 1.3) + +Whether to use fast garbage collection strategy. If not set, gpu memory would be released when CUDA kernel ends. Otherwise, gpu memory would be released without waiting CUDA kernel ends, making garbage collection strategy faster. Only valid when garbage collection strategy is enabled. + +Values accepted +--------------- +Bool. The default value is True. + +Example +------- +FLAGS_fast_eager_deletion_mode=True would turn on fast garbage collection strategy. + +FLAGS_fast_eager_deletion_mode=False would turn off fast garbage collection strategy. + + +fraction_of_gpu_memory_to_use +******************************************* +(since 1.2.0) + +Allocate a chunk of gpu memory that is this fraction of the total gpu memory size. Future memory usage will be allocated from the chunk. If the chunk doesn't have enough gpu memory, additional chunks of the same size will be requested from gpu until the gpu has no memory left for another chunk. + +Values accepted +--------------- +Uint64 value greater than 0 which is the initial GPU memory percentage. + +Example +------- +FLAGS_fraction_of_gpu_memory_to_use=0.1 will allocate 10% total gpu memory size as initial GPU chunk. + +Note +------- +Windows series platform will set FLAGS_fraction_of_gpu_memory_to_use to 0.5 by default. +Linux will set FLAGS_fraction_of_gpu_memory_to_use to 0.92 by default. + + +free_idle_memory +******************************************* +(since 0.15.0) + +Whether to free idle memory pre-allocated from system during runtime. If set, free idle memory would be released if there is too much free idle memory in the pre-allocated allocator. + +Values accepted +--------------- +Bool. The default value is False. + +Example +------- +FLAGS_free_idle_memory=True will free idle memory when there is too much of it. + +FLAGS_free_idle_memory=False will not free idle memory. + + +fuse_parameter_groups_size +******************************************* +(since 1.4.0) + +FLAGS_fuse_parameter_groups_size is the size of one group parameters' gradient. The default value is an empirical result. If the fuse_parameter_groups_size is 1, it means that the groups' size is the number of parameters' gradient. If the fuse_parameter_groups_size is -1, it means that there is only one group. The default value is 3, it is an empirical value. + +Values accepted +--------------- +Int32. The default value is 3. + +Example +------- +FLAGS_fuse_parameter_groups_size=3 will set the size of one group parameters' gradient to 3. + + +fuse_parameter_memory_size +******************************************* +(since 1.5.0) + +FLAGS_fuse_parameter_memory_size indicates the up limited memory size of one group parameters' gradient which is the input of communication calling ( e.g NCCLAllReduce). The default value is -1.0, it means that not set group according to memory_size. The unit is Megabyte. + +Values accepted +--------------- +Double. The default value is -1.0. + +Example +------- +FLAGS_fuse_parameter_memory_size=16 set the up limited memory size of one group parameters' gradient to 16 Megabytes. + + +init_allocated_mem +******************************************* +(since 0.15.0) + +Whether to initialize the allocated memory by some non-zero values. This flag is for debug use to prevent that some ops assumes that the memory allocated is initialized to be zero. + +Values accepted +--------------- +Bool. The default value is False. + +Example +------- +FLAGS_init_allocated_mem=True will make the allocated memory initialize as a non-zero value. + +FLAGS_init_allocated_mem=False will not initialize the allocated memory. + + +initial_cpu_memory_in_mb +******************************************* +(since 0.14.0) + +Initial CPU memory chunk size in MB of PaddlePaddle allocator. Allocator would take the minimal value of FLAGS_initial_cpu_memory_in_mb and FLAGS_fraction_of_cpu_memory_to_use*(total physical memory) as the memory chunk size. + +Values accepted +--------------- +Uint64. The default value is 500 with unit MB. + +Example +------- +FLAGS_initial_cpu_memory_in_mb=100, if FLAGS_fraction_of_cpu_memory_to_use*(total physical memory) > 100MB, then allocator will pre-allocate 100MB when first allocation request raises, and re-allocate 100MB again when the pre-allocated memory is exhaustive. + + +initial_gpu_memory_in_mb +******************************************* +(since 1.4.0) + +Allocate a chunk of GPU memory whose byte size is specified by the flag. Future memory usage will be allocated from the chunk. If the chunk doesn't have enough gpu memory, additional chunks 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 chunk. + +Values accepted +--------------- +Uint64 value greater than 0 which is the initial GPU memory size in MB. + +Example +------- +FLAGS_initial_gpu_memory_in_mb=4096 will allocate 4 GB as initial GPU chunk. + +Note +------- +If you set this flag, the memory size set by FLAGS_fraction_of_gpu_memory_to_use will be overrided by this flag. +If you don't set this flag, PaddlePaddle will use FLAGS_fraction_of_gpu_memory_to_use to allocate gpu memory. + + +inner_op_parallelism +******************************************* +(since 1.3.0) + +Most operators are working in single thread mode, but for some operator, use multi thread is more suitable. For Example, optimization op that optimize sparse gradient will be much faster to use multi thread. This flag is used to set the thread number inside an operator. + +Values accepted +--------------- +Int32. The default value is 0 which means that operator will not run in multi thread mode. + +Example +------- +FLAGS_inner_op_parallelism=5 will set the thread number inside an operator to 5. + +Note +------- +currently only sparse adam op supports inner_op_parallelism. + + +limit_of_tmp_allocation +******************************************* +(since 1.3) + +The FLAGS_limit_of_tmp_allocation indicates the up limit of temporary_allocation size, the unit is byte. If the FLAGS_limit_of_tmp_allocation is -1, the size of temporary_allocation will not be limited. + +Values accepted +--------------- +Int64. The default value is -1. + +Example +------- +FLAGS_limit_of_tmp_allocation=1024 will set the up limit of temporary_allocation size to 1024 bytes. + + +max_body_size +******************************************* +(Since 1.0.0) + +It controls the max message size in BRPC. + +Values accepted +--------------- +Int32. The default value is 2147483647. + +Example +------- +FLAGS_max_body_size=2147483647 will set the BRPC message size to 2147483647. + + +memory_fraction_of_eager_deletion +******************************************* +(since 1.4) + +A memory size percentage when garbage collection strategy decides which variables should be released. If FLAGS_memory_fraction_of_eager_deletion=1.0, all temporary variables in the network would be released. If FLAGS_memory_fraction_of_eager_deletion=0.0, all temporary variables in the network would not be released. If 0.0