charm AT lists.siebelschool.illinois.edu
Subject: Charm++ parallel programming system
List archive
- 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.