Parallel processing OpenMPI中的send()在哪里实现?
在OpenMPI中,如果我对任何集合操作(例如MPI_Reduce)的调用堆栈进行足够深入的跟踪,我会发现它调用了一个名为send()的函数 经过多次grepping之后,我不确定send()在哪里实现。我怀疑send()可能埋在宏或某种模糊的垫片层中 send()的实现在OpenMPI代码库中的何处? 我正在看OpenMPI v1.8.1,不过我怀疑在不同版本之间,sorce树的组织没有太大变化。是用于通过网络套接字发送数据的BSD套接字系统调用。OpenMPI的Parallel processing OpenMPI中的send()在哪里实现?,parallel-processing,mpi,openmpi,Parallel Processing,Mpi,Openmpi,在OpenMPI中,如果我对任何集合操作(例如MPI_Reduce)的调用堆栈进行足够深入的跟踪,我会发现它调用了一个名为send()的函数 经过多次grepping之后,我不确定send()在哪里实现。我怀疑send()可能埋在宏或某种模糊的垫片层中 send()的实现在OpenMPI代码库中的何处? 我正在看OpenMPI v1.8.1,不过我怀疑在不同版本之间,sorce树的组织没有太大变化。是用于通过网络套接字发送数据的BSD套接字系统调用。OpenMPI的tcpBTL最终使用它来执行从
tcp
BTL最终使用它来执行从一个进程到另一个进程的实际网络传输,其实现可以在标准C库的源代码和操作系统内核中找到
如果您对OpenMPI用于通过TCP/IP网络将消息从一个级别传输到另一个级别的实际更高级别机制感兴趣,则可以在$OMPI\u SOURCE/OMPI/mca/BTL/TCP/
(对于较旧的OpenMPI版本)或$OMPI\u SOURCE/opal/mca/BTL/TCP/
中找到TCP本身.send()很可能是POSIX系统调用-它在操作系统中实现,而不是在MPI中实现。