【问题标题】:how do I get MPI profiling turned on with the MPE library?如何使用 MPE 库打开 MPI 分析?
【发布时间】:2019-06-21 09:27:09
【问题描述】:

我正在开发一款名为 PIO 的免费软件应用程序,专门针对气象学家和气候科学家:https://github.com/NCAR/ParallelIO。

顾名思义,它是一个使用 MPI 的并行 I/O 库。

我正在尝试为随附的 MPE 库启用分析。网上有很多不同的文档都提到了选项-mpilog,但是不清楚应该在哪里使用,或者是否应该使用其他东西。

当我尝试将 -mpilog 添加到 CC、CFLAGS 或 LDFLAGS 时,配置失败并显示 C 编译器无法工作的消息。

那么如何使用 MPE 打开日志记录?我在 Linux 系统上使用 MPICH 3.2。

【问题讨论】:

  • 试试CC=mpecc CFLAGS=-mpilog configure ...
  • Gilles Gouaillardet 如前所述,当我将其添加到 CFLAGS:configure:3821: mpicc -g -Wall -mpilog -I/usr/local/netcdf-c-4.7.0_hdf5- 时它不起作用1.10.5_mpich-3.2/include -I/usr/local/netcdf-fortran-4.4.5_c_4.6.3_mpich-3.2/include -I/usr/local/pnetcdf-1.11.0_shared/include -I/usr/local/gptl -all-1.0.0_mpich-3.2/include -I/usr/local/mpe2-2.4.9b/include -L/usr/local/netcdf-c-4.7.0_hdf5-1.10.5_mpich-3.2/lib -L/usr /local/pnetcdf-1.11.0_shared/lib -L/usr/local/gptl-all-1.0.0_mpich-3.2/lib -L/usr/local/mpe2-2.4.9b/lib conftest.c >&5 gcc: 错误: 无法识别的命令行选项'-mpilog'
  • 如果你使用 mpecc 而不是 mpicc 呢? (不,那不是错字……)
  • 不,没有mpecc。
  • 你应该安装所有的 MPE 包吗?根据github.com/pmodels/mpe 和类似来源,mpecc -mpilog ... 是要走的路。

标签: c parallel-processing mpi


【解决方案1】:

我已经完成了这项工作,方法如下。

首先,感谢 Gilles Gouaillardet 将我指向 MPE github 站点。那里有很多关于 MPE 的旧信息,而且这些年来它已经发生了很大的变化,所以在 GitHub 网站上阅读它可以消除很多困惑。

对于我的 PIO 项目,我不仅要使用 MPE 构建 PIO,还要使用 HDF5、netcdf-c 和 pnetcdf。

HDF5 是这样构建的:

CC='gcc' CPPFLAGS='-I/usr/local/zlib-1.2.11/include' LDFLAGS='-L/usr/local/zlib-1.2.11/lib' LIBS='-llmpe -lmpe -lmpi -lpthread' ./configure --prefix=/usr/local/hdf5-1.10.5_mpe_static --disable-shared --enable-parallel

netCDF 是这样构建的:

CC='gcc' CPPFLAGS='-I/usr/local/zlib-1.2.11/include -I/usr/local/hdf5-1.10.5_mpe_static/include' LDFLAGS='-L/usr/local/zlib-1.2.11/lib -L/usr/local/hdf5-1.10.5_mpe_static/lib' ./configure --prefix=/usr/local/netcdf-c-4.7.0_hdf5-1.10.5_mpe_static_nodap --disable-shared --disable-dap

pnetcdf 是这样构建的:

CC=gcc LIBS='-llmpe -lmpe -lmpi -lpthread' ./configure --prefix=/usr/local/pnetcdf-1.11.0_mpe --disable-shared --disable-cxx --disable-fortran

PIO 是这样构建的:

autoreconf -i && CC='gcc' CPPFLAGS='-I/usr/local/pnetcdf-1.11.0_mpe/include -I/usr/local/zlib-1.2.11/include -I/usr/local/hdf5-1.10.5_mpe_static/include -I/usr/local/netcdf-c-4.7.0_hdf5-1.10.5_mpe_static_nodap/include' LDFLAGS='-L/usr/local/pnetcdf-1.11.0_mpe/lib -L/usr/local/zlib-1.2.11/lib -L/usr/local/hdf5-1.10.5_mpe_static/lib -L/usr/local/netcdf-c-4.7.0_hdf5-1.10.5_mpe_static_nodap/lib' LIBS=' -lhdf5_hl -lhdf5 -lz -ldl -lm -llmpe -lmpe -lmpi -lpthread' ./configure --disable-shared --enable-mpe 

请注意,所有 mpicc/mpecc 编译器包装器似乎都无法为此构建产生正确的结果,因为这些库的列出顺序不正确。只有使用 CC=gcc 并显式链接到 -llmpe -lmpe -lmpi -lpthread 才能进行构建。

一旦构建,它会提供非常漂亮的图表:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-26
    • 2017-10-05
    • 2014-09-17
    • 2015-12-03
    • 1970-01-01
    • 2021-11-07
    • 2014-01-06
    相关资源
    最近更新 更多