chapelgasnet

Multilocale Chapel: make check fails (GASNet: Invalid number of nodes: -nl)


I'm trying to run Chapel in multi-locale mode with Slurm. However, 'make check' fails. Could someone help me with that?

I used Chapel 1.23.0. Here are the actual commands I used:

cd chapel-1.23.0/
export CHPL_HOME=$PWD
source $CHPL_HOME/util/setchplenv.bash
export CHPL_COMM=gasnet
export CHPL_LAUNCHER=slurm-srun
export CHPL_TARGET_CPU=native
make && make check

Here is the error messages I got:

== Actual Test Output (raw, with verbose) ==
srun --job-name=CHPL-hello6-tas --quiet --nodes=4 --ntasks=4 --ntasks-per-node=1 --cpus-per-task=16 --exclusive --mem=0 --kill-on-bad-exit  /home/user1/.chpl/chapel-test-P4CwK/hello6-taskpar-dist_real -nl4 --printLocaleName=false -v
GASNet: Invalid number of nodes: -nl4
GASNet: Usage '/home/user1/.chpl/chapel-test-P4CwK/hello6-taskpar-dist_real <num_nodes> {program arguments}'

Solution

  • Assuming you're using the udp substrate with gasnet ($CHPL_HOME/util/printchplenv shows CHPL_COMM_SUBSTRATE: udp) then slurm-srun doesn't work in that particular configuration. The udp substrate requires CHPL_LAUNCHER=amudprun. From https://chapel-lang.org/docs/platforms/udp.html#using-the-udp-conduit-with-slurm, you should be able to do:

    export CHPL_LAUNCHER=amudprun
    export GASNET_SPAWNFN=C
    export GASNET_CSPAWN_CMD="srun -N%N %C"
    

    Note that you'll have to redo the top-level make command.

    This tells Chapel to use the amudprun launcher, and then lets amudprun know how to spawn onto this system (in this case using srun instead of defaulting to using ssh)