Yes, and I completely agree. I was simply trying to keep it consistent in case there is something I don't know about the heterogeneous case.
I increased the size of the 64 bit member because there is no uint128 type. -Nathan On Mon, 7 Nov 2011 10:00:27 -0500, Jeff Squyres <jsquy...@cisco.com> wrote: > It's a union, right? So the size increase (and type change for the 64 > value) shouldn't have been necessary. > > > On Nov 7, 2011, at 9:56 AM, Nathan T. Hjelm wrote: > >> Just keeping it consistent with the existing code. Thought it might be >> necessary for heterogenous. >> >> -Nathan >> >> On Mon, 7 Nov 2011 09:14:21 -0500, Jeff Squyres <jsquy...@cisco.com> > wrote: >>> Just curious -- why was it necessary to increase the size of the 8, 32, >> and >>> 64 arrays? >>> >>> >>> On Nov 6, 2011, at 11:19 AM, hje...@osl.iu.edu wrote: >>> >>>> Author: hjelmn >>>> Date: 2011-11-06 11:19:09 EST (Sun, 06 Nov 2011) >>>> New Revision: 25445 >>>> URL: https://svn.open-mpi.org/trac/ompi/changeset/25445 >>>> >>>> Log: >>>> changes to seg_key needed for a new btl >>>> Text files modified: >>>> trunk/ompi/mca/btl/btl.h | 8 ++++---- >>>> trunk/ompi/mca/btl/mx/btl_mx.c | 6 +++--- >>>> trunk/ompi/mca/btl/portals/btl_portals.c | 12 ++++++------ >>>> trunk/ompi/mca/btl/portals/btl_portals_frag.c | 2 +- >>>> trunk/ompi/mca/btl/portals/btl_portals_rdma.c | 8 ++++---- >>>> trunk/ompi/mca/btl/self/btl_self.c | 4 ++-- >>>> trunk/ompi/mca/btl/sm/btl_sm.c | 6 +++--- >>>> trunk/ompi/mca/btl/vader/btl_vader.c | 4 ++-- >>>> trunk/ompi/mca/btl/vader/btl_vader_get.c | 6 +++--- >>>> trunk/ompi/mca/btl/vader/btl_vader_put.c | 6 +++--- >>>> 10 files changed, 31 insertions(+), 31 deletions(-) >>>> >>>> Modified: trunk/ompi/mca/btl/btl.h >>>> >>> >> > ============================================================================== >>>> --- trunk/ompi/mca/btl/btl.h (original) >>>> +++ trunk/ompi/mca/btl/btl.h 2011-11-06 11:19:09 EST (Sun, 06 Nov > 2011) >>>> @@ -238,10 +238,10 @@ >>>> #endif >>>> /** Memory segment key required by some RDMA networks */ >>>> union { >>>> - uint32_t key32[2]; >>>> - uint64_t key64; >>>> - uint8_t key8[8]; >>>> - uintptr_t ptr; >>>> + uint32_t key32[4]; >>>> + uint64_t key64[2]; >>>> + uint8_t key8[16]; >>>> + uintptr_t ptr[2]; >>>> } seg_key; >>>> }; >>>> typedef struct mca_btl_base_segment_t mca_btl_base_segment_t; >>>> >>>> Modified: trunk/ompi/mca/btl/mx/btl_mx.c >>>> >>> >> > ============================================================================== >>>> --- trunk/ompi/mca/btl/mx/btl_mx.c (original) >>>> +++ trunk/ompi/mca/btl/mx/btl_mx.c 2011-11-06 11:19:09 EST (Sun, 06 > Nov >>> 2011) >>>> @@ -323,13 +323,13 @@ >>>> >>>> frag->segment[0].seg_len = *size; >>>> opal_convertor_get_current_pointer( convertor, >>> (void**)&(frag->segment[0].seg_addr.pval) ); >>>> - frag->segment[0].seg_key.key64 = (uint64_t)(intptr_t)frag; >>>> + frag->segment[0].seg_key.key64[0] = (uint64_t)(intptr_t)frag; >>>> >>>> mx_segment.segment_ptr = frag->segment[0].seg_addr.pval; >>>> mx_segment.segment_length = frag->segment[0].seg_len; >>>> >>>> mx_return = mx_irecv( mx_btl->mx_endpoint, &mx_segment, 1, >>>> - frag->segment[0].seg_key.key64, >>>> + frag->segment[0].seg_key.key64[0], >>>> BTL_MX_PUT_MASK, NULL, &(frag->mx_request) ); >>>> if( OPAL_UNLIKELY(MX_SUCCESS != mx_return) ) { >>>> opal_output( 0, "Fail to re-register a fragment with the MX NIC >>> ...\n" ); >>>> @@ -396,7 +396,7 @@ >>>> >>>> mx_return = mx_isend( mx_btl->mx_endpoint, mx_segment, >>> descriptor->des_src_cnt, >>>> endpoint->mx_peer_addr, >>>> - descriptor->des_dst[0].seg_key.key64, frag, >>>> + descriptor->des_dst[0].seg_key.key64[0], >>> frag, >>>> &frag->mx_request ); >>>> if( OPAL_UNLIKELY(MX_SUCCESS != mx_return) ) { >>>> opal_output( 0, "mx_isend fails with error %s\n", >>> mx_strerror(mx_return) ); >>>> >>>> Modified: trunk/ompi/mca/btl/portals/btl_portals.c >>>> >>> >> > ============================================================================== >>>> --- trunk/ompi/mca/btl/portals/btl_portals.c (original) >>>> +++ trunk/ompi/mca/btl/portals/btl_portals.c 2011-11-06 11:19:09 EST >>> (Sun, 06 Nov 2011) >>>> @@ -357,7 +357,7 @@ >>>> >>>> frag->segments[0].seg_len = max_data; >>>> frag->segments[0].seg_addr.pval = iov.iov_base; >>>> - frag->segments[0].seg_key.key64 = >>>> + frag->segments[0].seg_key.key64[0] = >>>> >>> OPAL_THREAD_ADD64(&(mca_btl_portals_module.portals_rdma_key), 1); >>>> frag->base.des_src_cnt = 1; >>>> >>>> @@ -366,13 +366,13 @@ >>>> "rdma src posted for frag 0x%lx, callback >>> 0x%lx, bits %"PRIu64", flags say %d" , >>>> (unsigned long) frag, >>>> (unsigned long) frag->base.des_cbfunc, >>>> - frag->segments[0].seg_key.key64, > flags)); >>>> + frag->segments[0].seg_key.key64[0], >>> flags)); >>>> >>>> /* create a match entry */ >>>> ret = PtlMEAttach(mca_btl_portals_module.portals_ni_h, >>>> OMPI_BTL_PORTALS_RDMA_TABLE_ID, >>>> *((mca_btl_base_endpoint_t*) peer), >>>> - frag->segments[0].seg_key.key64, /* match > */ >>>> + frag->segments[0].seg_key.key64[0], /* > match >>> */ >>>> 0, /* ignore */ >>>> PTL_UNLINK, >>>> PTL_INS_AFTER, >>>> @@ -449,7 +449,7 @@ >>>> >>>> frag->segments[0].seg_len = *size; >>>> opal_convertor_get_current_pointer( convertor, >>> (void**)&(frag->segments[0].seg_addr.pval) ); >>>> - frag->segments[0].seg_key.key64 = >>>> + frag->segments[0].seg_key.key64[0] = >>>> OPAL_THREAD_ADD64(&(mca_btl_portals_module.portals_rdma_key), >>> 1); >>>> frag->base.des_src = NULL; >>>> frag->base.des_src_cnt = 0; >>>> @@ -461,14 +461,14 @@ >>>> "rdma dest posted for frag 0x%lx, callback >>> 0x%lx, bits %" PRIu64 " flags %d", >>>> (unsigned long) frag, >>>> (unsigned long) frag->base.des_cbfunc, >>>> - frag->segments[0].seg_key.key64, >>>> + frag->segments[0].seg_key.key64[0], >>>> flags)); >>>> >>>> /* create a match entry */ >>>> ret = PtlMEAttach(mca_btl_portals_module.portals_ni_h, >>>> OMPI_BTL_PORTALS_RDMA_TABLE_ID, >>>> *((mca_btl_base_endpoint_t*) peer), >>>> - frag->segments[0].seg_key.key64, /* match */ >>>> + frag->segments[0].seg_key.key64[0], /* match */ >>>> 0, /* ignore */ >>>> PTL_UNLINK, >>>> PTL_INS_AFTER, >>>> >>>> Modified: trunk/ompi/mca/btl/portals/btl_portals_frag.c >>>> >>> >> > ============================================================================== >>>> --- trunk/ompi/mca/btl/portals/btl_portals_frag.c (original) >>>> +++ trunk/ompi/mca/btl/portals/btl_portals_frag.c 2011-11-06 11:19:09 >>> EST (Sun, 06 Nov 2011) >>>> @@ -34,7 +34,7 @@ >>>> >>>> frag->segments[0].seg_addr.pval = frag + 1; >>>> frag->segments[0].seg_len = frag->size; >>>> - frag->segments[0].seg_key.key64 = 0; >>>> + frag->segments[0].seg_key.key64[0] = 0; >>>> >>>> frag->md_h = PTL_INVALID_HANDLE; >>>> } >>>> >>>> Modified: trunk/ompi/mca/btl/portals/btl_portals_rdma.c >>>> >>> >> > ============================================================================== >>>> --- trunk/ompi/mca/btl/portals/btl_portals_rdma.c (original) >>>> +++ trunk/ompi/mca/btl/portals/btl_portals_rdma.c 2011-11-06 11:19:09 >>> EST (Sun, 06 Nov 2011) >>>> @@ -39,7 +39,7 @@ >>>> OPAL_OUTPUT_VERBOSE((90, mca_btl_portals_component.portals_output, >>>> "PtlPut (rdma) fragment %lx, bits %" PRIx64, >>>> (unsigned long) frag, >>>> - frag->base.des_dst[0].seg_key.key64)); >>>> + frag->base.des_dst[0].seg_key.key64[0])); >>>> >>>> assert(&mca_btl_portals_module == (mca_btl_portals_module_t*) >>> btl_base); >>>> assert(frag->md_h != PTL_INVALID_HANDLE); >>>> @@ -55,7 +55,7 @@ >>>> *((mca_btl_base_endpoint_t*) btl_peer), >>>> OMPI_BTL_PORTALS_RDMA_TABLE_ID, >>>> 0, /* ac_index - not used*/ >>>> - frag->base.des_dst[0].seg_key.key64, /* match bits > */ >>>> + frag->base.des_dst[0].seg_key.key64[0], /* match > bits >>> */ >>>> 0, /* remote offset - not used */ >>>> *((ptl_hdr_data_t*) hdr_data)); /* > hdr_data: >>> tag */ >>>> if (ret != PTL_OK) { >>>> @@ -79,7 +79,7 @@ >>>> OPAL_OUTPUT_VERBOSE((90, mca_btl_portals_component.portals_output, >>>> "PtlGet (rdma) fragment %lx, bits %" PRIx64, >>>> (unsigned long) frag, >>>> - frag->base.des_src[0].seg_key.key64)); >>>> + frag->base.des_src[0].seg_key.key64[0])); >>>> >>>> assert(&mca_btl_portals_module == (mca_btl_portals_module_t*) >>> btl_base); >>>> assert(frag->md_h != PTL_INVALID_HANDLE); >>>> @@ -91,7 +91,7 @@ >>>> *((mca_btl_base_endpoint_t*) btl_peer), >>>> OMPI_BTL_PORTALS_RDMA_TABLE_ID, >>>> 0, /* ac_index - not used*/ >>>> - frag->base.des_src[0].seg_key.key64, /* match bits > */ >>>> + frag->base.des_src[0].seg_key.key64[0], /* match > bits >>> */ >>>> 0); /* remote offset - not used */ >>>> if (ret != PTL_OK) { >>>> opal_output(mca_btl_portals_component.portals_output, >>>> >>>> Modified: trunk/ompi/mca/btl/self/btl_self.c >>>> >>> >> > ============================================================================== >>>> --- trunk/ompi/mca/btl/self/btl_self.c (original) >>>> +++ trunk/ompi/mca/btl/self/btl_self.c 2011-11-06 11:19:09 EST (Sun, > 06 >>> Nov 2011) >>>> @@ -235,7 +235,7 @@ >>>> frag->base.des_flags = flags; >>>> frag->base.des_src = &frag->segment; >>>> frag->base.des_src_cnt = 1; >>>> - frag->segment.seg_key.key64 = (uint64_t)(intptr_t)convertor; >>>> + frag->segment.seg_key.key64[0] = (uint64_t)(intptr_t)convertor; >>>> return &frag->base; >>>> } >>>> >>>> @@ -264,7 +264,7 @@ >>>> /* setup descriptor to point directly to user buffer */ >>>> opal_convertor_get_current_pointer( convertor, >>> (void**)&(frag->segment.seg_addr.pval) ); >>>> frag->segment.seg_len = reserve + max_data; >>>> - frag->segment.seg_key.key64 = (uint64_t)(intptr_t)convertor; >>>> + frag->segment.seg_key.key64[0] = (uint64_t)(intptr_t)convertor; >>>> frag->base.des_dst = &frag->segment; >>>> frag->base.des_dst_cnt = 1; >>>> frag->base.des_flags = flags; >>>> >>>> Modified: trunk/ompi/mca/btl/sm/btl_sm.c >>>> >>> >> > ============================================================================== >>>> --- trunk/ompi/mca/btl/sm/btl_sm.c (original) >>>> +++ trunk/ompi/mca/btl/sm/btl_sm.c 2011-11-06 11:19:09 EST (Sun, 06 > Nov >>> 2011) >>>> @@ -739,7 +739,7 @@ >>>> if (OPAL_UNLIKELY(ioctl(sm_btl->knem_fd, > KNEM_CMD_CREATE_REGION, >>> &knem_cr) < 0)) { >>>> return NULL; >>>> } >>>> - frag->segment.seg_key.key64 = knem_cr.cookie; >>>> + frag->segment.seg_key.key64[0] = knem_cr.cookie; >>>> } >>>> #endif >>>> frag->base.des_src = &(frag->segment); >>>> @@ -968,7 +968,7 @@ >>>> recv_iovec.len = dst->seg_len; >>>> icopy.local_iovec_array = (uintptr_t)&recv_iovec; >>>> icopy.local_iovec_nr = 1; >>>> - icopy.remote_cookie = src->seg_key.key64; >>>> + icopy.remote_cookie = src->seg_key.key64[0]; >>>> icopy.remote_offset = 0; >>>> icopy.write = 0; >>>> >>>> @@ -1044,7 +1044,7 @@ >>>> sm_btl->knem_status_first_avail = 0; >>>> } >>>> ++sm_btl->knem_status_num_used; >>>> - icopy.remote_cookie = src->seg_key.key64; >>>> + icopy.remote_cookie = src->seg_key.key64[0]; >>>> icopy.remote_offset = 0; >>>> >>>> /* Use the DMA flag if knem supports it *and* the segment length >>>> >>>> Modified: trunk/ompi/mca/btl/vader/btl_vader.c >>>> >>> >> > ============================================================================== >>>> --- trunk/ompi/mca/btl/vader/btl_vader.c (original) >>>> +++ trunk/ompi/mca/btl/vader/btl_vader.c 2011-11-06 11:19:09 EST (Sun, >>> 06 Nov 2011) >>>> @@ -643,7 +643,7 @@ >>>> >>>> opal_convertor_get_current_pointer (convertor, (void **) > &data_ptr); >>>> >>>> - frag->segment.seg_key.ptr = (uintptr_t) data_ptr; >>>> + frag->segment.seg_key.ptr[0] = (uintptr_t) data_ptr; >>>> frag->segment.seg_len = *size; >>>> >>>> frag->base.des_dst = &frag->segment; >>>> @@ -738,7 +738,7 @@ >>>> return NULL; >>>> } >>>> >>>> - frag->segment.seg_key.ptr = (uintptr_t) data_ptr; >>>> + frag->segment.seg_key.ptr[0] = (uintptr_t) data_ptr; >>>> frag->segment.seg_len = reserve + *size; >>>> } >>>> >>>> >>>> Modified: trunk/ompi/mca/btl/vader/btl_vader_get.c >>>> >>> >> > ============================================================================== >>>> --- trunk/ompi/mca/btl/vader/btl_vader_get.c (original) >>>> +++ trunk/ompi/mca/btl/vader/btl_vader_get.c 2011-11-06 11:19:09 EST >>> (Sun, 06 Nov 2011) >>>> @@ -34,15 +34,15 @@ >>>> void *rem_ptr; >>>> >>>> reg = vader_get_registation (endpoint->peer_smp_rank, >>>> - (void *) src->seg_key.ptr, >>>> + (void *) src->seg_key.ptr[0], >>>> src->seg_len, 0); >>>> if (OPAL_UNLIKELY(NULL == reg)) { >>>> return OMPI_ERROR; >>>> } >>>> >>>> - rem_ptr = vader_reg_to_ptr (reg, (void *) src->seg_key.ptr); >>>> + rem_ptr = vader_reg_to_ptr (reg, (void *) src->seg_key.ptr[0]); >>>> >>>> - vader_memmove ((void *) dst->seg_key.ptr, rem_ptr, size); >>>> + vader_memmove ((void *) dst->seg_key.ptr[0], rem_ptr, size); >>>> >>>> vader_return_registration (reg, endpoint->peer_smp_rank); >>>> >>>> >>>> Modified: trunk/ompi/mca/btl/vader/btl_vader_put.c >>>> >>> >> > ============================================================================== >>>> --- trunk/ompi/mca/btl/vader/btl_vader_put.c (original) >>>> +++ trunk/ompi/mca/btl/vader/btl_vader_put.c 2011-11-06 11:19:09 EST >>> (Sun, 06 Nov 2011) >>>> @@ -34,15 +34,15 @@ >>>> void *rem_ptr; >>>> >>>> reg = vader_get_registation (endpoint->peer_smp_rank, >>>> - (void *) dst->seg_key.ptr, >>>> + (void *) dst->seg_key.ptr[0], >>>> dst->seg_len, 0); >>>> if (OPAL_UNLIKELY(NULL == reg)) { >>>> return OMPI_ERROR; >>>> } >>>> >>>> - rem_ptr = vader_reg_to_ptr (reg, (void *) dst->seg_key.ptr); >>>> + rem_ptr = vader_reg_to_ptr (reg, (void *) dst->seg_key.ptr[0]); >>>> >>>> - vader_memmove (rem_ptr, (void *) src->seg_key.ptr, size); >>>> + vader_memmove (rem_ptr, (void *) src->seg_key.ptr[0], size); >>>> >>>> vader_return_registration (reg, endpoint->peer_smp_rank); >>>> >>>> _______________________________________________ >>>> svn-full mailing list >>>> svn-f...@open-mpi.org >>>> http://www.open-mpi.org/mailman/listinfo.cgi/svn-full >>> >>> >>> -- >>> 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 > > > -- > 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