在OpenMPI中,如果我对任何集体操作(例如MPI_Reduce)的调用堆栈进行了足够深入的研究,就会发现它调用了一个名为send()的函数。
经过大量的grepping之后,我不确定send()的实现位置。我怀疑send()可能埋在某种宏或晦涩的填充层内部。
OpenMPI代码库中send()的实现在哪里?
我正在查看OpenMPI v1.8.1,尽管我怀疑在不同版本之间,源树的组织没有太大变化。
send(2)
是BSD套接字系统调用,用于通过网络套接字发送数据。tcp
Open MPI的BTL最终使用它来执行从一个进程到另一个进程的实际网络传输,并且其实现可在标准C库的源代码和OS内核中找到。
如果您对Open MPI用于通过TCP / IP网络将消息从一个等级传输到另一个等级的实际高级机制感兴趣,则tcp
可以在$OMPI_SOURCE/ompi/mca/btl/tcp/
(对于较旧的Open MPI版本)或在$OMPI_SOURCE/opal/mca/btl/tcp/
(对于较新的Open MPI版本)中找到BTL本身。版本)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句