Open MPI logo

Open MPI Development Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Development mailing list

Subject: [OMPI devel] Fwd: [OMPI svn-full] svn:open-mpi r24617
From: Jeff Squyres (jsquyres_at_[hidden])
Date: 2011-04-14 18:03:08


George --

Unfortunately, this didn't automatically create CMRs (I'm not sure why). :-(

Begin forwarded message:

> From: bosilca_at_[hidden]
> Date: April 14, 2011 5:50:07 PM EDT
> To: svn-full_at_[hidden]
> Subject: [OMPI svn-full] svn:open-mpi r24617
> Reply-To: devel_at_[hidden]
>
> Author: bosilca
> Date: 2011-04-14 17:50:06 EDT (Thu, 14 Apr 2011)
> New Revision: 24617
> URL: https://svn.open-mpi.org/trac/ompi/changeset/24617
>
> Log:
> Based on the patch submitted by Pascal Deveze, here is the memory leak fix
> for the type indexed creation.
>
> CMR v1.4 and v1.5.
>
> Text files modified:
> trunk/ompi/datatype/ompi_datatype_create_indexed.c | 62 ++++++++++++++++-----------------------
> 1 files changed, 26 insertions(+), 36 deletions(-)
>
> Modified: trunk/ompi/datatype/ompi_datatype_create_indexed.c
> ==============================================================================
> --- trunk/ompi/datatype/ompi_datatype_create_indexed.c (original)
> +++ trunk/ompi/datatype/ompi_datatype_create_indexed.c 2011-04-14 17:50:06 EDT (Thu, 14 Apr 2011)
> @@ -3,7 +3,7 @@
> * Copyright (c) 2004-2006 The Trustees of Indiana University and Indiana
> * University Research and Technology
> * Corporation. All rights reserved.
> - * Copyright (c) 2004-2009 The University of Tennessee and The University
> + * Copyright (c) 2004-2010 The University of Tennessee and The University
> * of Tennessee Research Foundation. All rights
> * reserved.
> * Copyright (c) 2004-2006 High Performance Computing Center Stuttgart,
> @@ -46,26 +46,21 @@
> dLength = pBlockLength[0];
> endat = disp + dLength;
> ompi_datatype_type_extent( oldType, &extent );
> - if( 1 >= count ) {
> - pdt = ompi_datatype_create( oldType->super.desc.used + 2 );
> - /* multiply by count to make it zero if count is zero */
> - ompi_datatype_add( pdt, oldType, count * dLength, disp * extent, extent );
> - } else {
> - pdt = ompi_datatype_create( count * (2 + oldType->super.desc.used) );
> - for( i = 1; i < count; i++ ) {
> - if( endat == pDisp[i] ) {
> - /* contiguous with the previsious */
> - dLength += pBlockLength[i];
> - endat += pBlockLength[i];
> - } else {
> - ompi_datatype_add( pdt, oldType, dLength, disp * extent, extent );
> - disp = pDisp[i];
> - dLength = pBlockLength[i];
> - endat = disp + pBlockLength[i];
> - }
> +
> + pdt = ompi_datatype_create( count * (2 + oldType->super.desc.used) );
> + for( i = 1; i < count; i++ ) {
> + if( endat == pDisp[i] ) {
> + /* contiguous with the previsious */
> + dLength += pBlockLength[i];
> + endat += pBlockLength[i];
> + } else {
> + ompi_datatype_add( pdt, oldType, dLength, disp * extent, extent );
> + disp = pDisp[i];
> + dLength = pBlockLength[i];
> + endat = disp + pBlockLength[i];
> }
> - ompi_datatype_add( pdt, oldType, dLength, disp * extent, extent );
> }
> + ompi_datatype_add( pdt, oldType, dLength, disp * extent, extent );
>
> *newType = pdt;
> return OMPI_SUCCESS;
> @@ -91,25 +86,20 @@
> dLength = pBlockLength[0];
> endat = disp + dLength * extent;
>
> - if( 1 >= count ) {
> - pdt = ompi_datatype_create( oldType->super.desc.used + 2 );
> - /* multiply by count to make it zero if count is zero */
> - ompi_datatype_add( pdt, oldType, count * dLength, disp, extent );
> - } else {
> - for( i = 1; i < count; i++ ) {
> - if( endat == pDisp[i] ) {
> - /* contiguous with the previsious */
> - dLength += pBlockLength[i];
> - endat += pBlockLength[i] * extent;
> - } else {
> - ompi_datatype_add( pdt, oldType, dLength, disp, extent );
> - disp = pDisp[i];
> - dLength = pBlockLength[i];
> - endat = disp + pBlockLength[i] * extent;
> - }
> + for( i = 1; i < count; i++ ) {
> + if( endat == pDisp[i] ) {
> + /* contiguous with the previsious */
> + dLength += pBlockLength[i];
> + endat += pBlockLength[i] * extent;
> + } else {
> + ompi_datatype_add( pdt, oldType, dLength, disp, extent );
> + disp = pDisp[i];
> + dLength = pBlockLength[i];
> + endat = disp + pBlockLength[i] * extent;
> }
> - ompi_datatype_add( pdt, oldType, dLength, disp, extent );
> }
> + ompi_datatype_add( pdt, oldType, dLength, disp, extent );
> +
> *newType = pdt;
> return OMPI_SUCCESS;
> }
> _______________________________________________
> svn-full mailing list
> svn-full_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/svn-full

-- 
Jeff Squyres
jsquyres_at_[hidden]
For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/