This is a package to help use all the CPU cores when running multithreaded simulations or solvers. With Threads.@threads or OhMyThreads.jl, each parallel loop needs to spawn new tasks on each outer iteration. Loops that don’t depend on each other can’t easily overlap. JobGraphs.jl lets you describe loops of parallel loops and their dependencies. This description can be planned and then run many times on a fixed number of worker tasks.
Linear Algebra · The Julia Language might be what you are looking for, if you just want to know how fast a CPU is and don’t have a specific problem in mind.
JobGraphs is built using @spawn in a loop right now. JobGraphs is another scheduler that sits to the left of the Julia scheduler in this diagram. It runs job chunks on Julia worker tasks, so it doesn’t give low level control over this. The ThreadPinning.jl package can be used to control what cores or hyperthreads Julia will use. I could also add an option to use Threads.@threads :static so each worker task has a fixed thread id.