Skip to content

Commit 6000a6e

Browse files
authored
Merge pull request #15312 from velconia/add_pyramid_dnn_support
Use malloc and free in JeMalloc
2 parents fd286f3 + ac80273 commit 6000a6e

File tree

2 files changed

+20
-1
lines changed

2 files changed

+20
-1
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -212,7 +212,7 @@ endif()
212212
if (WITH_JEMALLOC)
213213
find_package(JeMalloc REQUIRED)
214214
include_directories(${JEMALLOC_INCLUDE_DIR})
215-
add_definitions(-DWITH_JEMALLOC)
215+
add_definitions(-DPADDLE_WITH_JEMALLOC)
216216
endif()
217217

218218
include(generic) # simplify cmake module

paddle/fluid/memory/allocation/legacy_allocator.cc

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,15 @@
1313
// limitations under the License.
1414

1515
#include "paddle/fluid/memory/allocation/legacy_allocator.h"
16+
1617
#include <string>
1718
#include <utility>
1819
#include <vector>
20+
21+
#ifdef PADDLE_WITH_JEMALLOC
22+
#include <jemalloc/jemalloc.h>
23+
#endif
24+
1925
#include "glog/logging.h"
2026
#include "paddle/fluid/memory/detail/buddy_allocator.h"
2127
#include "paddle/fluid/memory/detail/system_allocator.h"
@@ -95,7 +101,11 @@ struct NaiveAllocator {
95101
template <>
96102
void *Alloc<platform::CPUPlace>(const platform::CPUPlace &place, size_t size) {
97103
VLOG(10) << "Allocate " << size << " bytes on " << platform::Place(place);
104+
#ifdef PADDLE_WITH_JEMALLOC
105+
void *p = malloc(size);
106+
#else
98107
void *p = GetCPUBuddyAllocator()->Alloc(size);
108+
#endif
99109
if (FLAGS_init_allocated_mem) {
100110
memset(p, 0xEF, size);
101111
}
@@ -107,12 +117,21 @@ template <>
107117
void Free<platform::CPUPlace>(const platform::CPUPlace &place, void *p,
108118
size_t size) {
109119
VLOG(10) << "Free pointer=" << p << " on " << platform::Place(place);
120+
#ifdef PADDLE_WITH_JEMALLOC
121+
free(p);
122+
#else
110123
GetCPUBuddyAllocator()->Free(p);
124+
#endif
111125
}
112126

113127
template <>
114128
size_t Used<platform::CPUPlace>(const platform::CPUPlace &place) {
129+
#ifdef PADDLE_WITH_JEMALLOC
130+
// fake the result of used memory when PADDLE_WITH_JEMALLOC is ON
131+
return 0U;
132+
#else
115133
return GetCPUBuddyAllocator()->Used();
134+
#endif
116135
}
117136

118137
#ifdef PADDLE_WITH_CUDA

0 commit comments

Comments
 (0)