Boost logo

Boost-Build :

Subject: Re: [Boost-build] [EXTERNAL] Using boost with cray c++
From: Alan Wild (alan_at_[hidden])
Date: 2013-08-06 11:05:04


I apologize for not replying to this sooner, but I happened to have some
additional experience with Boost and Cray C++ that reminded me I need to
follow-up on this.

I'm able to build all of Boost on Cray C++ with quite a few different
versions of the Cray C++ compiler with the Exceptions of the "log" (new in
1.54) and "wave" modules (template expansions eventually crash the
compiler). I have shared some suggested diff's on this list for the
cray.jam file as well as posted "bugs" for the cray and pgi compilers.

The issue you've encountered is that while the Cray C++ compiler supports
some of the GNU extensions (enough when you use the -h gnu option that it
does define the __GNUC__ compiler macro) it doesn't honor all of them.
Recommndations I've seen online is to use gcc to compile the relevant "cpp"
file into assembler and then finish the compile with the Cray C++ compiler.

Personally, I didn't feel like hancking these steps into a .jam file and
instead elected to modify two files:

--- boost_1_54_0/boost/atomic/detail/platform.hpp 2012-12-15
07:24:01.000000000 -0600
+++ boost_1_54_0.new/boost/atomic/detail/platform.hpp 2013-08-05
16:20:54.959156540 -0500
@@ -15,7 +15,11 @@
 #pragma once
 #endif
-#if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
+#if defined (__CRAYXE) || defined (__CRAYXT)
+
+ #include <boost/atomic/detail/base.hpp>
+
+#elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
     #include <boost/atomic/detail/gcc-x86.hpp>
--- boost_1_54_0/boost/asio/detail/fenced_block.hpp 2013-05-20
07:32:20.000000000 -0500
+++ boost_1_54_0.new/boost/asio/detail/fenced_block.hpp 2013-08-05
16:33:19.375156111 -0500
@@ -29,6 +29,8 @@
 # include <boost/asio/detail/gcc_arm_fenced_block.hpp>
 #elif defined(__GNUC__) && (defined(__hppa) || defined(__hppa__))
 # include <boost/asio/detail/gcc_hppa_fenced_block.hpp>
+#elif defined(__CRAYXT) || defined(__CRAYXE)
+# include <boost/asio/detail/gcc_sync_fenced_block.hpp>
 #elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
 # include <boost/asio/detail/gcc_x86_fenced_block.hpp>
 #elif defined(__GNUC__) \
@@ -58,6 +60,8 @@
 typedef gcc_arm_fenced_block fenced_block;
 #elif defined(__GNUC__) && (defined(__hppa) || defined(__hppa__))
 typedef gcc_hppa_fenced_block fenced_block;
+#elif defined(__CRAYXT) || defined(__CRAYXE)
+typedef gcc_sync_fenced_block fenced_block;
 #elif defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
 typedef gcc_x86_fenced_block fenced_block;
 #elif defined(__GNUC__) \

Which causes boost to choose the "less-optimized" implementation (but one
that should work). The platform.hpp change, in particuliar, allows the
thread library to compile.

-Alan

On Tue, Jul 16, 2013 at 11:00 AM, <boost-build-request_at_[hidden]>wrote:

> Noel >> We use Boost with Cray, do you have a specific question or issue?
>
> I am using the latest module 8.2. Boost itself compile ok.
> However my application, which pulls in some of the boost
> asio headers does not compile.
>
> get the following errors/warnings:
>
> CC-1121 crayc++: ERROR File =
> /home/users/p01869/boost_1_53_0/boost/asio/detail/gcc_x86_fenced_block.hpp,
> Line = 58
> The asm constraint letter 'r' is unknown.
>
> "=r"(r), "=m"(m) :
> ^
>
> CC-1359 crayc++: WARNING File =
> /home/users/p01869/boost_1_53_0/boost/asio/detail/gcc_x86_fenced_block.hpp,
> Line = 56
> The "asm" construct is ignored.
>
> __asm__ __volatile__ (
>
>
> This seemed strange, because I am using cray C++ but the files refers to
> gcc
> however on closer inspection its uses
>
> #if defined(__GNUC__) && (defined(__i386__) || defined(__x86_64__))
>
> So I assume its because 'defined(__x86_64__)' is valid.
>
> Any way I have no clue, how to fix it, and may have to resort to intel/gnu
> compilers ?
>
> Best regards
> Avi
>
>

--
alan_at_[hidden] http://humbleville.blogspot.com


Boost-Build list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk