Update design

gangliao-patch-1
Yi Wang 8 years ago
parent b55df90dfd
commit ab2550c640

@ -31,7 +31,7 @@ In `paddle/memory/memory.h` we have:
namespace memory { namespace memory {
template <typename Place> void* Alloc(Place, size_t); template <typename Place> void* Alloc(Place, size_t);
template <typename Place> void Free(Place, void*); template <typename Place> void Free(Place, void*);
template <typename Place> void Used(Place); template <typename Place> size_t Used(Place);
} // namespace memory } // namespace memory
``` ```
@ -39,7 +39,7 @@ These function templates have specializations on either `platform::CPUPlace` or
```cpp ```cpp
template<> template<>
void Alloc<CPUPlace>(CPUPlace p, size_t size) { void* Alloc<CPUPlace>(CPUPlace p, size_t size) {
return GetCPUBuddyAllocator()->Alloc(size); return GetCPUBuddyAllocator()->Alloc(size);
} }
``` ```
@ -102,15 +102,11 @@ class BuddyAllocator {
}; };
``` ```
#### System Allocators Because BuddyAllocator has the meta-data of each block, it can trace the used memory -- record the amount returned by `Alloc` freed in `Free`. Instead, `CPUAllocator` and `GPUAllocator` doesn't know the size of freed memory block and cannot do the trace.
The `GPUAllocator` and `CPUAllocator` are calls *system allocators*. They work as the fallback allocators of `BuddyAllocator`. A system allocator holds information about a device, including the amount of memory has been allocated, so we can call
- `GPUAllocator::Used()` and #### System Allocators
- `CPUAllocator::Used()`
to get the amount of memory that has been allocated so far.
The `GPUAllocator` and `CPUAllocator` are calls *system allocators*. They work as the fallback allocators of `BuddyAllocator`.
## Justification ## Justification

Loading…
Cancel
Save