Skip to content

Default scope ignores distributed workers with SlurmClusterManager #663

@cyanescent

Description

@cyanescent

When using Dagger (v0.19.2) with SlurmClusterManager, the default scope does not distribute tasks across workers. All tasks execute on the master process (worker 1), while pmap distributes correctly.

using Distributed, SlurmClusterManager
addprocs(SlurmManager())
using Dagger

@everywhere function task(x)
    sleep(1)
    return myid()
end

n = 16 # number of tasks to distribute

# Test 1: default scope
t1 = @elapsed results = fetch.([Dagger.@spawn task(i) for i in 1:n])

# Test 2: explicit workers scope
t2 = @elapsed results_scoped = Dagger.with_options(scope=Dagger.scope(workers=workers())) do
        fetch.([Dagger.@spawn task(i) for i in 1:n])
end

# Test 3: pmap for comparison
t3 = @elapsed results_pmap = pmap(task, 1:n)

println("Available workers: $(workers())")
println("\nDefault:      time=$(round(t1,digits=1))s, workers used: $results")
println("Scoped:       time=$(round(t2,digits=1))s, workers used: $results_scoped")
println("pmap (for comparison): time=$(round(t3,digits=1))s, workers used: $results_pmap")

exit(0)

On slurm: sbatch mwe.sh where the script is:

#!/bin/bash

#SBATCH --job-name=dagger_mwe
#SBATCH --nodes=2
#SBATCH --ntasks=8
#SBATCH --time=00:10:00
#SBATCH --output=%j.out

module load julia/1.12.0
export JULIA_DEPOT_PATH=$HOME/.julia

julia mwe.jl

I would expect the scope in the second example to be the default.

Available workers: [2, 3, 4, 5, 6, 7, 8, 9]

Default:      time=11.4s, workers used: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
Scoped:       time=7.1s, workers used: [9, 2, 5, 8, 6, 8, 4, 7, 8, 9, 3, 3, 3, 2, 5, 7]
pmap (for comparison): time=2.9s, workers used: [2, 3, 4, 5, 6, 7, 8, 9, 2, 3, 5, 4, 9, 7, 8, 6]

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions