Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,20 @@
#
# ***************************************************************************

# The IMB-* targets each recurse into the same src_cpp/ directory and compile a
# shared set of intermediate objects (imb.o, benchmark_suites_collection.o,
# args_parser.o, scope.o, libyaml-cpp.a) to identical paths. Running these
# recursive builds concurrently (make -j) makes multiple sub-makes write those
# same object files at once, which clobbers them and intermittently breaks the
# link with errors such as "undefined reference to BenchmarkSuitesCollection::pnames"
# or "imb.o: File truncated". The recipes are not jobserver-aware (plain `make`,
# not `$(MAKE)`/`+`), so GNU Make < 4.4 happened to run them effectively serial;
# GNU Make >= 4.4's FIFO jobserver connects them to the parallel pool and exposes
# the race. Mark this Makefile non-parallel so the top-level suite builds are
# serialized regardless of -j. (Compilation within each suite sub-make is
# unaffected.)
.NOTPARALLEL:

all: IMB-MPI1 IMB-NBC IMB-RMA IMB-EXT IMB-IO IMB-MT IMB-P2P

IMB-MPI1:
Expand Down