Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support FI_ADDR_GNIX enough for bootstrapping #7

Closed
sungeunchoi opened this issue Feb 2, 2015 · 3 comments
Closed

Support FI_ADDR_GNIX enough for bootstrapping #7

sungeunchoi opened this issue Feb 2, 2015 · 3 comments
Assignees

Comments

@sungeunchoi
Copy link

No description provided.

@hppritcha hppritcha self-assigned this Feb 2, 2015
@hppritcha
Copy link
Member

What I have for FI_ADDR_GNIX for now is here.

A filled in struct of gni_ep_name would be returned from
fi_getname for a gni provider ep of type FI_EP_RDM.
It would also be what would be filled in to the fi_info
returned from a call to fi_getinfo(non-null node,...),
in which case it would be the address of the "service" at the
remote node.

The structure would contain the minimum needed to
use the GNI PostData API to contact a process for more
information on how to setup an SMSG connection etc.

The tricky thing is the cmd id. This will need to be obtained
in the case of fi_getinfo by some kind of nameservice
mechanism.

Here's an idea I had for a nameservice for jobs launched
by aprun:

  • first "rank" on the node - we can determine that using alps
    lli calls, fires off a "nameserver thread" which creates a
    cdm with cdm_id 0, and attaches to nic. It would then post
    one or more wildcard datagrams.
  • the first rank would also create a file in TMPDIR of a known
    name, and add an entry into the file alps_rank:cdm_id
    (and any other info we might want to add up to size of
    a GNI post datagram payload).
  • other ranks would open the file and write their data in
    about rank and cdm_id.
  • when a rank at a remote node call fi_getinfo with the
    nodename of a target node, a string in service being
    something like "alpsjob:apid:job_rank", the gni
    provider at that node would send a GNI Post datagram
    to the target node/cdm_id/correct cookie, and wait
    for response.
  • nameserver thread on target node would wake up
    from blocking GNI_EpPostData wait, crack the incoming
    datagram for the request, read the info in the local
    file in TMPDIR, and return it using a second GNI_EpPostData.

@ztiffany
@bturrubiates
@sungeunchoi

@sungeunchoi
Copy link
Author

Couple questions on the name service stuff.

  • Can we rely on a shared file system being available?
  • Can this be made launcher independent? This will need to work with slurm also.

@hppritcha
Copy link
Member

Good question, we could enhance ugni/kgni to have a scratchpad in the
kernel.
I though gni already used something like this for user space
synchronization.

I'm pretty sure that owing to the need to hide native slurm from
craypich/craypmi
that the entire alps lli and alps util interface was carried forward in the
slurm
nativization effort.

I have an account on tiger - still need to login in though - I thought tiger
runs native slurm.

2015-02-06 16:00 GMT-07:00 Sung-Eun Choi [email protected]:

Couple questions on the name service stuff.

  • Can we rely on a shared file system being available?
  • Can this be made launcher independent? This will need to work with
    slurm also.


Reply to this email directly or view it on GitHub
#7 (comment)
.

ofi-cray-test pushed a commit that referenced this issue Aug 30, 2017
fixed HPCX <=v1.9.7 support (#7)

Signed-off-by: Sannikov, Alexander <[email protected]>
Signed-off-by: Dmitry Gladkov <[email protected]>
ofi-cray-test pushed a commit that referenced this issue Dec 13, 2017
Here is the deadlock scenario:

  #0  0x00007fed3a439495 in pthread_spin_lock ()
  #1  0x00007fed37ad7cfd in fastlock_acquire ()
  #2  0x00007fed37ad80a4 in psmx2_lock ()
  #3  0x00007fed37ad8361 in psmx2_am_trx_ctxt_handler_ext ()
  #4  0x00007fed37b084e7 in psmx2_am_trx_ctxt_handler_0 ()
  #5  0x00007fed373c08c5 in self_am_short_request ()
  #6  0x00007fed3739bf83 in __psm2_am_request_short ()
  #7  0x00007fed37ad84ee in psmx2_trx_ctxt_disconnect_peers ()

A lock has been held in psmx2_trx_ctxt_disconnect_peers before
psm2_am_request_short is called. While making progress inside
this function, the execution is redirected to the AM handler
due to the arrival of an incoming disconnection request. The AM
handler tries to acquire the same lock that has already been
held and reaches a deadlock.

Fix by avoiding calling psm2_am_request_short while holding the lock.

Signed-off-by: Jianxin Xiong <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants