Use the context variant of getNullStream
Do not create a new queue to call finish in hipFree if none was created earlier elsewhere. Change-Id: I87bb191e6b186ddbe607ab29d11e3ae5bc2ac8e6
Этот коммит содержится в:
@@ -103,6 +103,7 @@ amd::HostQueue* getNullStream(Device& dev) {
|
||||
}
|
||||
return stream->second;
|
||||
}
|
||||
|
||||
amd::HostQueue* getNullStream(amd::Context& ctx) {
|
||||
for (auto& it : g_nullStreams) {
|
||||
if (it.first->asContext() == &ctx) {
|
||||
|
||||
@@ -224,8 +224,11 @@ hipError_t hipFree(void* ptr) {
|
||||
}
|
||||
if (amd::SvmBuffer::malloced(ptr)) {
|
||||
hip::syncStreams();
|
||||
for (size_t i=0; i<g_devices.size(); ++i) {
|
||||
hip::getNullStream(*g_devices[i])->finish();
|
||||
for (auto& dev : g_devices) {
|
||||
amd::HostQueue* queue = hip::getNullStream(*dev->asContext());
|
||||
if (queue != nullptr) {
|
||||
queue->finish();
|
||||
}
|
||||
}
|
||||
amd::SvmBuffer::free(*hip::getCurrentDevice()->asContext(), ptr);
|
||||
HIP_RETURN(hipSuccess);
|
||||
|
||||
Ссылка в новой задаче
Block a user