13
13
// limitations under the License.
14
14
15
15
#include " paddle/fluid/memory/allocation/legacy_allocator.h"
16
+
16
17
#include < string>
17
18
#include < utility>
18
19
#include < vector>
20
+
21
+ #ifdef PADDLE_WITH_JEMALLOC
22
+ #include < jemalloc/jemalloc.h>
23
+ #endif
24
+
19
25
#include " glog/logging.h"
20
26
#include " paddle/fluid/memory/detail/buddy_allocator.h"
21
27
#include " paddle/fluid/memory/detail/system_allocator.h"
@@ -95,7 +101,11 @@ struct NaiveAllocator {
95
101
template <>
96
102
void *Alloc<platform::CPUPlace>(const platform::CPUPlace &place, size_t size) {
97
103
VLOG (10 ) << " Allocate " << size << " bytes on " << platform::Place (place);
104
+ #ifdef PADDLE_WITH_JEMALLOC
105
+ void *p = malloc (size);
106
+ #else
98
107
void *p = GetCPUBuddyAllocator ()->Alloc (size);
108
+ #endif
99
109
if (FLAGS_init_allocated_mem) {
100
110
memset (p, 0xEF , size);
101
111
}
@@ -107,12 +117,21 @@ template <>
107
117
void Free<platform::CPUPlace>(const platform::CPUPlace &place, void *p,
108
118
size_t size) {
109
119
VLOG (10 ) << " Free pointer=" << p << " on " << platform::Place (place);
120
+ #ifdef PADDLE_WITH_JEMALLOC
121
+ free (p);
122
+ #else
110
123
GetCPUBuddyAllocator ()->Free (p);
124
+ #endif
111
125
}
112
126
113
127
template <>
114
128
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
115
133
return GetCPUBuddyAllocator ()->Used ();
134
+ #endif
116
135
}
117
136
118
137
#ifdef PADDLE_WITH_CUDA
0 commit comments