Project

General

Profile

Bug #1816

Cray CCE/8.5 builds are broken

Added by Sam White 9 months ago. Updated 4 months ago.

Status:
Rejected
Priority:
Normal
Assignee:
Category:
-
Target version:
-
Start date:
03/03/2018
Due date:
% Done:

0%


Description

On Cori, using PrgEnv-cray with CCE 8.6.2, craype-hugepages8M, and "./build charm++ gni-crayxc smp -j16 fails with this:

../bin/charmc  -optimize -production  -O3 -I.   -c -o commitid.o commitid.c
../bin/charmc  -optimize -production  -O3  -o ../lib/libconv-core.a convcore.o conv-conds.o conv-taskQ.o queueing.o msgmgr.o cpm.o cpthreads.o futures.o cldb.o random.o debug-conv.o debug-conv++.o conv-ccs.o ccs-builtins.o middle-ccs.o traceCore.o traceCoreCommon.o converseProjections.o machineProjections.o quiescence.o isomalloc.o mem-arena.o conv-counter.o memory-darwin-clang.o global-nop.o cmipool.o cpuaffinity.o cputopology.o cmitls.o memoryaffinity.o commitid.o sdag.o conv-interoperate.o 
ar: creating ../lib/libconv-core.a
make: *** No rule to make target 'machine.d', needed by 'machine.o'.  Stop.

Also this weird error shows up multiple times:

CC-2289 craycc: ERROR in command line
  Invalid characters after option '-M' in command line item '-MM'.
Fatal Error by charmc in directory /global/homes/s/swhite1/charm/gni-crayxc-smp/tmp
   Command cc -D_REENTRANT -I./../include -D__CHARMC__=1 -O3 -O2 -U_FORTIFY_SOURCE -D_REENTRANT -I../bin/../include -D__CHARMC__=1 -I. -I../include -O3 -O3 -MM -O2 -U_FORTIFY_SOURCE -c machine.c returned error code 1
charmc exiting...

History

#1 Updated by Juan Galvez 9 months ago

I have tried removing -MM option, building with craycc on Blue Waters, and now I get this:

Makefile:1027: Variable OPTS is defined to an empty string. Are you sure this is what you want?
../bin/charmc   -I.   -c -o DummyLB.o DummyLB.C
../bin/charmc   -I.   -c -o GreedyLB.o GreedyLB.C
../bin/charmc   -I.   -c -o GreedyRefineLB.o GreedyRefineLB.C
../bin/charmc   -I.   -c -o CommLB.o CommLB.C
../bin/charmc   -I.   -c -o RandCentLB.o RandCentLB.C
../bin/charmc   -I.   -c -o RefineLB.o RefineLB.C
../bin/charmc   -I.   -c -o RefineCommLB.o RefineCommLB.C
../bin/charmc   -I.   -c -o RotateLB.o RotateLB.C
../bin/charmc   -I.   -c -o DistributedLB.o DistributedLB.C
../bin/charmc   -I.   -c -o HierarchicalLB.o HierarchicalLB.C
../bin/charmc   -I.   -c -o HybridLB.o HybridLB.C
../bin/charmc   -I.   -c -o ComboCentLB.o ComboCentLB.C
../bin/charmc   -I.   -c -o RefineSwapLB.o RefineSwapLB.C
../bin/charmc   -I.   -c -o NeighborLB.o NeighborLB.C
../bin/charmc   -I.   -c -o OrbLB.o OrbLB.C
../bin/charmc   -I.   -c -o BlockLB.o BlockLB.C
CC-2116 crayc++: INTERNAL
  "/opt/cray/cce/8.4.6/CC/x86-64/lib/ccfe" was terminated due to receipt of signal 013:  Segmentation fault.
Fatal Error by charmc in directory /u/sciteam/galvez/charm-test-craycc/gni-crayxe-smp/tmp
   Command CC -D_REENTRANT -I./../include -D__CHARMC__=1 -D_REENTRANT -I../bin/../include -D__CHARMC__=1 -I. -h std=c++11 -c HierarchicalLB.C -o HierarchicalLB.o returned error code 1
charmc exiting...
gmake: *** [HierarchicalLB.o] Error 1
gmake: *** Waiting for unfinished jobs....

It segfaults compiling HierarchicalLB.C with no explanation.

#2 Updated by Sam White 9 months ago

You are using CCE 8.4.6, Charm++ only compiles on CCE 8.5+ I believe... I was using CCE 8.6.2 on Cori, but Blue Waters also has different versions of CCE you can use.

#3 Updated by Juan Galvez 9 months ago

I switched to craycc 8.5.8 on Blue Waters (which is apparently the most recent version they have) by doing

`module swap cce cce/8.5.8`

and got this error during configure:

checking machine name... gni-crayxe-smp
checking "cp command as"... cp -p
checking "C++ compiler as"... "CC   " 
checking "whether C++ compiler works"... "ok" 
checking "C++ linker as"... "CC    " 
checking "whether linker works"... "ok" 
checking "Native C++ compiler as"... "g++ " 
checking "Sequential C++ compiler as"... "g++ -fPIC " 
checking "whether C++ compiler supports C++11 without flags"... "no" 
checking "whether C++ compiler supports C++11 with '-std=c++11'"... "no" 
checking "whether C++ compiler supports C++11 with '--c++11'"... "no" 
checking "whether C++ compiler supports C++11 with '-h std=c++11'"... "yes" 
Charm++ requires C++11 support, but doesn't know the flag to enable it

