Tim --

Doesn't this violate the "nothing should call MPI functions" rule?

I also ask because there's a bunch of places where we alloc temporary buffers in the collectives -- should we be using whatever the back-end to MPI_Alloc_mem is instead of malloc()?

(this would apply to both the basic and tuned collective components)



Begin forwarded message:

From: twood...@osl.iu.edu
Date: September 22, 2005 12:43:19 PM EDT
To: svn-f...@open-mpi.org
Subject: [O-MPI svn-full] svn:open-mpi r7487 - trunk/ompi/mpi/c
Reply-To: de...@open-mpi.org

Author: twoodall
Date: 2005-09-22 11:43:17 -0500 (Thu, 22 Sep 2005)
New Revision: 7487

Modified:
   trunk/ompi/mpi/c/sendrecv_replace.c
Log:
use MPI_Alloc_mem/MPI_Free_mem for internally allocated buffers


Modified: trunk/ompi/mpi/c/sendrecv_replace.c
===================================================================
--- trunk/ompi/mpi/c/sendrecv_replace.c 2005-09-22 16:41:34 UTC (rev 7486) +++ trunk/ompi/mpi/c/sendrecv_replace.c 2005-09-22 16:43:17 UTC (rev 7487)
@@ -86,8 +86,8 @@
         /* setup a buffer for recv */
         ompi_convertor_get_packed_size( &convertor, &packed_size );
         if( packed_size > sizeof(recv_data) ) {
-            iov.iov_base = (caddr_t)malloc(packed_size);
-            if(iov.iov_base == NULL) {
+ rc = MPI_Alloc_mem(packed_size, MPI_INFO_NULL, &iov.iov_base);
+            if(OMPI_SUCCESS != rc) {
OMPI_ERRHANDLER_RETURN(OMPI_ERR_OUT_OF_RESOURCE, comm, MPI_ERR_BUFFER, FUNC_NAME);
             }
         } else {
@@ -117,7 +117,7 @@

         /* release resources */
         if(packed_size > sizeof(recv_data)) {
-            free(iov.iov_base);
+            MPI_Free_mem(iov.iov_base);
         }
         OBJ_DESTRUCT(&convertor);
         return MPI_SUCCESS;

_______________________________________________
svn-full mailing list
svn-f...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/svn-full


--
{+} Jeff Squyres
{+} The Open MPI Project
{+} http://www.open-mpi.org/

Reply via email to