I do not recall, and from the code there is no obvious reason. However, being able to store multiple smaller members might be a good enough reason.
Btw, we don't use the key8 at all. I guess we can clean that code up to only keep key32 and key64, eventually with the count to match up the right size ;) george. On Nov 8, 2011, at 18:11 , Nathan T. Hjelm wrote: > Ok, that makes sense. Is there a reason why the members were all set the be > the same size? > > Maybe seg_key should be: > > union { > uint8_t key8; > uint16_t key16; > uint32_t key32; > uint64_t key64; > struct { uint64_t value[2] } key128; > }; > > -Nathan > > On Tue, 8 Nov 2011 17:22:48 -0500, George Bosilca <bosi...@eecs.utk.edu> > wrote: >> Elements in an array are always stored in the expected [increasing] > order, >> regardless of the endianess of the architecture. Moreover, due to the >> alignment rules, all members in a union will start at the same address. >> >> It turns out there is no endianess conversion on the keys, so I suppose >> both peers have to somehow reach a consensus outside the PML. >> >> george. >> >> On Nov 8, 2011, at 08:57 , Nathan T. Hjelm wrote: >> >>> Sure, I can do that. My only concern is with sending between hosts of >>> different endianness. >>> >>> For example, if seg_key is 128 bits wide and the key32 is 64 bits then >> we >>> might run into this: >>> >>> Host 1: (big endian) >>> Set seg_key.key32[0] = 0x11111111 >>> >>> would result in seg_key: 0x00000000 0x00000000 0x11111111 0x00000000 >>> >>> Host 2: (little endian) >>> Set seg_key.key32[0] = 0x111111111 >>> >>> would result in seg_key: 0x11111111 0x00000000 0x00000000 0x00000000 >>> >>> If either host were to send the other one its seg_key and try to use the >>> key32 they would get garbage. I haven't tested this case yet but I can >> test >>> on a PPE of RR later today. >>> >>> -Nathan >>> >>> On Tue, 8 Nov 2011 08:26:04 -0500, Jeff Squyres <jsquy...@cisco.com> >> wrote: >>>> On Nov 7, 2011, at 9:48 PM, Nathan T. Hjelm wrote: >>>> >>>>> In retrospect I should have done a RFC for the 3rd change with a short >>>>> timeout. At the time (operating on little sleep) it seemed like the >>>> commits >>>>> would have minimal impact. Please let me know if the commits have any >>>>> negative impact. >>>> >>>> FWIW, I think I'd like to see a rollback of the increase of array sizes >>> in >>>> the seg_key union. They weren't necessary and might be slightly >>>> misleading. >>>> >>>> -- >>>> 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 > > _______________________________________________ > devel mailing list > de...@open-mpi.org > http://www.open-mpi.org/mailman/listinfo.cgi/devel