Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有本地mpi安装的Vampir_Mpi_Trace_Openmpi - Fatal编程技术网

带有本地mpi安装的Vampir

带有本地mpi安装的Vampir,mpi,trace,openmpi,Mpi,Trace,Openmpi,我在使用Vampir的集群上工作,以可视化mpi通信。因为集群缺少MPI3实现,所以我安装了OpenMPI2.0.0,在我的主目录中使用了-prefix以外的其他标志,没有Vampir也可以正常工作。现在我不知道如何将本地安装的MPI3与Vampir正确结合起来,以构建我的程序fetchAndOpTest.f90。我尝试了以下方法: vtf90 -vt:fc ~/OpenMPI2/bin/mpif90 -o fetchAndOpTestF90.x fetchAndOpTest.f90 不知道这

我在使用Vampir的集群上工作,以可视化mpi通信。因为集群缺少MPI3实现,所以我安装了OpenMPI2.0.0,在我的主目录中使用了-prefix以外的其他标志,没有Vampir也可以正常工作。现在我不知道如何将本地安装的MPI3与Vampir正确结合起来,以构建我的程序fetchAndOpTest.f90。我尝试了以下方法:

vtf90 -vt:fc ~/OpenMPI2/bin/mpif90 -o fetchAndOpTestF90.x fetchAndOpTest.f90
不知道这是否重要,但这会给出以下警告:/usr/bin/ld:warning:libmpi.so.1,由/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../../../lib/libmpi_f77.so所需,可能与libmpi.so.20冲突

使用~/OpenMPI2/bin/mpirun-np 2 fetchAndOpTestF90.x执行我的程序会导致: fetchAndOpTestF90.x:加载共享库时出错:libvt mpi.so.0:无法打开共享对象文件:没有这样的文件或目录[…]

因此,我也尝试了vtf90-vt:fc~/OpenMPI2/bin/mpif90-L/opt/vampirtrace/5.14.4/lib-o fetchAndOpTestF90.x fetchAndOpTest.f90,但它没有改变ldd输出

编辑:根据@Harald的建议编辑了LD_库_路径

>ldd fetchAndOpTestF90.x linux vdso.so.1=>0x00007ffc6ada9000 libmpi_f77.so.1=>/usr/lib/libmpi_f77.so.1 0x00007ff8fdf2e000 libvt mpi.so.0=>/opt/vampirtrace/5.14.4/lib/libvt mpi.so.0 0x00007ff8fdca3000 libvt mpi unify.so.0=>/opt/vampirtrace/5.14.4/lib/libvt mpi unify.so.0 0x00007ff8fda18000 libotfaux.so.0=>/opt/vampirtrace/5.14.4/lib/libotfaux.so.0 0x00007ff8fd810000 libstdc++.so.6=>/usr/lib/x86_64-linux-gnu/libstdc++.so.6 0x00007ff8fd50c000 libopen trace format.so.1=>/opt/vampirtrace/5.14.4/lib/libopen trace format.so.1 0x00007ff8fd2c4000 libz.so.1=>/lib/x86_64-linux-gnu/libz.so.1 0x00007ff8fd0ab000 libpapi.so.5.3=>/usr/lib/x86_64-linux-gnu/libpapi.so.5.3 0x00007ff8fce57000 libdl.so.2=>/lib/x86_64-linux-gnu/libdl.so.2 0x00007ff8fcc53000 libgfortran.so.3=>/usr/lib/x86_64-linux-gnu/libgfortran.so.3 0x00007ff8fc939000 libm.so.6=>/lib/x86_64-linux-gnu/libm.so.6 0x00007ff8fc633000 libmpi_usempi.so.20=>/home/USER/OpenMPI2/lib/libmpi_usempi.so.20 0x00007ff8fc430000 libmpi_mpifh.so.20=>/home/USER/OpenMPI2/lib/libmpi_mpifh.so.20 0x00007ff8fc1df000 libmpi.so.20=>/home/USER/OpenMPI2/lib/libmpi.so.20 0x00007ff8fbefb000 libgcc_s.so.1=>/lib/x86_64-linux-gnu/libgcc_s.so.1 0x00007ff8fbce5000 libquadmath.so.0=>/usr/lib/x86_64-linux-gnu/libquadmath.so.0 0x00007ff8fbaa9000 libpthread.so.0=>/lib/x86_64-linux-gnu/libpthread.so.0 0x00007ff8fb88b000 libc.so.6=>/lib/x86_64-linux-gnu/libc.so.6 0x00007ff8fb4c6000 libmpi.so.1=>/usr/lib/libmpi.so.1 0x00007ff8fb145000 /lib64/ld-linux-x86-64.so.2 0x00007ff8fe162000 libpfm.so.4=>/usr/lib/x86_64-linux-gnu/libpfm.so.4 0x00007ff8fadff000 libopen-pal.so.20=>/home/USER/OpenMPI2/lib/libopen-pal.so.20 0x00007ff8fab09000 libopen-rte.so.20=>/home/USER/OpenMPI2/lib/libopen-rte.so.20 0x00007ff8fa887000 libutil.so.1=>/lib/x86_64-linux-gnu/libutil.so.1 0x00007ff8fa684000 libhwloc.so.5=>/usr/lib/x86_64-linux-gnu/libhwloc.so.5 0x00007ff8fa43b000 libltdl.so.7=>/usr/lib/x86_64-linux-gnu/libltdl.so.7 0x00007ff8fa231000 libnuma.so.1=>/usr/lib/x86_64-linux-gnu/libnuma.so.1 0x00007ff8fa026000 libpciaccess.so.0=>/usr/lib/x86_64-linux-gnu/libpciaccess.so.0 0x00007ff8f9e1d000 librt.so.1=>/lib/x86_64-linux-gnu/librt.so.1 0x00007ff8f9c15000