#4 Updated by Sam White 9 months ago

Ugh, can you investigate why "checking "whether C++ compiler supports C++11 with '-h std=c++11'"... "yes" " doesn't equate to C++11 support being enabled? Maybe check the output of "CC -h std=c++11" or look at the config.log

#5 Updated by Juan Galvez 9 months ago

I'll try to look into that.

But could you also try building on Cori without -MM flag (or just -M)?

diff --git a/src/scripts/Makefile b/src/scripts/Makefile
index 1dc57b2eb..1dd584bab 100644
--- a/src/scripts/Makefile
+++ b/src/scripts/Makefile
@@ -1033,6 +1033,6 @@ machine.o: machine.d
 machine.d: machine.c conv-autoconfig.h
        @set -e; \
        rm -f $@; \
-       $(CHARMC) $(OPTS) -MM -I. -I$(INC) $< >$@.$$$$; \
+       $(CHARMC) $(OPTS) -I. -I$(INC) $< >$@.$$$$; \
        sed -e 's,\($*\)\.o[ :]*,\1.o $@ : ,g' -e 's,[Cc]:/,/cygdrive/c/,' < $@.$$$$ > $@; \
        rm -f $@.$$$$

#6 Updated by Juan Galvez 9 months ago

It seems like the configure C++11 test with `-h std=c++11` passes, but with a warning. config.log doesn't contain any information. This is the output of charmconfig.out:

### whether C++ compiler supports C++11 with '-h std=c++11'
// Check for Intel compiler incompatibility with the active g++/libstdc++ by
// including an arbitrary standard library header (cf bug #1560)
#include <map>

// Check for an excessively old g++/libstdc++ that can't handle features we use
#include <memory>
#include <vector>
std::unique_ptr<int> i;

class CkMigrateMessage;

struct base {
  base(void) { }
  base(CkMigrateMessage *) { }
};

template <class Parent>
struct CBaseT1 : Parent {
  std::vector<int> v; // check for C++11's shrink_to_fit()

  CBaseT1(void) :Parent()  { v.shrink_to_fit(); }
  CBaseT1(CkMigrateMessage *m) :Parent(m) { }
  CBaseT1(CBaseT1&& rhs) :Parent() { }

  template <typename... Args>
    CBaseT1(Args... args) : Parent(args...) { }
};

template struct CBaseT1<base>;
CC -D_REENTRANT -I../include -I. -c test.cpp -o test.o -h std=c++11
CC-12489 crayc++: WARNING File = /opt/gcc/4.8.1/snos/include/g++/type_traits, Line = 62
  constexpr non-static member function will not be implicitly 'const' in C++14
        constexpr operator value_type() { return value; }
        ^

Cray C++ : Version 8.5.8 (20170217211354_0071b093c0867e302a5c08403fe34f8aa78fc212)
Total warnings detected in test.cpp: 1

#7 Updated by Sam White 9 months ago

I'll that patch try on Cori, but we should also fix this configure error on BW. We should ignore warnings when testing for C++11 support. I think you can do that with CCE using "-h msglevel_4".

#8 Updated by Sam White 9 months ago

  • Status changed from New to In Progress

Yes, removing the "-MM" from src/scripts/Makefile solves the issue. Charm++ build then passes on Cori with CCE 8.6.2.

This commit added the "-MM": https://charm.cs.illinois.edu/gerrit/#/c/3400/

#9 Updated by Sam White 9 months ago

Changing "-MM" to "-M" works.

#11 Updated by Juan Galvez 9 months ago

It builds on BW without -MM flag (didn't test with -M) using craycc 8.5.8 and `-h std=c++11 -h msglevel_4` to suppress the warning. Also ran examples/charm++/load_balancing/stencil3d and it works.

#12 Updated by Sam White 9 months ago

Can you submit a patch for ignoring the warning when checking C++11 support of Cray CC?

#13 Updated by Juan Galvez 9 months ago

Ok, but it's been suggested other times in the past to use msglevel_4 but apparently it was never done. Are we sure we want this behavior?

#14 Updated by Sam White 9 months ago

Yeah, we don't want to disable warnings outside of configure checks. Maybe we should just not care about CCE 8.5 since CCE 8.6 works?

#15 Updated by Sam White 9 months ago

  • Target version deleted (6.9.0)
  • Subject changed from Cray CC builds are broken to Cray CCE/8.5 builds are broken
  • Status changed from In Progress to New

CCE 8.6 works on Cori

#16 Updated by Eric Bohm 7 months ago

Seems like simplest answer here to have configure test for 8.5 and reject it with a (8.5 not support, use 8.6) message.

#17 Updated by Eric Bohm 7 months ago

  • Assignee set to Juan Galvez

#18 Updated by Sam White 4 months ago

  • Status changed from New to Rejected

I don't think we care about supporting CCE <=v8.5

Also available in: Atom PDF