|
|
|
@ -21,6 +21,25 @@
|
|
|
|
|
namespace mindspore {
|
|
|
|
|
namespace device {
|
|
|
|
|
namespace ascend {
|
|
|
|
|
void AscendMemoryPool::Init(uint8_t *device_mem_base, uint64_t device_mem_size, uint64_t dynamic_mem_offset) {
|
|
|
|
|
static bool initialized = false;
|
|
|
|
|
if (initialized) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
MS_EXCEPTION_IF_NULL(device_mem_base);
|
|
|
|
|
set_device_mem_pool_base(device_mem_base);
|
|
|
|
|
|
|
|
|
|
if (dynamic_mem_offset > device_mem_size) {
|
|
|
|
|
MS_LOG(EXCEPTION) << "Dynamic memory offset: " << dynamic_mem_offset
|
|
|
|
|
<< " exceed the device memory size: " << device_mem_size;
|
|
|
|
|
}
|
|
|
|
|
set_device_mem_size(device_mem_size);
|
|
|
|
|
set_device_mem_pool_offset(device_mem_size);
|
|
|
|
|
set_graph_dynamic_mem_offset(dynamic_mem_offset);
|
|
|
|
|
initialized = true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
size_t AscendMemoryPool::AllocDeviceMem(size_t size, DeviceMemPtr *addr) {
|
|
|
|
|
if (size == 0) {
|
|
|
|
|
MS_LOG(EXCEPTION) << "Failed to alloc memory pool resource, the size is zero!";
|
|
|
|
|