现在执行抛出错误:mpirun注意到节点群集上PID为0的进程秩0在信号11上退出分段错误程序是正确的,使用本地MPI3安装而不使用Vampir的构建和执行运行良好

问题似乎可以通过不同的备选方案来解决,以便找到库:

静态链接应用程序,即在链接时使用-static标志。 添加${HOME}/OpenMPI2/lib或/opt/vampirtrace/5.14.4/lib?,因为在运行二进制文件之前,您的MPI安装已在LD_LIBRARY_PATH环境变量中。 在链接二进制文件时使用-rpath,以便链接器自动搜索给定目录。您可以使用-Wl,-rpath-Wl、${HOME}/OpenMPI2/lib或/opt/vampirtrace/5.14.4/lib? 编辑 请注意,您指出您有一个vampirtrace安装/opt/vampirtrace/5.14.4,但与OpenMPI 2.0相比,这太旧了,请参见-两者之间的差异约为3年。OpenMPI在这些年中发生了很大的变化,尤其是在2.0版中。这也可能与您观察到的警告有关,即版本差异。此外,这是关于这个问题的坏消息,从上一个web链接中,您会注意到OpenMPI中的vampirtrace嵌入式包已被删除

你最好的选择,IMHO,是尝试一下vampirtrace的继任者,它也会生成Vampir跟踪-
文件夹。由于OpenMPI 2.0是最新版本,您可能需要从Score-P尝试RC。

问题似乎可以通过不同的替代方案来解决,以便找到库:

静态链接应用程序,即在链接时使用-static标志。 添加${HOME}/OpenMPI2/lib或/opt/vampirtrace/5.14.4/lib?,因为在运行二进制文件之前,您的MPI安装已在LD_LIBRARY_PATH环境变量中。 在链接二进制文件时使用-rpath,以便链接器自动搜索给定目录。您可以使用-Wl,-rpath-Wl、${HOME}/OpenMPI2/lib或/opt/vampirtrace/5.14.4/lib? 编辑 请注意,您指出您有一个vampirtrace安装/opt/vampirtrace/5.14.4,但与OpenMPI 2.0相比,这太旧了,请参见-两者之间的差异约为3年。OpenMPI在这些年中发生了很大的变化,尤其是在2.0版中。这也可能与您观察到的警告有关,即版本差异。此外,这是关于这个问题的坏消息,从上一个web链接中,您会注意到OpenMPI中的vampirtrace嵌入式包已被删除


你最好的选择,IMHO,是尝试一下vampirtrace的后继者,它也会生成Vampir跟踪文件。由于OpenMPI 2.0是最新版本,您可能需要从Score-P尝试RC。

您的VampirTrace库是根据其他一些系统范围的MPI实现编译的,并通过依赖项拉入其DSO:

