Sync streams when freeing or destroying mem
Change-Id: I6932f225a8b932bb2adbd5e37880f7e604496809
Tá an tiomantas seo le fáil i:
@@ -274,6 +274,13 @@ hipError_t hipHostFree(void* ptr) {
|
|||||||
HIP_INIT_API(hipHostFree, ptr);
|
HIP_INIT_API(hipHostFree, ptr);
|
||||||
|
|
||||||
if (amd::SvmBuffer::malloced(ptr)) {
|
if (amd::SvmBuffer::malloced(ptr)) {
|
||||||
|
for (auto& dev : g_devices) {
|
||||||
|
amd::HostQueue* queue = hip::getNullStream(*dev->asContext());
|
||||||
|
if (queue != nullptr) {
|
||||||
|
queue->finish();
|
||||||
|
}
|
||||||
|
hip::syncStreams(dev->deviceId());
|
||||||
|
}
|
||||||
amd::SvmBuffer::free(*hip::getCurrentDevice()->asContext(), ptr);
|
amd::SvmBuffer::free(*hip::getCurrentDevice()->asContext(), ptr);
|
||||||
HIP_RETURN(hipSuccess);
|
HIP_RETURN(hipSuccess);
|
||||||
}
|
}
|
||||||
@@ -289,7 +296,13 @@ hipError_t ihipArrayDestroy(hipArray* array) {
|
|||||||
if (is_valid(memObj) == false) {
|
if (is_valid(memObj) == false) {
|
||||||
return hipErrorInvalidValue;
|
return hipErrorInvalidValue;
|
||||||
}
|
}
|
||||||
|
for (auto& dev : g_devices) {
|
||||||
|
amd::HostQueue* queue = hip::getNullStream(*dev->asContext());
|
||||||
|
if (queue != nullptr) {
|
||||||
|
queue->finish();
|
||||||
|
}
|
||||||
|
hip::syncStreams(dev->deviceId());
|
||||||
|
}
|
||||||
as_amd(memObj)->release();
|
as_amd(memObj)->release();
|
||||||
|
|
||||||
delete array;
|
delete array;
|
||||||
|
|||||||
Tagairt in Eagrán Nua
Cuir bac ar úsáideoir