|
|
|
@ -28,9 +28,13 @@ DEFINE_double(fraction_of_cpu_memory_to_use, 1,
|
|
|
|
|
"Default use 100% of CPU memory for PaddlePaddle,"
|
|
|
|
|
"reserve the rest for page tables, etc");
|
|
|
|
|
|
|
|
|
|
DEFINE_uint64(
|
|
|
|
|
initial_cpu_memory_in_mb, 500,
|
|
|
|
|
"Default initial 500MB of CPU memory for PaddlePaddle, in MD unit.");
|
|
|
|
|
DEFINE_uint64(initial_cpu_memory_in_mb,
|
|
|
|
|
#ifdef PADDLE_WITH_MKLDNN
|
|
|
|
|
1000,
|
|
|
|
|
#else
|
|
|
|
|
500,
|
|
|
|
|
#endif
|
|
|
|
|
"Initial CPU memory for PaddlePaddle, in MD unit.");
|
|
|
|
|
|
|
|
|
|
DEFINE_double(
|
|
|
|
|
fraction_of_cuda_pinned_memory_to_use, 0.5,
|
|
|
|
@ -59,10 +63,7 @@ inline size_t CpuTotalPhysicalMemory() {
|
|
|
|
|
size_t CpuMaxAllocSize() {
|
|
|
|
|
// For distributed systems, it requires configuring and limiting
|
|
|
|
|
// the fraction of memory to use.
|
|
|
|
|
return std::min(
|
|
|
|
|
static_cast<size_t>(FLAGS_fraction_of_cpu_memory_to_use *
|
|
|
|
|
CpuTotalPhysicalMemory()),
|
|
|
|
|
static_cast<size_t>(FLAGS_initial_cpu_memory_in_mb * 1 << 20));
|
|
|
|
|
return FLAGS_fraction_of_cpu_memory_to_use * CpuTotalPhysicalMemory();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
size_t CpuMinChunkSize() {
|
|
|
|
@ -71,8 +72,11 @@ size_t CpuMinChunkSize() {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
size_t CpuMaxChunkSize() {
|
|
|
|
|
// Allow to allocate the maximum chunk size is roughly 3% of CPU memory.
|
|
|
|
|
return CpuMaxAllocSize() / 32;
|
|
|
|
|
// Allow to allocate the maximum chunk size is roughly 3% of CPU memory,
|
|
|
|
|
// or the initial_cpu_memory_in_mb.
|
|
|
|
|
return std::min(
|
|
|
|
|
static_cast<size_t>(CpuMaxAllocSize() / 32),
|
|
|
|
|
static_cast<size_t>(FLAGS_initial_cpu_memory_in_mb * 1 << 20));
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
size_t CUDAPinnedMaxAllocSize() {
|
|
|
|
|