--> libmpi_f77.so.1 => /usr/lib/libmpi_f77.so.1 (0x00007ff8fdf2e000)
libmpi_usempi.so.20 => /home/USER/OpenMPI2/lib/libmpi_usempi.so.20 (0x00007ff8fc430000)
libmpi_mpifh.so.20 => /home/USER/OpenMPI2/lib/libmpi_mpifh.so.20 (0x00007ff8fc1df000)
libmpi.so.20 => /home/USER/OpenMPI2/lib/libmpi.so.20 (0x00007ff8fbefb000)
--> libmpi.so.1 => /usr/lib/libmpi.so.1 (0x00007ff8fb145000)
libopen-pal.so.20 => /home/USER/OpenMPI2/lib/libopen-pal.so.20 (0x00007ff8fab09000)
libopen-rte.so.20 => /home/USER/OpenMPI2/lib/libopen-rte.so.20 (0x00007ff8fa887000)
VampirTrace使用的PMPI_*符号可能由系统范围的MPI库解析,因此PMPI机制的参数传递失败。由于VampirTrace是一个开源项目,与Vampir不同,Vampir是一个封闭源代码的商业工具,因此您可以从中下载它,并使用自己的开放MPI构建对其进行编译。但这对您的情况没有帮助,因为VampirTtrace对新的MPI-3 RMA调用一无所知,它不会跟踪它们,它们很可能会作为用户函数出现在跟踪中


如前所述,改用得分-p。版本2.0.2支持整个MPI-3.1调用集合。

您的VampirTrace库是根据其他一些系统范围的MPI实现编译的,并通过其DSO中的依赖项拉入:

--> libmpi_f77.so.1 => /usr/lib/libmpi_f77.so.1 (0x00007ff8fdf2e000)
libmpi_usempi.so.20 => /home/USER/OpenMPI2/lib/libmpi_usempi.so.20 (0x00007ff8fc430000)
libmpi_mpifh.so.20 => /home/USER/OpenMPI2/lib/libmpi_mpifh.so.20 (0x00007ff8fc1df000)
libmpi.so.20 => /home/USER/OpenMPI2/lib/libmpi.so.20 (0x00007ff8fbefb000)
--> libmpi.so.1 => /usr/lib/libmpi.so.1 (0x00007ff8fb145000)
libopen-pal.so.20 => /home/USER/OpenMPI2/lib/libopen-pal.so.20 (0x00007ff8fab09000)
libopen-rte.so.20 => /home/USER/OpenMPI2/lib/libopen-rte.so.20 (0x00007ff8fa887000)
VampirTrace使用的PMPI_*符号可能由系统范围的MPI库解析,因此PMPI机制的参数传递失败。由于VampirTrace是一个开源项目,与Vampir不同,Vampir是一个封闭源代码的商业工具,因此您可以从中下载它,并使用自己的开放MPI构建对其进行编译。但这对您的情况没有帮助,因为VampirTtrace对新的MPI-3 RMA调用一无所知,它不会跟踪它们,它们很可能会作为用户函数出现在跟踪中


如前所述,改用得分-p。版本2.0.2支持整个MPI-3.1调用集合。

我没有构建静态库,所以直接使用建议2。我编辑了ldd输出,但现在使用“~/OpenMPI2/bin/mpirun-np 1 fetchAndOpTest.x”执行时抛出一个错误:mpirun注意到节点集群上PID为0的进程秩0在信号11分段错误时退出。其他程序都正确,也会发生这种情况。也许这个警告说明了这个问题?我试试P分。我认为在这种情况下,这是解决我问题的最佳方案。我没有构建静态LIB,所以我直接使用建议2。我编辑了ldd输出,但现在使用“~/OpenMPI2/bin/mpirun-np 1 fetchAndOpTest.x”执行时抛出一个错误:mpirun注意到节点集群上PID为0的进程秩0在信号11分段错误时退出。其他程序都正确,也会发生这种情况。也许这个警告说明了这个问题?我试试P分。我认为在这种情况下,这是解决我问题的最佳方案。不仅vampirtrace不知道最近添加到mpi 3/3.1中的内容,而且可能由于mpi 3的构造而无法编译。感谢您的补充解释,Score-P如愿以偿地完成了它的工作,不仅vampirtrace不知道最近添加到mpi 3/3.1中的内容,而且可能由于mpi 3的构造而无法编译。感谢您的额外解释,Score-P按要求完成了它的工作