Closed CascadingRadium closed 1 month ago
This is probably related to recent changes (from PR #4359) made to improve multithreading performance on Windows. Could you try if #4835 fixes this for you (I think it should apply cleanly to 0.3.26) ? Unfortunately it is still unclear if the PR itself was problematic, or if it uncovers a pre-existing failure in our level 3 BLAS threading code for Windows.
thanks for the reply.. seeing the history of this issue i see that
we have decided to just rollback to v0.3.25 and the windows prod pipeline is now passing ... thanks
Thanks for the confirmation. I hope to release 0.3.28 tomorrow (or on the upcoming weekend at the very latest)
Summary
calling sgemm_ back to back in a loop causes a thread leak and the control never returns from it.
Platform
OS: Windows 10
openBLAS version: 0.3.26
Installed from: Self Compile
openBLAS compile options:
What did you do?
Run a Go program that calls a C++ API, which in turn uses OpenBLAS's sgemm function for matrix multiplication. The C++ API calls sgemm in a loop, and the Go code calls the C++ API in a loop as well.
The process works properly for some time. However, even after terminating the Go loop, there is a thread leak in the sgemm_ call, where one thread remains running without any apparent reason.
Using -DUSE_THREAD=0 fixes this problem, but in our production environment, -DUSE_THREAD=0 is not feasible and must be -DUSE_THREAD=1. This issue only occurs on Windows and not on Linux.