Chris Elrod
Chris Elrod
I think I could add a function that puts them all to sleep. You'd have to call it manually when transitioning. It'd be most likely to help (vs `@threads`) if...
There is now a `ThreadingUtilities.sleep_all_tasks()`, tested here: https://github.com/JuliaSIMD/ThreadingUtilities.jl/blob/716d26f4650b0a4042b87413f9952646501949ff/test/staticarrays.jl#L82
Hmm. What do you get for ```julia using Polyester Polyester.num_threads() length(Polyester.ThreadingUtilities.TASKS) ``` ?
The two most likely places this can be going wrong: 1. Multiple sockets not recognized, so if you have 2x 64 cores, it thinks you only have 1x 64 cores....
Sorry about repeatedly closing this issue. Apparently `C-ret` to comment now chooses "Close with comment" instead of "Comment"?
> The source of the problem seems to be the function `free_threads!` of `PolyesterWeave`, as it operates only on the first element of the worker bit masks tuple. It is...
At one point in time, it was important to support WINE, but I believe this is no longer the case. `using Hwloc` causes Julia to crash on WINE, which meant...
> since `worker_pointer()` always returns the same value. Therefore the loop applies the masks `torelease` to the same worker mask repeatedly. Ah, you're right. That's definitely a bug.
Polyester tries very hard not to capture variables in closures. The `a = ` inside the loop tells it not to take any `a`s from the surrounding scope.
`@batch` only threads the outer loop. For example, from `@macroexpand`: ```julia var"#32###LOOP##" = static(0):step_2:size(S, static(2)) - step_1 #= /home/chriselrod/.julia/dev/CheapThreads/src/closure.jl:137 =# var"#33###ITER_LENG##" = CheapThreads.static_length(var"#32###LOOP##") #= /home/chriselrod/.julia/dev/CheapThreads/src/closure.jl:138 =# var"#34###LOOP_STEP##" = (CheapThreads.CheapThreads).static_step(var"#32###LOOP##") #=...