From what I understand MPI_Send will hit 3 separate layers of code before reaching the socket file descriptors you've found. The PML (Point to Point Messaging Layer) is a layer that bridges the MPI semantics from the underlying point to point communications. The standard PML implementation is called 'ob1' which is what indirectly calls the code you found. MPI_Send should go through pml_isend() or pml_send() which will request a BTL (Byte Transfer Layer) modules from the BML (BTL Management Layer) and invoke the BTL's btl_prepare_src() or btl_alloc() functions before calling the btl_send(). It becomes clearer when you step through it all with a debugger though ;-)
If you're interested, I've recently implemented a BTL component of my own and am now writing up a report on the process. It will be ready next week, so if you think it might be useful, just let me know.
2009/4/16 pranav jadhav <email@example.com>
I am new to MPI library. I downloaded and started using OpenMPI library to build MPI programs. I wanted to know how does MPI program communicates over the network. I am trying to trace the flow of MPI_Send and MPI_Bcast APIS to find the actual send/recv calls being used for sending the packets over the network. I was trying to look into the code , I found some tcp related socket connections in code base in "ompi/mca/btl/tcp/" but I am not able to figureout how does MPI_Send works. Please if anyone knows how MPI_Send and MPI_Recv APIs works for communicating over network,please let me know.
Stony Brook University
devel mailing list