Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: Re: [OMPI users] How to override MPI functions such as MPI_Init, MPI_Recv...
From: Jeff Squyres (jsquyres_at_[hidden])
Date: 2009-05-13 13:43:10

You could just define your own library with the same signatures as
official MPI functions, and link that into MPI applications. Under
the covers, you invoke the PMPI_* equivalents of each function. Lots
of profiling and analysis tools work this way. For example:

int MPI_Init(int argc, char **argv)
     /* do whatever you want to do here */
     ret = PMPI_Init(argc, argv);
     /* do whatever you want to do here */
     return ret;

compile/link that into libextra_mpi_stuff.a. Then compile your app

    mpicc my_mpi_app.c -lextra_mpi_stuff

and then when mpi_mpi_app.c calls MPI_Init(), it'll call *your*
MPI_Init. Your MPI_Init will do whatever it wants to, and invoke
PMPI_Init() (i.e., the "real" init function) and return back to the

This is the profiling interface of MPI.

On May 13, 2009, at 1:20 PM, Le Duy Khanh wrote:

> Dear,
> I intend to override some MPI functions such as MPI_Init,
> MPI_Recv... but I don't want to dig into OpenMPI source
> code.Therefore, I am thinking of a way to create a lib called
> "mympi.h" in which I will #include "mpi.h" to override those
> functions. I will create a new interface with exactly the same
> signatures like MPI_Init (because users are familiar with those
> functions). However, the problem is that I don't know how to
> override those functions because as I know, C/C++ doesn't allow us
> to override functions (only overload them).
> Could you please show me how to override OMPI functions but still
> keep the same function names and signatures?
> Thank you so much for your time and consideration
> Le , Duy Khanh
> Cellphone: (+84)958521704
> Faculty of Computer Science and Engineering
> Ho Chi Minh city University of Technology , Viet Nam
> _______________________________________________
> users mailing list
> users_at_[hidden]

Jeff Squyres
Cisco Systems