|
|
|
@ -48,7 +48,15 @@ using mindspore::device::memswap::MemSwapInfoSet;
|
|
|
|
|
using mindspore::device::memswap::MemSwapManager;
|
|
|
|
|
using mindspore::device::memswap::SwapKind;
|
|
|
|
|
static const size_t PARAMETER_OUTPUT_INDEX = 0;
|
|
|
|
|
bool GPUKernelRuntime::SyncStream() { return GPUDeviceManager::GetInstance().SyncStream(stream_); }
|
|
|
|
|
|
|
|
|
|
bool GPUKernelRuntime::SyncStream() {
|
|
|
|
|
if (!GPUDeviceManager::GetInstance().SyncStream(stream_)) {
|
|
|
|
|
MS_LOG(ERROR) << "Call SyncStream error.";
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
FreeAndClearBufferPtrs();
|
|
|
|
|
return true;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
bool GPUKernelRuntime::Init() {
|
|
|
|
|
auto context_ptr = MsContext::GetInstance();
|
|
|
|
@ -183,6 +191,22 @@ void LoadKernelData(Debugger *debugger, const CNodePtr &kernel,
|
|
|
|
|
}
|
|
|
|
|
} // namespace
|
|
|
|
|
|
|
|
|
|
bool GPUKernelRuntime::MemcpyAsync(void *dst, const void *src, uint64_t size, int32_t kind) {
|
|
|
|
|
std::shared_ptr<char[]> buffer(new char[size]());
|
|
|
|
|
MS_EXCEPTION_IF_NULL(buffer);
|
|
|
|
|
std::copy(reinterpret_cast<const char *>(src), reinterpret_cast<const char *>(src) + size, buffer.get());
|
|
|
|
|
AddBufferPtr(buffer);
|
|
|
|
|
|
|
|
|
|
auto &stream = GPUDeviceManager::GetInstance().default_stream();
|
|
|
|
|
MS_EXCEPTION_IF_NULL(stream);
|
|
|
|
|
auto ret = GPUDeviceManager::GetInstance().CopyHostMemToDeviceAsync(dst, buffer.get(), size, stream);
|
|
|
|
|
if (!ret) {
|
|
|
|
|
MS_LOG(ERROR) << "CopyHostMemToDeviceAsync failed";
|
|
|
|
|
return false;
|
|
|
|
|
}
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
DeviceAddressPtr GPUKernelRuntime::CreateDeviceAddress(void *device_ptr, size_t device_size, const string &format,
|
|
|
|
|
TypeId type_id) {
|
|
|
|
|
return std::make_shared<GPUDeviceAddress>(device_ptr, device_size, format, type_id);
|
|
|
|
|