I missed the call in the SPML.  If that's already there (it would have
caused major problems previously, which is why I assumed it wasn't), then
you're good.

Brian

On 1/16/14 10:12 PM, "Igor Ivanov" <igor.iva...@itseez.com> wrote:

>I have supposed that BML add_procs() is called by PML and I see such
>call in ompi_mpi_init() as ".. ret = MCA_PML_CALL(add_procs(procs,
>nprocs));...". Moreover BML add_procs() is called by SPML (OSHMEM`s PML)
>in oshmem_shmem_init().
>So it looks that all should be correct. Or am I still missing something?
>
>Igor
>
>On 16.01.2014 22:21, Barrett, Brian W wrote:
>> If a process is using the Portals 4 MTL and calls shmem_init, the BTLS
>> will be initialized properly, but as of right now, no one will call
>> add_procs() on the BML (which calls add_procs() on the BTLs).  So the
>> first shmem communication will fail, because the proc lookup will fail
>> inside the BTL.  If the MPI layer doesn't call add_procs(), someone else
>> has to.  In this case, that someone else is the OpenSHMEM layer.
>>
>> Brian
>>
>> On 1/15/14 7:45 AM, "Igor Ivanov" <igor.iva...@itseez.com> wrote:
>>
>>> Brian,
>>>
>>> Sorry for slow reaction.
>>> I am not sure I understand your concern. Could you please make it
>>> clearer and review modified patch (I have figured out issue in my
>>> previous patch as absence of complete btl initialization in case PML
>>> components different from bfo and ob1 needed for OSHMEM.)
>>>
>>> Igor
>>>
>>> On 03.01.2014 00:04, Barrett, Brian W wrote:
>>>> Igor -
>>>>
>>>> Sorry for the slow reply; I was on vacation for the last week and a
>>>> half.
>>>>
>>>> The patch doesn't look quite right to me.  If the cm PML is used, the
>>>> spml
>>>> (or something else in the OSHMEM layer) is going to have to call
>>>> add_procs
>>>> on the BML to initialize the procs arrays for the BTLs.
>>>>
>>>> Brian
>>>>
>>>> On 12/23/13 3:49 AM, "Igor Ivanov" <igor.iva...@itseez.com> wrote:
>>>>
>>>>> Brian,
>>>>>
>>>>> Could you look at patch based on your suggestion. It resolves the
>>>>>issue
>>>>> with mca variable.
>>>>>
>>>>> Igor
>>>>>
>>>>> On 18.12.2013 01:48, Barrett, Brian W wrote:
>>>>>> The proposed solution at the bottom is wrong.  There aren't two
>>>>>> different
>>>>>> BMLs, there's one, and it lives in OMPI.
>>>>>>
>>>>>> The solution is to open the bml and btls in ompi_mpi_init and not in
>>>>>> the
>>>>>> pmls.  I checked, and the bml will deal with add_procs being called
>>>>>> multiple times on the same proc, so just moving the framework open /
>>>>>> init
>>>>>> is sufficient.  This will also solve the MTL problem.
>>>>>>
>>>>>> Brian
>>>>>>
>>>>>> On 12/17/13 8:33 AM, "Joshua Ladd" <josh...@mellanox.com> wrote:
>>>>>>
>>>>>>> I believe Devendar Bureddy nailed the root cause. I am providing
>>>>>>>his
>>>>>>> excellent analysis below:
>>>>>>>
>>>>>> >From Devendar:
>>>>>>> with curiosity i looked at this issue. here's my 2 cents
>>>>>>> I think issue is because of BTL components is opened&closed
>>>>>>> twice(ompi_init, yoda) which leading to incorrect usage of var
>>>>>>> groups.
>>>>>>> The following sequence of events creating invalid memory
>>>>>>>
>>>>>>> 1) all openib component parameters registered in ompi_mpi_init
>>>>>>> main > start_pes> shmem_init -> oshmem_shmem_init -> ompi_mpi_init
>>>>>>>->
>>>>>>> mca_base_framework_open -> mca_pml_base_open .....
>>>>>>> mca_bml_base_open...
>>>>>>> -> btl_openib_component_register()
>>>>>>>
>>>>>>> *       for all string variables it allocated a memory block
>>>>>>> (var->mbv_storage
>>>>>>> = PTR)
>>>>>>>
>>>>>>> At this time a new var group id:114 (of parent group id: 112) is
>>>>>>> created
>>>>>>> for all openib component variables.
>>>>>>>
>>>>>>> 2) This var group is de-registered in ompi_mpi_init. It marks all
>>>>>>> variables as invalid. but, the group&vars is still exist
>>>>>>> main > start_pes> shmem_init -> oshmem_shmem_init ->
>>>>>>> mca_pml_base_select
>>>>>>> -> mca_base_components_close -> ... -> mca_bml_base_close ->
>>>>>>> mca_base_framework_close -> mca_base_var_group_deregister(groupid:
>>>>>>> 114) *
>>>>>>> all string variables memory is deallocated ( set var->mbv_storage =
>>>>>>> NULL;)
>>>>>>>
>>>>>>> 3) because of step 2). btl_openib.so shared lib dlclosed
>>>>>>>
>>>>>>> 4) Now we are reopening openib in yoda and registering the openib
>>>>>>> variables again.
>>>>>>> main > start_pes> shmem_init > oshmem_shmem_init -> _shmem_init ->
>>>>>>> mca_base_framework_open -> mca_spml_base_open>
>>>>>>> mca_spml_yoda_component_open-> ..... mca_bml_base_open... ->
>>>>>>> btl_openib_component_register -> register_variables()
>>>>>>>
>>>>>>> *       In register_variables(), var_find() finds this variable( from 
>>>>>>> the
>>>>>>> same
>>>>>>> old group: 114) and reset the variables.
>>>>>>> *       For string variables, it allocated the buffers again (
>>>>>>> (var->mbv_storage = PTR)
>>>>>>> *       note that group:114 is not belongs to yoda component.
>>>>>>>
>>>>>>> 5) In yoda component close, it never finds above group(114) because
>>>>>>> this
>>>>>>> is not belongs to this component. So, do not call
>>>>>>> mca_base_var_group_deregister() again on the var group. string var
>>>>>>> memory
>>>>>>> is not deallocated.
>>>>>>> main > start_pes> shmem_init > oshmem_shmem_init -> _shmem_init ->
>>>>>>> mca_spml_base_select ->..> mca_spml_yoda_component_close ->
>>>>>>> mca_bml_base_close -> mca_base_var_group_find().
>>>>>>>
>>>>>>> 6) because of step 5), the btl_openib.so is dlclosed(). This step
>>>>>>> invalidates, all openib string vars memory ( var->mbv_storage =
>>>>>>>PTR)
>>>>>>> allocated in step 4)
>>>>>>>
>>>>>>> 7) in ompi_mpi_finalize(), it will loop through all vars and
>>>>>>> finalizes
>>>>>>> and deallocate the string var memory (var->mbv_storage = PTR)
>>>>>>> ompi_mpi_finalize >...> mca_base_var_finalize * var->mbv_storage =
>>>>>>> PTR
>>>>>>> is
>>>>>>> invalid at this stage and causing the SEGFAULT.
>>>>>>>
>>>>>>>
>>>>>>> This also explains why Dinar's patch, kostul_fix.patch
>>>>>>>
>>>>>>> 
>>>>>>>(http://bgate.mellanox.com/redmine/attachments/1643/kostul_fix.patch
>>>>>>>),
>>>>>>> resolves the issue. His patch prevents you from finding the invalid
>>>>>>> already opened params.
>>>>>>> So, I see in a lot of these registration functions the signature
>>>>>>>has
>>>>>>> an
>>>>>>> entry for the project name, but now, NULL, is always passed. I see
>>>>>>>a
>>>>>>> note
>>>>>>> by Nathan in
>>>>>>>
>>>>>>> ../opal/mca/base/mca_base_var.c +1311
>>>>>>> {
>>>>>>> /* XXX -- component_update -- We will stash the project name in the
>>>>>>> component */
>>>>>>> return mca_base_var_register (NULL, component->mca_type_name,
>>>>>>>
>>>>>>>
>>>>>>> Seems knowing the project name, oshmem, would allow us to
>>>>>>>distinguish
>>>>>>> between the different BMLs.
>>>>>>>
>>>>>>> Nathan, please advise.
>>>>>>>
>>>>>>> Josh
>>>>>>>
>>>>>>>
>>>>>>> -----Original Message-----
>>>>>>> From: devel [mailto:devel-boun...@open-mpi.org] On Behalf Of Nathan
>>>>>>> Hjelm
>>>>>>> Sent: Monday, December 16, 2013 12:44 PM
>>>>>>> To: Open MPI Developers
>>>>>>> Subject: Re: [OMPI devel] bug in mca framework?
>>>>>>>
>>>>>>> On Mon, Dec 16, 2013 at 05:21:05PM +0000, Joshua Ladd wrote:
>>>>>>>> After speaking with Igor Ivanov about this this morning, he
>>>>>>>> summarized
>>>>>>>> his findings as follows:
>>>>>>>>
>>>>>>>> 1. Valgrind comes up clean.
>>>>>>> Thats good to hear but unfortunate since this seems really like a
>>>>>>> stomping-on-memory problem.
>>>>>>>
>>>>>>>> 2. The issue is not reproduced with a static build.
>>>>>>> This is a red-herring. The variable itself contains garbage. The
>>>>>>> mbv_storage pointer looked like it was on the stack, the name was
>>>>>>>not
>>>>>>> valid, etc. Not sure how we got an mca_base_var_t into that state
>>>>>>> since
>>>>>>> the only time we touch anything in them is in
>>>>>>>mca_base_var_finalize.
>>>>>>> That
>>>>>>> functions cleans up all of the state to two calls to it should be
>>>>>>> harmless.
>>>>>>>
>>>>>>>> 3. A bisection study reveals that problems first appear after
>>>>>>>> commit:
>>>>>>>>
>>>>>>>> 
>>>>>>>>https://svn.open-mpi.org/trac/ompi/changeset/28800/trunk/opal/mca/b
>>>>>>>>as
>>>>>>>> e
>>>>>>>> /mca_base_var.c
>>>>>>> Possibly also a coincidence. That commit only 1) moves the group
>>>>>>> stuff
>>>>>>> into its own file, and 2) adds the mca_base_pvar interface. Its
>>>>>>> possible
>>>>>>> I messed something up in the rest of the code but unlikely. I will
>>>>>>> take
>>>>>>> another look though.
>>>>>>>
>>>>>>> -Nathan
>>>>>>>
>>>>>>>> Josh
>>>>>>>>
>>>>>>>> -----Original Message-----
>>>>>>>> From: devel [mailto:devel-boun...@open-mpi.org] On Behalf Of Jeff
>>>>>>>> Squyres (jsquyres)
>>>>>>>> Sent: Monday, December 16, 2013 12:15 PM
>>>>>>>> To: Open MPI Developers
>>>>>>>> Subject: Re: [OMPI devel] bug in mca framework?
>>>>>>>>
>>>>>>>> It might be worthwhile to run this through valgrind and see if
>>>>>>>> something is being freed incorrectly...?
>>>>>>>>
>>>>>>>>
>>>>>>>> On Dec 16, 2013, at 12:11 PM, Nathan Hjelm <hje...@lanl.gov>
>>>>>>>>wrote:
>>>>>>>>
>>>>>>>>> I took a look at the stacktraces last week and could not identify
>>>>>>>>> where the bug is. I will dig deeper this week and see if I can
>>>>>>>>>come
>>>>>>>> up with the correct fix.
>>>>>>>>> -Nathan
>>>>>>>>>
>>>>>>>>> On Mon, Dec 09, 2013 at 03:17:36PM +0200, Mike Dubman wrote:
>>>>>>>>>>      Nathan,
>>>>>>>>>>      Could you please comment on the Igor`s observations?
>>>>>>>>>>      Thanks
>>>>>>>>>>
>>>>>>>>>>      On Wed, Dec 4, 2013 at 4:44 PM, Igor Ivanov
>>>>>>>> <igor.iva...@itseez.com>
>>>>>>>>>>      wrote:
>>>>>>>>>>
>>>>>>>>>>        On 04.12.2013 17:56, Jeff Squyres (jsquyres) wrote:
>>>>>>>>>>
>>>>>>>>>>          On Dec 4, 2013, at 2:52 AM, Igor Ivanov
>>>>>>>> <igor.iva...@itseez.com>
>>>>>>>>>>          wrote:
>>>>>>>>>>
>>>>>>>>>>            It is the first mca variable with type as string from
>>>>>>>> btl/openib as
>>>>>>>>>>            'device_param_files'. Actually you can disable it and
>>>>>>>>>> get
>>>>>>>> failure on
>>>>>>>>>>            the second.
>>>>>>>>>>
>>>>>>>>>>            Description of case we see:
>>>>>>>>>>            1. openib mca variables are registered during
>>>>>>>>>>startup as
>>>>>>>> stage at
>>>>>>>>>>            select component phase;
>>>>>>>>>>            2. but a winner is cm component and openib mca
>>>>>>>>>>variables
>>>>>>>>>> are
>>>>>>>>>>            deregistered as part of mca group;
>>>>>>>>>>            3. mca variables are not removed from global mca
>>>>>>>>>>array
>>>>>>>>>> but
>>>>>>>> they
>>>>>>>>>>            marked as invalid and memory for string is freed;
>>>>>>>>>>            4. shmem needs openib for yoda and does bml
>>>>>>>>>> initialization;
>>>>>>>>>>            5. openib mca variables are registered againusing
>>>>>>>>>>light
>>>>>>>>>> mode
>>>>>>>> as
>>>>>>>>>>            searching itself in global array and refreshing their
>>>>>>>>>> fields again;
>>>>>>>>>>
>>>>>>>>>>          Can you explain what you mean by step 5?  I.e., what
>>>>>>>>>>does
>>>>>>>> "using light
>>>>>>>>>>          mode" mean?  Is the openib component register function
>>>>>>>>>> invoked
>>>>>>>> again?
>>>>>>>>>>        It is correct, it is called twice. "light mode" means
>>>>>>>>>>that
>>>>>>>>>>        mca_base_var_register() does not allocate mca variable
>>>>>>>>>> object
>>>>>>>> again, it
>>>>>>>>>>        seeks this variable in global array and finding it
>>>>>>>>>>updates
>>>>>>>> fields in
>>>>>>>>>>        mca_base_var_t structure (at least mbv_storage).
>>>>>>>>>>
>>>>>>>>>>            6. for unknown reason bml finalization does not clean
>>>>>>>>>> these
>>>>>>>> vars as
>>>>>>>>>>            it is done in step 2;
>>>>>>>>>>            7. mca_btl_openib.so is unloaded;
>>>>>>>>>>            8. opal_finalize() destroys mca variables form global
>>>>>>>>>> array,
>>>>>>>>>>            observes openib`s variable, try destroy using non
>>>>>>>>>> accessed
>>>>>>>>>> address;
>>>>>>>>>>
>>>>>>>>>>            So a code that is under discussion fixes step 6.
>>>>>>>>>>
>>>>>>>>>>          Nathan: it sounds like an MCA var (and entire group) is
>>>>>>>> registered,
>>>>>>>>>>          unregistered, and then registered again. Does the MCA
>>>>>>>>>>var
>>>>>>>> system get
>>>>>>>>>>          confused here when it tries to unregister the group a
>>>>>>>>>>2nd
>>>>>>>>>> time?
>>>>>>>>>>
>>>>>>>>>>        Probably issue relates incorrect recognition if variable
>>>>>>>> valid/invalid
>>>>>>>>>>        during second call of mca_base_var_deregister().
>>>>>>>>>>
>>>>>>>>>>        _______________________________________________
>>>>>>>>>>        devel mailing list
>>>>>>>>>>        de...@open-mpi.org
>>>>>>>>>>        http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>>>>>>>> _______________________________________________
>>>>>>>>>> devel mailing list
>>>>>>>>>> de...@open-mpi.org
>>>>>>>>>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>>>>>>> _______________________________________________
>>>>>>>>> devel mailing list
>>>>>>>>> de...@open-mpi.org
>>>>>>>>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>>>>>> --
>>>>>>>> Jeff Squyres
>>>>>>>> jsquy...@cisco.com
>>>>>>>> For corporate legal information go to:
>>>>>>>> http://www.cisco.com/web/about/doing_business/legal/cri/
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>>> devel mailing list
>>>>>>>> de...@open-mpi.org
>>>>>>>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>>>>>> _______________________________________________
>>>>>>>> devel mailing list
>>>>>>>> de...@open-mpi.org
>>>>>>>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>>>>> _______________________________________________
>>>>>>> devel mailing list
>>>>>>> de...@open-mpi.org
>>>>>>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>>>>>
>>>>>> --
>>>>>>      Brian W. Barrett
>>>>>>      Scalable System Software Group
>>>>>>      Sandia National Laboratories
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> _______________________________________________
>>>>>> devel mailing list
>>>>>> de...@open-mpi.org
>>>>>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>>>>
>>>> --
>>>>     Brian W. Barrett
>>>>     Scalable System Software Group
>>>>     Sandia National Laboratories
>>>>
>>>>
>>>>
>>>>
>>>> _______________________________________________
>>>> devel mailing list
>>>> de...@open-mpi.org
>>>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>>>
>>>
>>
>> --
>>    Brian W. Barrett
>>    Scalable System Software Group
>>    Sandia National Laboratories
>>
>>
>>
>>
>> _______________________________________________
>> devel mailing list
>> de...@open-mpi.org
>> http://www.open-mpi.org/mailman/listinfo.cgi/devel
>>
>
>_______________________________________________
>devel mailing list
>de...@open-mpi.org
>http://www.open-mpi.org/mailman/listinfo.cgi/devel
>


--
  Brian W. Barrett
  Scalable System Software Group
  Sandia National Laboratories



Reply via email to