It is indeed good that you check for performance degradation. However, when a __single__ BTL requires changes that affects all BTL/PML, you cannot just assume an RFC is not necessary. This change affects all RDMA headers for all BTL / PML, it is indeed a critical change even if it is not on the critical path for short messages.
I think people are getting the wrong idea about the development in Open MPI. Let me make it clear for the future: what you do in your component it is your own business, everything else that impacts other people code (more than just a missing include) IS required to have an RFC. george. On Nov 7, 2011, at 09:58 , Nathan T. Hjelm wrote: > Thats the nice thing about this change. Segments are only sent for larger > messages which is where we will need the extra bits. > > And, you can blame Cray for their 128 bit memory registration key. > > -Nathan > > On Mon, 7 Nov 2011 09:22:58 -0500, Jeff Squyres <jsquy...@cisco.com> wrote: >> This is probably why it would have been good to RFC about this. :-) >> >> 8 bytes can/does affect short message latency, no? >> >> >> >> On Nov 6, 2011, at 11:29 PM, Nathan T. Hjelm wrote: >> >>> I saw no need for an rfc for r25445/r25448. I did not seen any >> performance >>> degradation with openib, sm, or vader (using ob1). Its only 8 bytes, and >> we >>> (LANL) will absolutely require a 128 bit key for the ugni btl. >>> >>> Anyone else care to weigh in or do some measurements? >>> >>> -Nathan >>> >>> On Sun, 6 Nov 2011 23:05:57 -0500, George Bosilca <bosi...@eecs.utk.edu> >>> wrote: >>>> I might have missed some of the phone conferences, but this is a highly >>>> critical modification of the one of the performance critical sub-system >>> of >>>> Open MPI. There was no RFC about and no prior warning. This change >>> impacts >>>> every other BTL and PML out there. Moreover, at this point there is no >>>> assessment of the impact on performance (because the seg_key >>>> modification). >>>> >>>> Please roll-back r25445 and r25448. >>>> >>>> george. >>>> >>>> On Nov 6, 2011, at 11:19 , 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 mailing list >>>>> s...@open-mpi.org >>>>> http://www.open-mpi.org/mailman/listinfo.cgi/svn >>>> >>>> >>>> _______________________________________________ >>>> 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