Boost logo

Boost Users :

From: Alex.Durie (alex.durie_at_[hidden])
Date: 2020-02-04 15:37:32


Thanks John,

>The good news is that Intel on Linux does support GCC's __float128 type,
>so my suggestion would be to:
>* Remove the #define BOOST_MP_USE_QUAD
>* Build with -std=gnu++14 rather than -std=c++14
>* Remove the -Qoption,cpp,--extended_float_type option.

Unfortunately that didn't work, I get the new compiler error;

/home/alex/boost/boost_1_71_0/boost/multiprecision/detail/number_base.hpp(216): error: static assertion failed with "is_integral<T>::value || is_enum<T>::value || std::numeric_limits<T>::is_specialized"
BOOST_STATIC_ASSERT(is_integral<T>::value || is_enum<T>::value || std::numeric_limits<T>::is_specialized);

Are you able to help?

Many thanks,

Alex

________________________________
From: Boost-users <boost-users-bounces_at_[hidden]> on behalf of boost-users-request_at_[hidden] <boost-users-request_at_[hidden]>
Sent: 04 February 2020 10:56
To: boost-users_at_[hidden] <boost-users_at_[hidden]>
Subject: Boost-users Digest, Vol 5318, Issue 1

CAUTION: This mail comes from outside the University. Please consider this before opening attachments, clicking links, or acting on the content.

Send Boost-users mailing list submissions to
        boost-users_at_[hidden]

To subscribe or unsubscribe via the World Wide Web, visit
        https://lists.boost.org/mailman/listinfo.cgi/boost-users
or, via email, send a message with subject or body 'help' to
        boost-users-request_at_[hidden]

You can reach the person managing the list at
        boost-users-owner_at_[hidden]

When replying, please edit your Subject line so it is more specific
than "Re: Contents of Boost-users digest..."

Today's Topics:

   1. boost float128 and Intel's _Quad with Tux Eigen (Alex.Durie)
   2. [boost build] - How to create symbols (.pdb) files on windows
      using VS2017 Community Edition? (Eko palypse)
   3. Re: [boost build] - How to create symbols (.pdb) files on
      windows using VS2017 Community Edition? (Mateusz Loskot)
   4. Re: [boost build] - How to create symbols (.pdb) files on
      windows using VS2017 Community Edition? (Eko palypse)
   5. Re: boost float128 and Intel's _Quad with Tux Eigen (John Maddock)

----------------------------------------------------------------------

Message: 1
Date: Mon, 3 Feb 2020 21:33:13 +0000
From: Alex.Durie <alex.durie_at_[hidden]>
To: "boost-users_at_[hidden]" <boost-users_at_[hidden]>
Subject: [Boost-users] boost float128 and Intel's _Quad with Tux Eigen
Message-ID:
        <CWLP265MB0244A9FE67071B7EE7C7E2BFA3000_at_[hidden]>

Content-Type: text/plain; charset="iso-8859-1"

Hi,
I have written a short program utilising boost::float128 together with tux Eigen which successfully compiles and runs using g++, however it fails when I use icc.
The compiler error is

/home/alex/boost/boost_1_71_0/boost/multiprecision/float128.hpp(727): error: no suitable constructor exists to convert from "const _Quad" to "boost::multiprecision::number<boost::multiprecision::backends::float128_backend, boost::multiprecision::et_off>"
     static number_type (min)() BOOST_NOEXCEPT { return BOOST_MP_QUAD_MIN; }
                                                        ^
How can I resolve this?

My example code is;
#include <iostream>
#include <cmath>
#include <Eigen/Dense>
#include <Eigen/Eigenvalues>
#include <iomanip>
#include <boost/cstdfloat.hpp>
#include <boost/multiprecision/float128.hpp>
#include <boost/math/special_functions.hpp>
#include <boost/math/constants/constants.hpp>
#include <quadmath.h>
#define BOOST_MP_USE_QUAD

using namespace Eigen;
using namespace std;

int main(){
  typedef Matrix<complex<boost::multiprecision::float128>, Dynamic, Dynamic> MatrixXcmp;
  MatrixXcmp C = MatrixXcmp::Random(8,8);
  cout<<setprecision(128)<<C<<endl<<endl;
  ComplexEigenSolver<MatrixXcmp> ces;
  ces.compute(C);
  return 0;
}

It only fails compilation when I put in the line 'ces.compute(C);'.

I compile with
icpc quadtest.cpp -std=c++14 -Qoption,cpp,--extended_float_type -O2 -DMKL_LP64 -lmkl_intel_lp64 -fp-model precise -lmkl_sequential -lmkl_core -lpthread -lm -ldl -lquadmath

Many thanks in advance,

Alex
-------------- next part --------------
HTML attachment scrubbed and removed

------------------------------

Message: 2
Date: Mon, 3 Feb 2020 23:23:31 +0100
From: Eko palypse <ekopalypse_at_[hidden]>
To: boost-users_at_[hidden]
Subject: [Boost-users] [boost build] - How to create symbols (.pdb)
        files on windows using VS2017 Community Edition?
Message-ID:
        <CAD8XV+3=PM0yvD5W+RP+dGDubUB9gJcsvS+BTci893zc7y08JQ_at_[hidden]>
Content-Type: text/plain; charset="utf-8"

How can I build pdb files using b2 tool?
If I run b2 -a --with-regex toolset=msvc-14.1 debug-symbols=on
address-model=64 architecture=ia64 variant=debug
it creates the needed lib but no pdb files are created.

