|
|
|
@ -13,8 +13,14 @@
|
|
|
|
|
// limitations under the License.
|
|
|
|
|
|
|
|
|
|
#include "paddle/fluid/memory/allocation/legacy_allocator.h"
|
|
|
|
|
|
|
|
|
|
#include <string>
|
|
|
|
|
#include <vector>
|
|
|
|
|
|
|
|
|
|
#ifdef WITH_JEMALLOC
|
|
|
|
|
#include <jemalloc/jemalloc.h>
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
#include "glog/logging.h"
|
|
|
|
|
#include "paddle/fluid/memory/detail/buddy_allocator.h"
|
|
|
|
|
#include "paddle/fluid/memory/detail/system_allocator.h"
|
|
|
|
@ -89,7 +95,11 @@ struct NaiveAllocator {
|
|
|
|
|
template <>
|
|
|
|
|
void *Alloc<platform::CPUPlace>(const platform::CPUPlace &place, size_t size) {
|
|
|
|
|
VLOG(10) << "Allocate " << size << " bytes on " << platform::Place(place);
|
|
|
|
|
#ifdef WITH_JEMALLOC
|
|
|
|
|
void *p = malloc(size);
|
|
|
|
|
#else
|
|
|
|
|
void *p = GetCPUBuddyAllocator()->Alloc(size);
|
|
|
|
|
#endif
|
|
|
|
|
if (FLAGS_init_allocated_mem) {
|
|
|
|
|
memset(p, 0xEF, size);
|
|
|
|
|
}
|
|
|
|
@ -100,12 +110,21 @@ void *Alloc<platform::CPUPlace>(const platform::CPUPlace &place, size_t size) {
|
|
|
|
|
template <>
|
|
|
|
|
void Free<platform::CPUPlace>(const platform::CPUPlace &place, void *p) {
|
|
|
|
|
VLOG(10) << "Free pointer=" << p << " on " << platform::Place(place);
|
|
|
|
|
#ifdef WITH_JEMALLOC
|
|
|
|
|
free(p);
|
|
|
|
|
#else
|
|
|
|
|
GetCPUBuddyAllocator()->Free(p);
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
template <>
|
|
|
|
|
size_t Used<platform::CPUPlace>(const platform::CPUPlace &place) {
|
|
|
|
|
#ifdef WITH_JEMALLOC
|
|
|
|
|
// fake the result of used memory when WITH_JEMALLOC is ON
|
|
|
|
|
return 0U;
|
|
|
|
|
#else
|
|
|
|
|
return GetCPUBuddyAllocator()->Used();
|
|
|
|
|
#endif
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#ifdef PADDLE_WITH_CUDA
|
|
|
|
|