[mvapich-discuss] MVAPITCH environment variables for preconnecting paths and for process-to-core mappings

Subramoni, Hari subramoni.1 at osu.edu
Fri Jul 24 11:13:03 EDT 2020


Dear, Tom.

Clarification on Question 1: To the best of my knowledge, none of the MPI libraries you mentioned (CrayMPI, IntelMPI, HPE/SGI MPT) "precompute communication paths between different ranks ahead of time". The environment variables you have mentioned here is one that controls when a process creates a network end point to communicate with a peer process (either at job startup or when a process really wants to send a message to a peer process). This feature is typically applicable only for communication operations that rely on the network interconnect. The corresponding environment variable for MVAPICH2, as you have correctly noted is MV2_ON_DEMAND_THRESHOLD.

The following section of the MVAPICH2 user guide has more details on this parameter

http://mvapich.cse.ohio-state.edu/static/media/mvapich/mvapich2-2.3.4-userguide.html#x1-22500011.43

This threshold also has an impact on speed at which jobs can be started. The following link has more details about the impact MV2_ON_DEMAND_THRESHOLD has on the performance of job startup.

http://mvapich.cse.ohio-state.edu/performance/job-startup/

MVAPICH2 has several environment variables to control how processes are bound to physical cores. There are higher-level/abstract setting that allow you to distribute processes automatically. The environment variable to manually specify the process to core binding policy is MV2_CPU_MAPPING (e.g. MV2_CPU_MAPPING=0:1:2:...). You can use MV2_SHOW_CPU_BINDING environment variable to make display the process to core binding policy that was actually chosen for the execution.

These details are covered in slides #31 - #38 of the MVAPICH2 tutorial (link below) that we conducted as part of the Annual MVAPICH User Group (MUG) Meeting (http://mug.mvapich.cse.ohio-state.edu/).

http://mug.mvapich.cse.ohio-state.edu/static/media/mug/presentations/19/subramoni-mug-19.pdf

The following section of the MVAPICH2 user guide also has more details on how to map processes to cores.

http://mvapich.cse.ohio-state.edu/static/media/mvapich/mvapich2-2.3.4-userguide.html#x1-640006.5

Please let us know if you have any questions about MVAPICH2 and we will be glad to assist.

Best,
Hari.

-----Original Message-----
From: mvapich-discuss-bounces at cse.ohio-state.edu <mvapich-discuss-bounces at mailman.cse.ohio-state.edu> On Behalf Of Oppe, Thomas C ERDC-RDE-ITL-MS Contractor
Sent: Friday, July 24, 2020 10:51 AM
To: mvapich-discuss at cse.ohio-state.edu <mvapich-discuss at mailman.cse.ohio-state.edu>
Subject: [mvapich-discuss] MVAPITCH environment variables for preconnecting paths and for process-to-core mappings

Dear Sir:

I am working with MVAPITCH2 libraries on a Cray CS500 with 64 1.5 GHz AMD EPYC 7542 Rome cores per node, 2 sockets per node, 32 cores per socket.

Question 1:  Is there an environment variable for pre-computing all possible pairwise paths from each rank to every other rank rather than computing the paths dynamically as needed when a communication request is made?  Many other MPI implementations have this feature, such as

Intel MPI:  export I_MPI_DYNAMIC_CONNECTION=0

Cray MPICH:  export MPICH_GNI_DYNAMIC_CONN=disabled

HPE/SGI MPT:  export MPI_CONNECTIONS_THRESHOLD=<val>, where <val> is greater than the number of ranks being used.

Open MPI:  export OMPI_MCA_mpi_preconnect_mpi=1

I think the variable for MVAPITCH may be

export MV2_ON_DEMAND_THRESHOLD=<val>, where <val> is greater than the number of ranks being used.  Is that correct?

Question 2:  Is there an MVAPITCH environment variable for a process-to-core placement mapping?  For example, if I want to space out the processes on a node in the case that a node is only 1/4 populated, say putting 16 processes on a 64-core node, I can do this:

Intel MPI:  export I_MPI_PIN_PROCESSOR_LIST="shift=4"

Cray MPICH:   aprun -d 4 -n <procs>

HPE/SGI MPT:  export MPI_DSM_CPULIST="0-60/4:allhosts"   or
                           export MPI_DSM_CPULIST="0,4,8,12,16,...,60:allhosts"

Open MPI:  not sure, maybe
export OMPI_MCA_rmaps_base_mapping_policy=ppr:16:node:PE=1
export OMPI_MCA_rmaps_base_n_pernode=16

What is the MVAPITCH environment variable to process pinning and process-to-core mapping?

Thank you for any information.

Tom Oppe

-----------------------------------------------------------------------------
Thomas C. Oppe
HPCMP Benchmarking Team
HITS Team SAIC
Thomas.C.Oppe at erdc.dren.mil
Work:  (601) 634-2797
Cell:    (601) 642-6391
-----------------------------------------------------------------------------

_______________________________________________
mvapich-discuss mailing list
mvapich-discuss at cse.ohio-state.edu
http://mailman.cse.ohio-state.edu/mailman/listinfo/mvapich-discuss



More information about the mvapich-discuss mailing list