Browse Source

!4104 fix a bug with using dynamic memory

Merge pull request !4104 from lvchangquan/transdata
tags/v0.7.0-beta
mindspore-ci-bot Gitee 5 years ago
parent
commit
64721fa57e
2 changed files with 7 additions and 6 deletions
  1. +6
    -5
      mindspore/ccsrc/runtime/device/ascend/ascend_device_address.cc
  2. +1
    -1
      mindspore/ccsrc/runtime/device/kernel_runtime.cc

+ 6
- 5
mindspore/ccsrc/runtime/device/ascend/ascend_device_address.cc View File

@@ -335,15 +335,16 @@ void AscendDeviceAddress::LaunchTransData(kernel::KernelModPtr kernel_mod_ptr, v
AddressPtrList kernel_inputs = {input_address};
AddressPtrList kernel_outputs = {output_address};
AddressPtrList kernel_workspaces;
std::vector<DeviceAddressPtr> workspace_address_ptr(workspace_size_list.size());
if (!workspace_size_list.empty()) {
for (size_t i = 0; i < workspace_size_list.size(); ++i) {
auto workspace_size = GetCommonAlignSize(workspace_size_list[i]);
auto workspace_address_ptr = AssignLaunchMemory(workspace_size, "", kTypeUnknown);
MS_EXCEPTION_IF_NULL(workspace_address_ptr);
workspace_address_ptr[i] = AssignLaunchMemory(workspace_size, "", kTypeUnknown);
MS_EXCEPTION_IF_NULL(workspace_address_ptr[i]);
auto workspace_address = std::make_shared<kernel::Address>();
MS_EXCEPTION_IF_NULL(workspace_address);
workspace_address->addr = workspace_address_ptr->GetMutablePtr();
workspace_address->size = workspace_address_ptr->GetSize();
workspace_address->addr = workspace_address_ptr[i]->GetMutablePtr();
workspace_address->size = workspace_address_ptr[i]->GetSize();
kernel_workspaces.push_back(workspace_address);
}
}
@@ -357,6 +358,7 @@ void AscendDeviceAddress::LaunchTransData(kernel::KernelModPtr kernel_mod_ptr, v
if (!ret) {
MS_LOG(ERROR) << "Launch kernel failed.";
}
SyncStream();
}

kernel::KernelModPtr AscendDeviceAddress::CompileTransDataAndObtainKernelMod(const nlohmann::json &kernel_json) const {
@@ -421,7 +423,6 @@ bool AscendDeviceAddress::SyncDeviceToHostAndConvertFormatBasedOnTransData(const
auto workspace_size_list = GetWorkspaceSizeList(kernel_json);
// launch
LaunchTransData(kernel_mod_ptr, output_address->GetMutablePtr(), output_address->GetSize(), workspace_size_list);
SyncStream();
if (type_id_ == type) {
SyncMemory(host_ptr, output_address->GetPtr(), host_size, RT_MEMCPY_DEVICE_TO_HOST);
} else {


+ 1
- 1
mindspore/ccsrc/runtime/device/kernel_runtime.cc View File

@@ -857,7 +857,7 @@ DeviceAddressPtr KernelRuntime::AssignSingleOpLaunchMemory(size_t size, const st
auto device_address = CreateDeviceAddress(nullptr, size, format, type);
MS_EXCEPTION_IF_NULL(device_address);
MS_EXCEPTION_IF_NULL(mem_manager_);
auto base_ptr = mem_manager_->MallocMem(kDynamicMem, size, device_address);
auto base_ptr = mem_manager_->MallocMem(kStaticMem, size, device_address);
MS_EXCEPTION_IF_NULL(base_ptr);
return device_address;
}


Loading…
Cancel
Save