Hi Bill, When I went looking for examples of ERRTEST_ARGNULL, I recall at least most of them being for internally allocated buffers, i.e. used in the MPICH-ized version of "void * b = malloc(); assert(b!=NULL);" I'll look into making both of the changes you describe. It is obviously going to be much more useful to have ERRTEST_USERBUFFER return a message like ERRTEST_ARGNULL. Best, Jeff On Mon, Jun 3, 2013 at 8:25 AM, William Gropp <[email protected]> wrote:
The reason that you are not seeing the MPIR_ERRTEST_USERBUFFER is that the original intent of the design is that easy error tests are carried out in the error test block and anything else must be handled elsewhere. For example, some of the group operations have consistency checks in the body of the code, rather than in the error test block. Because MPI_BOTTOM with an MPI Datatype containing non-zero offsets is always valid, the simple checks for NULL were originally not performed in any of the routines. The ERRTEST_USERBUFFER check will catch many (though not all) null buffers at relatively low cost, though since other parts of the code must also check for null, it should not be considered necessary or sufficient.
Its probably worth adding a comment that it is incorrect to use ERRTEST_ARGNULL for communication buffers in every routine that has one, since this issue comes up every few years.
Also, the ERRTEST_USERBUFFER should include the parameter name and add an error message that includes the parameter name, since many routines have multiple communication buffers to which this can be applied.
Bill
William Gropp Director, Parallel Computing Institute Deputy Director for Research Institute for Advanced Computing Applications and Technologies Thomas M. Siebel Chair in Computer Science University of Illinois Urbana-Champaign
On May 30, 2013, at 6:40 AM, Jeff Hammond wrote:
The check for NO_OP in *get_accumulate was most certainly present. That was the first thing I checked when MPI_Get_accumulate(MPI_REPLACE) failed to behave like MPI_Get w.r.t. ARMCI-MPI test codes.
I'm going to supplement the RMA test suite so that this issue and ones like it would have been caught by MPICH rather than waiting until the very last ARMCI-MPI test to be revealed.
Jeff
On Thu, May 30, 2013 at 4:53 AM, Jim Dinan <[email protected]> wrote:
Ugh, deep shame upon me and whoever reviewed my patch! Lisandro is
correct. :)
For accumulate ops, the op can also cause a buffer to be ignored (e.g.
GACC/FOP with NO_OP). I think there is code to handle this, but keep an
eye out for it.
~Jim.
On 05/29/2013 03:08 PM, Lisandro Dalcin wrote:
On 29 May 2013 22:49, Jeff Hammond <[email protected]> wrote:
It seems that I didn't understand MPI_BOTTOM completely, so the error
checks needed to be different than described below, but the high-level
issues are the same.
Interested parties may consult
http://trac.mpich.org/projects/mpich/ticket/1863 for details and
further discussion.
Please take a look at the macro MPIR_ERRTEST_USERBUFFER .
--
Lisandro Dalcin
---------------
CIMEC (INTEC/CONICET-UNL)
Predio CONICET-Santa Fe
Colectora RN 168 Km 472, Paraje El Pozo
3000 Santa Fe, Argentina
Tel: +54-342-4511594 (ext 1011)
Tel/Fax: +54-342-4511169
-- Jeff Hammond Argonne Leadership Computing Facility University of Chicago Computation Institute [email protected] / (630) 252-5381 http://www.linkedin.com/in/jeffhammond https://wiki.alcf.anl.gov/parts/index.php/User:Jhammond ALCF docs: http://www.alcf.anl.gov/user-guides
-- Jeff Hammond Argonne Leadership Computing Facility University of Chicago Computation Institute [email protected] / (630) 252-5381 http://www.linkedin.com/in/jeffhammond https://wiki.alcf.anl.gov/parts/index.php/User:Jhammond ALCF docs: http://www.alcf.anl.gov/user-guides