Thank you
Eren
-------------- next part --------------
HTML attachment scrubbed and removed

------------------------------

Message: 3
Date: Tue, 4 Feb 2020 00:06:43 +0100
From: Mateusz Loskot <mateusz_at_[hidden]>
To: boost-users_at_[hidden]
Subject: Re: [Boost-users] [boost build] - How to create symbols
        (.pdb) files on windows using VS2017 Community Edition?
Message-ID:
        <CABUeae_nDj4CaC0+_gSBjEts_ebfEfkf2rVb7jXhxGVFADr64g_at_[hidden]>
Content-Type: text/plain; charset="UTF-8"

On Mon, 3 Feb 2020 at 23:23, Eko palypse via Boost-users
<boost-users_at_[hidden]> wrote:
>
> How can I build pdb files using b2 tool?
> If I run b2 -a --with-regex toolset=msvc-14.1 debug-symbols=on address-model=64 architecture=ia64 variant=debug
> it creates the needed lib but no pdb files are created.

Additionally to
debug-symbols=on
add
debug-store=database

You should find PDBs in sub-folder(s) called debug-store-database.

You may find some additional useful info here
https://github.com/boostorg/build/issues/492

Best regards,

--
Mateusz Loskot, http://mateusz.loskot.net
------------------------------
Message: 4
Date: Tue, 4 Feb 2020 00:28:37 +0100
From: Eko palypse <ekopalypse_at_[hidden]>
To: boost-users_at_[hidden]
Subject: Re: [Boost-users] [boost build] - How to create symbols
        (.pdb) files on windows using VS2017 Community Edition?
Message-ID:
        <CAD8XV+0zHmkbsGWJzF2ToiAPWfOXfPVbZM1KbHn0-yHQtrdpEQ_at_[hidden]>
Content-Type: text/plain; charset="utf-8"
Thank you very much Mateusz,
works like a charm.
Thank you
Eren
-------------- next part --------------
HTML attachment scrubbed and removed
------------------------------
Message: 5
Date: Tue, 4 Feb 2020 10:56:54 +0000
From: John Maddock <jz.maddock_at_[hidden]>
To: "Alex.Durie via Boost-users" <boost-users_at_[hidden]>
Subject: Re: [Boost-users] boost float128 and Intel's _Quad with Tux
        Eigen
Message-ID: <6894ea21-796d-30b9-9375-fee540fa6ef5_at_[hidden]>
Content-Type: text/plain; charset=windows-1252; format=flowed
On 03/02/2020 21:33, Alex.Durie via Boost-users wrote:
> Hi,
> I have written a short program utilising boost::float128 together with
> tux Eigen which successfully compiles and runs using g++, however it
> fails when I use icc.
> The compiler error is
>
> /home/alex/boost/boost_1_71_0/boost/multiprecision/float128.hpp(727):
> error: no suitable constructor exists to convert from "const _Quad" to
> "boost::multiprecision::number<boost::multiprecision::backends::float128_backend,
> boost::multiprecision::et_off>"
> ? ? ?static number_type (min)() BOOST_NOEXCEPT { return
> BOOST_MP_QUAD_MIN; }
> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ^
> How can I resolve this?
I fear due to a lack of consistent testing support for the Intel
compiler, we may well have dropped the ball and broken support for
Intel's _Quad type.
The good news is that Intel on Linux does support GCC's __float128 type,
so my suggestion would be to:
* Remove the #define BOOST_MP_USE_QUAD
* Build with -std=gnu++14 rather than -std=c++14
* Remove the -Qoption,cpp,--extended_float_type option.
HTH, John.
>
> My example code is;
> #include <iostream>
> #include <cmath>
> #include <Eigen/Dense>
> #include <Eigen/Eigenvalues>
> #include <iomanip>
> #include <boost/cstdfloat.hpp>
> #include <boost/multiprecision/float128.hpp>
> #include <boost/math/special_functions.hpp>
> #include <boost/math/constants/constants.hpp>
> #include <quadmath.h>
> #define BOOST_MP_USE_QUAD
>
> using namespace Eigen;
> using namespace std;
>
> int main(){
> ? typedef Matrix<complex<boost::multiprecision::float128>, Dynamic,
> Dynamic> MatrixXcmp;
> ? MatrixXcmp C = MatrixXcmp::Random(8,8);
> cout<<setprecision(128)<<C<<endl<<endl;
> ? ComplexEigenSolver<MatrixXcmp> ces;
> ? ces.compute(C);
> ? return 0;
> }
>
> It only fails compilation when I put in the line 'ces.compute(C);'.
>
> I compile with
> icpc quadtest.cpp -std=c++14 -Qoption,cpp,--extended_float_type -O2
> -DMKL_LP64 -lmkl_intel_lp64 -fp-model precise -lmkl_sequential
> -lmkl_core -lpthread -lm -ldl -lquadmath
>
> Many thanks in advance,
>
> Alex
>
> _______________________________________________
> Boost-users mailing list
> Boost-users_at_[hidden]
> https://lists.boost.org/mailman/listinfo.cgi/boost-users
------------------------------
Subject: Digest Footer
_______________________________________________
Boost-users mailing list
Boost-users_at_[hidden]
https://lists.boost.org/mailman/listinfo.cgi/boost-users
------------------------------
End of Boost-users Digest, Vol 5318, Issue 1
********************************************


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net