Skip to content

Commit 106d063

Browse files
committed
Merge branch 'develop' of https://github.com/PaddlePaddle/Paddle into fix-7346
2 parents 427e474 + 45e7715 commit 106d063

File tree

3 files changed

+29
-0
lines changed

3 files changed

+29
-0
lines changed

paddle/memory/memory.cc

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,5 +114,21 @@ void Free<platform::CUDAPlace>(platform::CUDAPlace place, void* p) {
114114

115115
#endif
116116

117+
size_t Usage::operator()(const platform::CPUPlace& cpu) const {
118+
return Used(cpu);
119+
}
120+
121+
size_t Usage::operator()(const platform::CUDAPlace& gpu) const {
122+
#ifdef PADDLE_WITH_CUDA
123+
return Used(gpu);
124+
#else
125+
PADDLE_THROW("'CUDAPlace' is not supported in CPU only device.");
126+
#endif
127+
}
128+
129+
size_t memory_usage(const platform::Place& p) {
130+
return boost::apply_visitor(Usage(), p);
131+
}
132+
117133
} // namespace memory
118134
} // namespace paddle

paddle/memory/memory.h

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,13 @@ void Free(Place place, void* ptr);
5454
template <typename Place>
5555
size_t Used(Place place);
5656

57+
struct Usage : public boost::static_visitor<size_t> {
58+
size_t operator()(const platform::CPUPlace& cpu) const;
59+
size_t operator()(const platform::CUDAPlace& gpu) const;
60+
};
61+
62+
size_t memory_usage(const platform::Place& p);
63+
5764
/**
5865
* \brief Free memory block in one place.
5966
*

paddle/memory/memory_test.cc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,9 @@ TEST(BuddyAllocator, CPUAllocation) {
4444

4545
EXPECT_NE(p, nullptr);
4646

47+
paddle::platform::Place place = cpu;
48+
EXPECT_EQ(paddle::memory::Used(cpu), paddle::memory::memory_usage(place));
49+
4750
paddle::memory::Free(cpu, p);
4851
}
4952

@@ -99,6 +102,9 @@ TEST(BuddyAllocator, GPUAllocation) {
99102

100103
EXPECT_NE(p, nullptr);
101104

105+
paddle::platform::Place place = gpu;
106+
EXPECT_EQ(paddle::memory::Used(gpu), paddle::memory::memory_usage(place));
107+
102108
paddle::memory::Free(gpu, p);
103109
}
104110

0 commit comments

Comments
 (0)