-
Notifications
You must be signed in to change notification settings - Fork 7
Remove use of CPUSummary
#28
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
The use of CPUInfo makes `--trim` difficult. Removing this dependency here would unlock a large amount of libraries which use the Polyester library to be trimmmable (notably e.g. almost everything in the SciML ecosystem). However, we might need a bit more discussion on the exact removal of this feature.
@oscardssmith can you follow up to check whether these cause any performance regression? I would assume not. |
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #28 +/- ##
==========================================
- Coverage 43.75% 0.00% -43.75%
==========================================
Files 4 4
Lines 128 126 -2
==========================================
- Hits 56 0 -56
- Misses 72 126 +54 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
This commit fixes a critical bug that occurs when using more than 64 threads. The change from CPUSummary.sys_threads() to Threads.nthreads() introduced a type instability where worker_bits() and worker_mask_count() would return regular Int instead of StaticInt types with high thread counts. Changes: - Modified worker_bits() to always return Int for consistency - Updated worker_mask_count() to use regular integer division - Added new _request_threads method that handles Int parameter - Added test for high thread count compatibility The fix maintains backward compatibility while ensuring the code works correctly with any number of threads. Fixes the MethodError: no method matching _request_threads(::UInt32, ::Ptr{UInt64}, ::Int64, ::Nothing) 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <[email protected]>
|
||
function worker_bits() | ||
wts = nextpow2(CPUSummary.sys_threads()) # Typically sys_threads (i.e. Sys.CPU_THREADS) does not change between runs, thus it will precompile well. | ||
wts = nextpow2(Threads.nthreads()) # Typically sys_threads (i.e. Sys.CPU_THREADS) does not change between runs, thus it will precompile well. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
wts = nextpow2(Threads.nthreads()) # Typically sys_threads (i.e. Sys.CPU_THREADS) does not change between runs, thus it will precompile well. | |
wts = nextpow2(StaticInt{Threads.nthreads()}()) # Typically sys_threads (i.e. Sys.CPU_THREADS) does not change between runs, thus it will precompile well. |
Should no longer be required due to JuliaSIMD/CPUSummary.jl#31 |
The use of CPUInfo makes
--trim
difficult.Removing this dependency here would unlock a large amount of libraries which use the Polyester library to be trimmmable (notably e.g. almost everything in the SciML ecosystem).
However, we might need a bit more discussion on the exact removal of this feature.