как включить профилирование MPI с помощью библиотеки MPE? - PullRequest
1 голос
/ 14 июня 2019

Я работаю над бесплатным программным приложением, предназначенным для метеорологов и климатологов, под названием PIO: https://github.com/NCAR/ParallelIO.

Как следует из названия, это библиотека параллельного ввода-вывода, использующая MPI.

Я пытаюсь включить профилирование для сопровождающей библиотеки MPE.В сети много разных документов, в которых упоминается опция -mpilog, но неясно, где ее следует использовать или нужно ли использовать что-то еще.

Когда я пытаюсь добавить -mpilog в любую из CC,CFLAGS, или LDFLAGS, конфигурирование завершается неудачно с сообщением о том, что компилятор C не работает.

Итак, как мне включить ведение журнала с помощью MPE?Я использую MPICH 3.2 в системе Linux.

1 Ответ

0 голосов
/ 21 июня 2019

Я получил это работает, и вот как.

Во-первых, спасибо Gilles Gouaillardet за указание на сайт MPE github. Существует много старой информации о MPE, и с годами она сильно изменилась, поэтому чтение об этом на сайте GitHub помогло устранить путаницу.

Для моего проекта PIO мне пришлось не только создавать PIO с MPE, но также 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.

После создания он дает очень хорошие графики: enter image description here

...