PnMPI icon indicating copy to clipboard operation
PnMPI copied to clipboard

error while compiling PnMPI with hires libs on a clean CentOS7 installation.

Open cboneti opened this issue 5 years ago • 3 comments

On a clean Centos 7 machine (Intel64):

packages

sudo yum -y group install "Development Tools" 
sudo yum -y install cmake screen gcc-gfortran git help2man install environment-modules mpich-devel

build llnl-hires-timers and PnMPI

git clone https://github.com/LLNL/llnl-hires-timers.git
mkdir llnl-hires-timers/build && cd llnl-hires-timers/build && cmake .. && make &&sudo make install
git clone https://github.com/LLNL/PnMPI.git && cd PnMPI
git submodule update --init --recursive
mkdir build && cd build && module load mpi && cmake -DCMAKE_INSTALL_PREFIX=${HOME}/pnmpi ..
make

Error

That produces an error in modules/metrics/timing.c.

Scanning dependencies of target metrics-timing
[ 45%] Building C object src/modules/metrics/CMakeFiles/metrics-timing.dir/timing.c.o
/home/user/source/PnMPI/buildtimer/src/modules/metrics/timing.c:847:1: warning: implicit declaration of function ‘metric_atomic_init’ [-Wimplicit-function-declaration]
 metric_atomic_keyword size_t metric_invocations = metric_atomic_init(0);
 ^
/home/user/source/PnMPI/buildtimer/src/modules/metrics/timing.c:847:1: error: initializer element is not constant
/home/user/source/PnMPI/buildtimer/src/modules/metrics/timing.c: In function ‘MPI_Finalize’:
/home/user/source/PnMPI/buildtimer/src/modules/metrics/timing.c:10933:23: error: ‘counters’ undeclared (first use in this function)
       print_counters(&counters);
                       ^
/home/user/source/PnMPI/buildtimer/src/modules/metrics/timing.c:10933:23: note: each undeclared identifier is reported only once for each function it appears in
/home/user/source/PnMPI/buildtimer/src/modules/metrics/timing.c:10940:10: error: variable ‘tmp’ has initializer but incomplete type
   struct counter tmp = { 0 };
          ^
/home/user/source/PnMPI/buildtimer/src/modules/metrics/timing.c:10940:10: warning: excess elements in struct initializer [enabled by default]
/home/user/source/PnMPI/buildtimer/src/modules/metrics/timing.c:10940:10: warning: (near initialization for ‘tmp’) [enabled by default]
/home/user/source/PnMPI/buildtimer/src/modules/metrics/timing.c:10940:18: error: storage size of ‘tmp’ isn’t known
   struct counter tmp = { 0 };
                  ^
make[2]: *** [src/modules/metrics/CMakeFiles/metrics-timing.dir/timing.c.o] Error 1
make[1]: *** [src/modules/metrics/CMakeFiles/metrics-timing.dir/all] Error 2
make: *** [all] Error 2

solution:

It appears there are a few bugs in src/modules/metrics/timing.c.w. I was able to fix them. Should I send a patch?

cboneti avatar Oct 14 '20 00:10 cboneti

Thanks for reporting this issue. Please feel free to send a patch as pull request or comment the changes into this issue, so we can add it to the code.

alehaa avatar Oct 14 '20 06:10 alehaa

Thanks, I submitted the pull request.

cboneti avatar Oct 14 '20 08:10 cboneti

Thanks for tracking this down. Seems I forgot to remove a few invocations of metric_atomic_init(). when removing this function in 195b14c817c2e9d8e1e7c06ca70b9597d77317ee. I definitely should add a test case for this configuration.

alehaa avatar Oct 14 '20 09:10 alehaa