ldd 输出显示其函数未被调用的共享对象文件
我对 Open MPI 创建的可执行文件运行 ldd 命令。它显示了对 libpthread.so 的引用 使用 LD_PRELOAD 变量,我创建了自己的 pthread_create 实现,但从它的输出来看,MPI 实现似乎没有像我预期的那样调用 pthread_create 。 如果未使用 ldd,为什么会在输出中显示 pthread so 文件? Open MPI 是否不为每个节点使用单独的 MPI 线程来实现功能?
I ran ldd command on an executable created by Open MPI. It shows a reference to libpthread.so
Using LD_PRELOAD variable I created my own implementation of pthread_create, but from the it output it seems that MPI implementation is not calling pthread_create as I had expected.
Why does ldd show pthread so file in output if it is not being used?
does Open MPI not use a separate MPI thread for every node to implement the functionality?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
MPI 使用进程,而不是线程。因此,Open MPI 不会为每个节点使用单独的 MPI 线程。
MPI uses processes, not threads. So no, Open MPI will not use a separate MPI thread per node.
如果二进制文件未使用
--as-needed
链接,那么它将获取对链接命令行上给出的每个库的引用,无论是否实际需要。将-Wl,--as-needed
传递给 gcc,以便将选项传递给 ld。If the binary is not linked with
--as-needed
then it will acquire a reference to every library given on the link command line, regardless of whether it is actually needed. Pass-Wl,--as-needed
to gcc in order to have it pass the option to ld.