I see a bug in this code fragment: +#define MEMMOVE(d, s, l) \ + do { \ + if( (((d) < (s)) && (((d) + (l)) > (s))) || \ + (((s) < (d)) && (((s) + (l)) > (s))) ) { \ + memmove( (d), (s), (l) ); \ + } else { \ + MEMCPY( (d), (s), (l) ); \ + } \ + } while (0)
Shouldn't this line + (((s) < (d)) && (((s) + (l)) > (s))) ) { \ be like this instead? + (((s) < (d)) && (((s) + (l)) > (d))) ) { \ On Fri, Nov 12, 2010 at 6:22 PM, <bosi...@osl.iu.edu> wrote: > Author: bosilca > Date: 2010-11-12 18:22:35 EST (Fri, 12 Nov 2010) > New Revision: 24047 > URL: https://svn.open-mpi.org/trac/ompi/changeset/24047 > > Log: > Add a second version of the datatype copy function using memmove instead of > memcpy. > As memmove is slower than memcpy, I added the required logic to only use it > when > really necessary. > > No modification from developers point of view, you should always call > opal_datatype_copy_content_same_ddt. > > > Added: > trunk/opal/datatype/opal_datatype_copy.h > Text files modified: > trunk/opal/datatype/Makefile.am | 3 > trunk/opal/datatype/opal_datatype_copy.c | 253 > +++++++-------------------------------- > trunk/opal/datatype/opal_datatype_memcpy.h | 28 ---- > 3 files changed, 48 insertions(+), 236 deletions(-) > > Modified: trunk/opal/datatype/Makefile.am [snip] -- Tim Mattox, Ph.D. - http://homepage.mac.com/tmattox/ timat...@open-mpi.org || tmat...@gmail.com I'm a bright... http://www.the-brights.net/