Controlling @threads (or similar) parallelism level

You can do this with OhMyThreads.jl

You’d just write

using OhMyThreads
memory_per_item = estimate_memory(chunk[1])

@tasks for i in eachindex(chunk)
    @set ntasks = floor(Int, system_memory / (memory_per_item * safe_inflation_factor))
    memory_intensive_computation(chunk[i])
end

or

using OhMyThreads
memory_per_item = estimate_memory(chunk[1])

ntasks = floor(Int, system_memory / (memory_per_item * safe_inflation_factor))

tforeach(eachindex(chunk); ntasks) do i
    memory_intensive_computation(chunk[i])
end
3 Likes