JuliaParallel / JuliaParallel/MPI.jl

MPI.jl with cray-mpich on the Cray XC50 is not running

Open
#616 7 comments 0 reactions 0 assignees View on GitHub
Cray MPI
Dominant language
Julia
Stars
439
Forks
127
Avg merge
19h 6m
Merged PRs (30d)
17

Description

The admin has installed the JULIA with the Modules on the system directory of the Cray XC50.

```
$ /opt/prg/.src/julia/julia-1.7.3-full.gnu> cat Make.user
prefix=/opt/prg/julia/1.7.3/GNU/73

$ /opt/prg/.src/julia/julia-1.7.3-full.gnu> cat conf.gnu
module swap PrgEnv-cray PrgEnv-gnu
module load PrgEnv-gnu
module load cmake
make -C deps -j 20 USE_BINARYBUILDER=0
make
make install
```

And then, I have been trying to set the MPI.jl on my account but MPI.jl gets me errors as follows.
Could I get some clue about the problem?

```
user1@login:~:> module list
Currently Loaded Modulefiles:
1) modules/3.2.11.1 13) dmapp/7.1.1-6.0.7.0_34.3__g5a674e0.ari
2) eproxy/2.0.22-6.0.7.0_37.1__g1ebe45c.ari 14) gni-headers/5.0.12.0-6.0.7.0_24.1__g3b1768f.ari
3) gcc/7.3.0 15) xpmem/2.2.15-6.0.7.1_5.7__g7549d06.ari
4) craype-network-aries 16) job/2.2.3-6.0.7.0_44.1__g6c4e934.ari
5) craype-x86-skylake 17) dvs/2.7_2.2.112-6.0.7.1_6.1__ge96a422
6) craype/2.5.15 18) alps/6.6.43-6.0.7.0_26.4__ga796da3.ari
7) cray-mpich/7.7.3 19) rca/2.2.18-6.0.7.0_33.3__g2aa4f39.ari
8) pbs/default 20) atp/2.1.3
9) cray-lprgci/18.07.1 21) perftools-base/7.0.4
10) udreg/2.3.2-6.0.7.0_33.18__g5196236.ari 22) PrgEnv-gnu/6.0.4
11) ugni/6.0.14.0-6.0.7.0_23.1__gea11d3d.ari 23) julia/1.7.3
12) pmi/5.0.14

user1@login:~:>
user1@login:~:>
user1@login:~:> export JULIA_MPI_PATH=$CRAY_MPICH_DIR
user1@login:~:>
user1@login:~:> echo $JULIA_MPI_PATH
/opt/cray/pe/mpt/7.7.3/gni/mpich-gnu/7.1
user1@login:~:>
user1@login:~:> julia --project -e 'import Pkg; Pkg.add("MPI")'
user1@login:~:> julia --project -e 'ENV["JULIA_MPI_BINARY"]="system"; using Pkg; Pkg.build("MPI"; verbose=true)'
Building MPI → `~/.julia/scratchspaces/44cfe95a-1eb2-52ea-b672-e2afdf69b78f/d56a80d8cf8b9dc3050116346b3d83432b1912c0/build.log`
Progress [> ] 0/1
[ Info: using system MPI
┌ Info: Using implementation
│ libmpi = "/opt/cray/pe/mpt/7.7.3/gni/mpich-gnu/7.1/lib/libmpich"
│ mpiexec_cmd = `/opt/cray/pe/mpt/7.7.3/gni/mpich-gnu/7.1/bin/mpiexec`
└ MPI_LIBRARY_VERSION_STRING = "MPI VERSION : CRAY MPICH version 7.7.3 (ANL base 3.2)\nMPI BUILD INFO : Built Wed Aug 22 15:44:54 2018 (git hash b88a4a20c) MT-G\n"
┌ Info: MPI implementation detected
│ impl = CrayMPICH::MPIImpl = 7
│ version = v"7.7.3"
└ abi = "MPICH"
Precompiling project...
13 dependencies successfully precompiled in 4 seconds

user1@login:~:> julia
_
_ _ _(_)_ | Documentation: https://docs.julialang.org
(_) | (_) (_) |
_ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help.
| | | | | | |/ _` | |
| | |_| | | | (_| | | Version 1.7.3 (2022-05-06)
_/ |\__'_|_|_|\__'_| |
|__/ |

julia> using MPI

julia> MPI.Init()
[Mon Jul 11 16:22:54 2022] [unknown] Fatal error in PMPI_Init_thread: Other MPI error, error stack:
MPIR_Init_thread(537):
MPID_Init(246).......: channel initialization failed
MPID_Init(638).......: PMI2 init failed: 1

signal (6): Aborted
in expression starting at REPL[2]:1
gsignal at /lib64/libc.so.6 (unknown line)
abort at /lib64/libc.so.6 (unknown line)
MPID_Abort at /opt/cray/pe/mpt/7.7.3/gni/mpich-gnu/7.1/lib/libmpich.so (unknown line)
MPIR_Handle_fatal_error at /opt/cray/pe/mpt/7.7.3/gni/mpich-gnu/7.1/lib/libmpich.so (unknown line)
MPIR_Err_return_comm at /opt/cray/pe/mpt/7.7.3/gni/mpich-gnu/7.1/lib/libmpich.so (unknown line)
MPI_Init_thread at /opt/cray/pe/mpt/7.7.3/gni/mpich-gnu/7.1/lib/libmpich.so (unknown line)
_init_thread at /home/user1/.julia/packages/MPI/08SPr/src/environment.jl:156 [inlined]
#Init#32 at /home/user1/.julia/packages/MPI/08SPr/src/environment.jl:94
Init at /home/user1/.julia/packages/MPI/08SPr/src/environment.jl:82
unknown function (ip: 0x7f5ded4ab89e)
_jl_invoke at /mnt/lustre/opt/prg/.src/julia/julia-1.7.3.gnu/src/gf.c:2247 [inlined]
jl_apply_generic at /mnt/lustre/opt/prg/.src/julia/julia-1.7.3.gnu/src/gf.c:2429
jl_apply at /mnt/lustre/opt/prg/.src/julia/julia-1.7.3.gnu/src/julia.h:1788 [inlined]
do_call at /mnt/lustre/opt/prg/.src/julia/julia-1.7.3.gnu/src/interpreter.c:126
eval_value at /mnt/lustre/opt/prg/.src/julia/julia-1.7.3.gnu/src/interpreter.c:215
eval_stmt_value at /mnt/lustre/opt/prg/.src/julia/julia-1.7.3.gnu/src/interpreter.c:166 [inlined]
eval_body at /mnt/lustre/opt/prg/.src/julia/julia-1.7.3.gnu/src/interpreter.c:587
jl_interpret_toplevel_thunk at /mnt/lustre/opt/prg/.src/julia/julia-1.7.3.gnu/src/interpreter.c:731
jl_toplevel_eval_flex at /mnt/lustre/opt/prg/.src/julia/julia-1.7.3.gnu/src/toplevel.c:885
jl_toplevel_eval_flex at /mnt/lustre/opt/prg/.src/julia/julia-1.7.3.gnu/src/toplevel.c:830
jl_toplevel_eval_in at /mnt/lustre/opt/prg/.src/julia/julia-1.7.3.gnu/src/toplevel.c:944
eval at ./boot.jl:373 [inlined]
eval_user_input at /mnt/lustre/opt/prg/.src/julia/julia-1.7.3.gnu/usr/share/julia/stdlib/v1.7/REPL/src/REPL.jl:150
repl_backend_loop at /mnt/lustre/opt/prg/.src/julia/julia-1.7.3.gnu/usr/share/julia/stdlib/v1.7/REPL/src/REPL.jl:246
start_repl_backend at /mnt/lustre/opt/prg/.src/julia/julia-1.7.3.gnu/usr/share/julia/stdlib/v1.7/REPL/src/REPL.jl:231
#run_repl#47 at /mnt/lustre/opt/prg/.src/julia/julia-1.7.3.gnu/usr/share/julia/stdlib/v1.7/REPL/src/REPL.jl:364
run_repl at /mnt/lustre/opt/prg/.src/julia/julia-1.7.3.gnu/usr/share/julia/stdlib/v1.7/REPL/src/REPL.jl:351
_jl_invoke at /mnt/lustre/opt/prg/.src/julia/julia-1.7.3.gnu/src/gf.c:2247 [inlined]
jl_apply_generic at /mnt/lustre/opt/prg/.src/julia/julia-1.7.3.gnu/src/gf.c:2429
#936 at ./client.jl:394
jfptr_YY.936_30555 at /mnt/lustre/opt/prg/julia/1.7.3/GNU/73/lib/julia/sys.so (unknown line)
_jl_invoke at /mnt/lustre/opt/prg/.src/julia/julia-1.7.3.gnu/src/gf.c:2247 [inlined]
jl_apply_generic at /mnt/lustre/opt/prg/.src/julia/julia-1.7.3.gnu/src/gf.c:2429
jl_apply at /mnt/lustre/opt/prg/.src/julia/julia-1.7.3.gnu/src/julia.h:1788 [inlined]
jl_f__call_latest at /mnt/lustre/opt/prg/.src/julia/julia-1.7.3.gnu/src/builtins.c:757
#invokelatest#2 at ./essentials.jl:716 [inlined]
invokelatest at ./essentials.jl:714 [inlined]
run_main_repl at ./client.jl:379
exec_options at ./client.jl:309
_start at ./client.jl:495
jfptr__start_22092 at /mnt/lustre/opt/prg/julia/1.7.3/GNU/73/lib/julia/sys.so (unknown line)
_jl_invoke at /mnt/lustre/opt/prg/.src/julia/julia-1.7.3.gnu/src/gf.c:2247 [inlined]
jl_apply_generic at /mnt/lustre/opt/prg/.src/julia/julia-1.7.3.gnu/src/gf.c:2429
jl_apply at /mnt/lustre/opt/prg/.src/julia/julia-1.7.3.gnu/src/julia.h:1788 [inlined]
true_main at /mnt/lustre/opt/prg/.src/julia/julia-1.7.3.gnu/src/jlapi.c:559
jl_repl_entrypoint at /mnt/lustre/opt/prg/.src/julia/julia-1.7.3.gnu/src/jlapi.c:701
main at julia (unknown line)
__libc_start_main at /lib64/libc.so.6 (unknown line)
_start at julia (unknown line)
Allocations: 2722 (Pool: 2710; Big: 12); GC: 0
Aborted

user1@login:~:>
```

Contributor guide

No contributing guide indexed for this repository

Research direction

Start by reproducing the failure with the documented Cray module list, JULIA_MPI_PATH, JULIA_MPI_BINARY, and `MPI.Init()`. Read `src/environment.jl` around line 156 and compare the behavior when launched through the reported environment; done means MPI initialization succeeds on the Cray XC50 without the PMI2 error.

Written by the indexing model from the issue text.

Assessment

Tech stack
julia
Domain
hpc
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.