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 with:
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 user.
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@open-mpi.org>
http://www.open-mpi.org/mailman/listinfo.cgi/users--Jeff Squyres
Cisco Systems
_______________________________________________
users mailing list
users@open-mpi.orghttp://www.open-mpi.org/mailman/listinfo.cgi/users