Skip to Content.
Sympa Menu

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

charm AT lists.cs.illinois.edu

Subject: Charm++ parallel programming system

List archive

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


Chronological Thread 
  • From: Jeff Hammond <jeff.science AT gmail.com>
  • To: Jozsef Bakosi <jbakosi AT gmail.com>
  • Cc: "charm AT cs.uiuc.edu" <charm AT cs.uiuc.edu>
  • Subject: Re: [charm] #include <intrinsics.h> in converse.h
  • Date: Thu, 1 Dec 2016 21:24:37 +0800



On Thu, Dec 1, 2016 at 1:43 AM, Jozsef Bakosi <jbakosi AT gmail.com> wrote:
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);


That error does not make sense, unless the compiler is implicitly including that header as well.  You may want to file a ticket with Cray to get to the root cause.
 
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.

It seems then that the header isn't actually required (anymore) and CMK_C_BUILTIN_IA32_XFENCE should be disabled by default now.
 
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.


Run `find /opt/cray/ -name intrinsics.h`.  You should get a non-zero result.  I see many matches to /opt/cray/cce/*/CC/x86-64/compiler_include_base/basic/intrinsics.h on NERSC Edison.

Sorry that none of this actually solves your problem.

Jeff
 
What do you guys suggest fixing this problem?

Thanks,
Jozsef



--



Archive powered by MHonArc 2.6.19.

Top of Page