Please re-read my prior email (MCA parameters are not always set as environment 
variables):

    https://www.mail-archive.com/devel@lists.open-mpi.org/msg19958.html

If you want to read the value of MCA parameters in MPI applications, you should 
be using the MPI_T API. That will work regardless of whether you pass MCA 
parameters on the mpirun command line, in the openmpi-mca-params.conf file, or 
other mechanism.



> On Feb 24, 2017, at 1:36 PM, Dahai Guo <dahaiguo2...@yahoo.com> wrote:
> 
> Basically, I like to set apath in the param conf file, and let OMPI broadcast 
> it to each MPI rank.  
> 
> In the following example, it prints the value as NULL, if I just set it in 
> the conf file. So My question is how to update some ompi base code to make it 
> right?
> 
>   If I set it in mpirun -mca apath=sth, I can update a bit "setup_folk" and 
> get it right for each rank. 
> 
> Dahai
> 
> 
> #include <stdlib.h>
> #include <math.h>
> #include <stdio.h>
> #include <mpi.h>
> 
> int main(int argc, char *argv[] )
> {
> 
>   int    provided, rank, Size, ierr;
> 
>   ierr=MPI_Init_thread(&argc,&argv,MPI_THREAD_FUNNELED, &provided);
>   ierr=MPI_Comm_rank(MPI_COMM_WORLD, &rank);
>   ierr=MPI_Comm_size(MPI_COMM_WORLD, &Size);
> 
>    char *value = getenv("OMPI_MCA_apath");
> 
>   printf(" --- Hi from rank = %d, path0 = %s  \n", rank, value );
> 
>   ierr=MPI_Barrier(MPI_COMM_WORLD);
>   ierr=MPI_Finalize();
> 
>   return 0;
> }
> 
> 
> From: Jeff Squyres (jsquyres) <jsquy...@cisco.com>
> To: Dahai Guo <dahaiguo2...@outlook.com>; Open MPI Developers List 
> <devel@lists.open-mpi.org> 
> Cc: Dahai Guo <dahaiguo2...@yahoo.com>
> Sent: Friday, February 24, 2017 12:27 PM
> Subject: Re: [OMPI devel] define a new ENV variable in 
> etc/openmpi-mca-params.conf
> 
> It's still not clear what you're trying to do.
> 
> Are you setting an MCA parameter, or are you trying to forward arbitrary 
> environment variables?  Are you working in MPI processes (or executables 
> launched by MPI processes), or in the Open MPI code base itself?
> 
> Also, Ralph and I chatted: what he said is not correct for the v2.x series 
> (my original answer was correct).  We think what Ralph said may have been 
> true in prior releases, but without further detailed information on what 
> you're trying to do, we didn't dig any further.
> 
> 
> 
> 
> > On Feb 24, 2017, at 11:35 AM, Dahai Guo via devel 
> > <devel@lists.open-mpi.org> wrote:
> > 
> > 
> > I need this parameter used in my other codes related to ompi, 
> > do I need to register "OMPI_MCA_apath" in some codes in OMPI? if so, 
> > usually in which codes?  
> > 
> > Dahai 
> > 
> > 
> > 
> > 
> > From: "r...@open-mpi.org" <r...@open-mpi.org>
> > To: OpenMPI Devel <devel@lists.open-mpi.org> 
> > Sent: Friday, February 24, 2017 9:44 AM
> > Subject: Re: [OMPI devel] define a new ENV variable in 
> > etc/openmpi-mca-params.conf
> > 
> > I think Jeff got lost in the weeds here. If you define a new MCA param in 
> > the default param file, we will automatically pick it up and it will be in 
> > the environment of your application. You don’t need to do anything. 
> > However, you checked for the wrong envar. Anything you provide is going to 
> > have an “OMPI_MCA_” attached to the front of it. So for your “apath” 
> > example, the envar will be
> > 
> > OMPI_MCA_apath
> > 
> > HTH
> > Ralph
> > 
> > > On Feb 24, 2017, at 7:25 AM, Jeff Squyres (jsquyres) <jsquy...@cisco.com> 
> > > wrote:
> > > 
> > > On Feb 24, 2017, at 10:11 AM, Dahai Guo <dahaiguo2...@yahoo.com> wrote:
> > >> 
> > >> oops, I should use the word "MCA parameters". If I define a MCA 
> > >> parameter (apath, for example) in etc/openmpi-mca-params.conf, how can 
> > >> function setup_fork in ompi/orte/mca/schizo/ompi/schizo_ompi.c get its 
> > >> value?  I tried to call getenv("apath") there, which return null. 
> > > 
> > > Settings MCA parameters does not necessarily set environment variables.  
> > > More below.
> > > 
> > >> However, If I defined it in the cmd line, mpirun -mca apath=sth .., then 
> > >> I could get it in setup_fork.
> > > 
> > > There are multiple mechanisms in which MCA params are passed to the 
> > > back-end MPI processes.
> > > 
> > > 1. If they are set via "--mca a b" on the mpirun command line, they are 
> > > passed back to the launching orteds as part of the launch schema for the 
> > > job.  I.e., the MCA param names and values are bundled up and sent in the 
> > > network message to each of the orteds that are involved in the launching 
> > > of the target processes.  IIRC, the launching orteds will fork, setenv a 
> > > corresponding environment variable for each of the MCA param values in 
> > > the launch schema, and then exec the MPI process.  The MPI process then 
> > > picks up those MCA param values from the environment variables.
> > > 
> > > 2. If they are set via the openmpi-mca-params.conf file, they are not 
> > > sent via network message in the launch schema.  Instead, each Open MPI 
> > > process (including MPI processes and orteds) reads that file upon startup 
> > > to get the values (more specifically: all Open MPI processes *always* 
> > > read this file before processing whatever MCA param values are sent in 
> > > the launch schema).  A consequence: if openmpi-mca-params.conf is not on 
> > > a network filesystem (and visible to all Open MPI processes on all 
> > > servers), you need to copy the change you made to the one 
> > > openmpi-mca-params.conf file to all copies of openmpi-mca-params.conf.
> > > 
> > > -----
> > > 
> > > What are you trying to do?
> > > 
> > > If you're working in an MPI application, you can use the MPI_T API to 
> > > retrieve MCA parameter names and their current values (regardless of 
> > > whether mechanism #1 or #2 -- or another mechanism -- is used).
> > > 
> > > If you're working in the Open MPI code base, you should be using the 
> > > internal opal_mca_var API to retrieve and/or set MCA param values.  See 
> > > https://github.com/open-mpi/ompi/blob/master/opal/mca/base/mca_base_var.h 
> > > for all the functions available in this API.
> > > 
> > > -- 
> > > Jeff Squyres
> > > jsquy...@cisco.com
> > 
> > > 
> > > _______________________________________________
> > > devel mailing list
> > > devel@lists.open-mpi.org
> > > https://rfd.newmexicoconsortium.org/mailman/listinfo/devel
> > 
> > _______________________________________________
> > devel mailing list
> > devel@lists.open-mpi.org
> > https://rfd.newmexicoconsortium.org/mailman/listinfo/devel
> > 
> > _______________________________________________
> > devel mailing list
> > devel@lists.open-mpi.org
> > https://rfd.newmexicoconsortium.org/mailman/listinfo/devel
> 
> 
> 
> -- 
> Jeff Squyres
> jsquy...@cisco.com
> 
> 
> 


-- 
Jeff Squyres
jsquy...@cisco.com

_______________________________________________
devel mailing list
devel@lists.open-mpi.org
https://rfd.newmexicoconsortium.org/mailman/listinfo/devel

Reply via email to