Skip to Content.
Sympa Menu

charm - [charm] #include <intrinsics.h> in converse.h

charm AT lists.cs.illinois.edu

Subject: Charm++ parallel programming system

List archive

[charm] #include <intrinsics.h> in converse.h


Chronological Thread 
  • From: Jozsef Bakosi <jbakosi AT gmail.com>
  • To: "charm AT cs.uiuc.edu" <charm AT cs.uiuc.edu>
  • Subject: [charm] #include <intrinsics.h> in converse.h
  • Date: Wed, 30 Nov 2016 10:43:31 -0700

Hi folks,

I have successfully built Charm++ using the Cray C++ compiler suite with the following build command:

$ build charm++ mpi-crayxc craycc --with-production

Now when I try to compile code that includes pup.h, which includes converse.h, which includes intrinsics.h, I get the error:

CC-311 crayc++: ERROR File = /opt/cray/pe/cce/8.5.4/CC/x86-4/compiler_include_base/basic/intrinsics.h, Line = 273
  An overload function cannot be distinguished by the return type alone.
  extern int64_t _popcnt32(uint32_t);

The section of converse.h in question is:

#if CMK_C_BUILTIN_IA32_XFENCE
#include <intrinsics.h>
#endif

If I comment out including intrinsics.h above, the particular error above goes away. This only happens on Crays and only with the Cray C++ compiler, but with all available cce modules, i.e., the intrinsics.h associated to all available cce versions. Interestingly, I cannot find an intrinsics.h system-wide on linux for example, so the non-existence of this header does not seem to be an issue, but on the two Cray machines I have tested this, the above system-wide header consistently gets picked up and fails to compile. I also wonder why this header is not picked up during building Charm++ itself.

What do you guys suggest fixing this problem?

Thanks,
Jozsef


  • [charm] #include <intrinsics.h> in converse.h, Jozsef Bakosi, 11/30/2016

Archive powered by MHonArc 2.6.19.

Top of Page