There are two potential places you could use:

* the vpid itself is 32-bits in size - we are quite some years away from 
needing all of them, so taking the upper-most bit for this purpose should be 
okay

* the lower 16-bits of the jobid is the local jobid - i.e., the number of times 
someone called “comm_spawn”. The code for recycling those has gone a tad stale, 
but it wouldn’t be hard to recover it. I doubt someone will call comm_spawn 
more than 2^15 times without at least one of those completing so we can reuse 
the jobid, and so it should be safe to take the upper bit of that field.

Frankly, I thought the second option was what Nathan had intended, so I’m 
surprised to see us masking at the 64-bit level. This touches the mpirun part 
of the jobid (the upper 16-bits), which is a hash based on the hostname and OS 
pid. Stripping a bit from that is risky and I definitely wouldn’t advise it.


> On Feb 5, 2016, at 7:48 PM, Gilles Gouaillardet 
> <gilles.gouaillar...@gmail.com> wrote:
> 
> Thanks George,
> 
> I will definitely try that !
> 
> back to the initial question, has someone any thoughts on which bit(s) we can 
> lose when using cutoff ?
> 
> Cheers,
> 
> Gilles
> 
> On Saturday, February 6, 2016, George Bosilca <bosi...@icl.utk.edu 
> <mailto:bosi...@icl.utk.edu>> wrote:
> In addition shouldn't we use uintptr_t instead of the intptr_t to cope with 
> the MSB during the shifting operations? 
> 
> George 
> 
> On Feb 5, 2016 10:08 AM, "Jeff Squyres (jsquyres)" <jsquy...@cisco.com <>> 
> wrote:
> On Feb 5, 2016, at 9:26 AM, Gilles Gouaillardet 
> <gilles.gouaillar...@gmail.com <>> wrote:
> >
> >  static inline opal_process_name_t ompi_proc_sentinel_to_name (intptr_t 
> > sentinel)
> > {
> >  sentinel >>= 1;
> >  sentinel &= 0x7FFFFFFFFFFFFFFF;
> >  return *((opal_process_name_t *) &sentinel);
> > }
> 
> I don't have much of an opinion on any of the other stuff here, but I note 
> that this is unsafe.  I know we don't really care about non-64 bit these 
> days, but we shouldn't be knowingly breaking it.  Instead of ANDing with a 
> fixed constant, shouldn't it be something like:
> 
> intptr_t mask = ~1 >> 1;
> sentinel &= mask;
> 
> --
> Jeff Squyres
> jsquy...@cisco.com <>
> For corporate legal information go to: 
> http://www.cisco.com/web/about/doing_business/legal/cri/ 
> <http://www.cisco.com/web/about/doing_business/legal/cri/>
> 
> _______________________________________________
> devel mailing list
> de...@open-mpi.org <>
> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel 
> <http://www.open-mpi.org/mailman/listinfo.cgi/devel>
> Link to this post: 
> http://www.open-mpi.org/community/lists/devel/2016/02/18557.php 
> <http://www.open-mpi.org/community/lists/devel/2016/02/18557.php>
> _______________________________________________
> devel mailing list
> de...@open-mpi.org
> Subscription: http://www.open-mpi.org/mailman/listinfo.cgi/devel
> Link to this post: 
> http://www.open-mpi.org/community/lists/devel/2016/02/18563.php 
> <http://www.open-mpi.org/community/lists/devel/2016/02/18563.php>

Reply via email to