diff --git a/projects/clr/hipamd/src/hip_device.cpp b/projects/clr/hipamd/src/hip_device.cpp index 802a94177e..27f1ef4c1f 100644 --- a/projects/clr/hipamd/src/hip_device.cpp +++ b/projects/clr/hipamd/src/hip_device.cpp @@ -249,6 +249,7 @@ void Device::destroyAllStreams() { for (auto& it : toBeDeleted) { hip::Stream::Destroy(it); } + hip::tls.stream_per_thread_obj_.clear_spt(); } // ================================================================================================ diff --git a/projects/clr/hipamd/src/hip_internal.hpp b/projects/clr/hipamd/src/hip_internal.hpp index a53affd19a..d9f26e4679 100644 --- a/projects/clr/hipamd/src/hip_internal.hpp +++ b/projects/clr/hipamd/src/hip_internal.hpp @@ -269,6 +269,7 @@ public: void operator=(const stream_per_thread& ) = delete; ~stream_per_thread(); hipStream_t get(); + void clear_spt(); }; class Device; diff --git a/projects/clr/hipamd/src/hip_stream.cpp b/projects/clr/hipamd/src/hip_stream.cpp index 9ea50d4023..72af505a41 100644 --- a/projects/clr/hipamd/src/hip_stream.cpp +++ b/projects/clr/hipamd/src/hip_stream.cpp @@ -236,6 +236,10 @@ hipStream_t stream_per_thread::get() { return m_streams[currDev]; } +void stream_per_thread::clear_spt() { + m_streams[getCurrentDevice()->deviceId()] = nullptr; +} + // ================================================================================================ void getStreamPerThread(hipStream_t& stream) {