llnl / llnl/PnMPI

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

Open
#11 3 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C
Stars
22
Forks
12
PR merge metrics
No merged PRs in 30d

Description

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?

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the CentOS 7 build using the listed package installation, module load, CMake, and make commands. Start with src/modules/metrics/timing.c and compare the reported metric_atomic_init, counters, and struct counter errors with the surrounding code. Done means the metrics-timing target compiles successfully.

Written by the indexing model from the issue text.

Assessment

Tech stack
c
Domain
build-system
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.