Repository navigation
Releases
Releases · hakkelt/NestedThreading.jl
v0.1.4
NestedThreading v0.1.4
- A nested hard limit that an enclosing scope already enforces is no longer entered:
with_restricted_threadsinside a saturated@budgeted_threadsloop drops from about 3 us to 0.25 us. Julia 1.11 and later; on 1.10 every scope is entered as before. - New
thread_limit(name): the hard limit the enclosing scopes put on a pool. GuardedPoolguards must act for the whole process while held.
Merged pull requests:
v0.1.3
v0.1.2
NestedThreading v0.1.2
quiesce_foreign_pools(): before aThreads.@threadsregion, registered pools can release Julia's threads, so the region does not wait for spinning workers of another threading library (#3).- Soft thread defaults (
with_thread_default): run a computation with every registered library atnthreads by default, without capping the calls inside it the way a hardwith_thread_budgetwould. - Thread grants (
with_thread_grant): let a call known to be large enough thread despite a soft default in force. Grants never override a hard limit. - Park hooks (
register_park_hook!,park_openblas): when a grant closes and a pool's count goes down, the library can release the cores its idle workers would otherwise keep spinning on. - A pool is never parked while a partial hard limit is open, and a worker that another task's
@batchholds is never parked (#4).
Merged pull requests:
v0.1.1
NestedThreading v0.1.1
Changes:
- New only allowlist keyword on with_thread_budget/with_restricted_threads/with_full_threads: only = (:blas, :mkl) restricts exactly those pools and leaves everything else untouched, even past this scope's own budget.
Merged pull requests: