Hi Jim,

Are we sure the function pointer “worked" in your example? It silently truncated the large value, because the function pointer bypasses the redirection macro.

Cheers,
Dan.

Dr Daniel Holmes PhD
Architect (HPC Research)
d.holmes@epcc.ed.ac.uk
Phone: +44 (0) 131 651 3465
Mobile: +44 (0) 7940 524 088
Address: Room 2.09, Bayes Centre, 47 Potterrow, Central Area, Edinburgh, EH8 9BT
The University of Edinburgh is a charitable body, registered in Scotland, with registration number SC005336.

On 7 Aug 2019, at 22:00, Jim Dinan via mpi-forum <mpi-forum@lists.mpi-forum.org> wrote:

Even simpler than this, we could just forward all calls to the MPI_Count interface (see below).  The int count argument should type convert to MPI_Count without issue.  Note that it still needs to be a function-like macro so that function pointers work.

Don't give up yet!  :D

 ~Jim.

#include <stdio.h>

  

typedef int MPI_Datatype;
typedef int MPI_Comm;

int MPI_Send(const void* buf, int count, MPI_Datatype datatype, int dest,
             int tag, MPI_Comm comm)
{
    printf("MPI_Send(count = %d)\n", count);
    return 0;
}

int MPI_Send_x(const void* buf, long long count, MPI_Datatype datatype, int dest,
               int tag, MPI_Comm comm)
{
    printf("MPI_Send_x(count = %lld)\n", count);
    return 0;
}

#define MPI_Send(buf, count, datatype, dest, tag, comm) MPI_Send_x(buf, count, datatype, dest, tag, comm)

int main(int argc, char *argv[]) {
    /* 8589934592LL == 2^33 */
    long long i = 8589934592LL + 11;
    int ret;
    int (*snd_ptr)(const void*, int, MPI_Datatype, int, int, MPI_Comm) = &MPI_Send;
    ret = MPI_Send(NULL, i, 0, 0, 0, 0);
    ret = MPI_Send(NULL, 5, 0, 0, 0, 0);
    ret = (*snd_ptr)(NULL, i, 0, 0, 0, 0);
    ret = (*snd_ptr)(NULL, 5, 0, 0, 0, 0);
    return 0;

}
 
MPI_Send_x(count = 8589934603)
MPI_Send_x(count = 5)
MPI_Send(count = 11)

MPI_Send(count = 5)
_______________________________________________
mpi-forum mailing list
mpi-forum@lists.mpi-forum.org
https://lists.mpi-forum.org/mailman/listinfo/mpi-forum