Quantcast
Channel: Intel® C++ Compiler
Viewing all articles
Browse latest Browse all 1616

Can compile on CENTOS 7 but not on Fedora 22

$
0
0

 

Hello,

Hello,

I have a code that I can compile and run under Centos 7 (parallel studio XE 2016 with odeint-v2 from boost 1.59.0). However, the same code gives me tons of error messages under fedora 22.

void GABAB::compCumSum(double* out,double T_in,double dur)
{
    double dt=0.01;
    int NStep=(int) floor(dur/dt);

    int tmpstartInd=startInd;

    startInd=0;

    StateVector x(2 * NState);

    compInitState(x, 0.0, 0.0);

    for (int ii = 0; ii < NState; ii++)
        x[ ii + NState ] = 0.0;

    for (int ii = 0; ii < NState; ii++)
        out[ii] = x[ii];

    setInput(T_in, T_in);

    cumsum_GABAB tmp(*this);

    size_t steps = integrate_adaptive( tmp , x , 0.0 , dur , dt );

    for (int ii = 0; ii < NState; ii++)
        out[ii] = x[ii + NState];

    startInd=tmpstartInd;
}

StateVector is defined in a separate header as:

typedef boost::numeric::ublas::vector< double > StateVector;

When I compile this code under fedora 22, I have the following errors:

icpc -DMKL_ILP64 -il64 -qopenmp -restrict -O2 -std=c++11 -D__TBB_MIC_OFFLOAD=0 -I/opt/intel/mkl/include -I/opt/applications/boost/include  -D__ONLYONMIC=0  -DCType=1 -w -c GABAB.cpp -o ../bin/obj/GABAB.o
/usr/include/c++/5.1.1/functional(78): error: class "boost::numeric::odeint::controlled_runge_kutta<boost::numeric::odeint::runge_kutta_dopri5<StateVector, double, StateVector, double, boost::numeric::odeint::vector_space_algebra, boost::numeric::odeint::default_operations, boost::numeric::odeint::initially_resizer>, boost::numeric::odeint::default_error_checker<double, boost::numeric::odeint::vector_space_algebra, boost::numeric::odeint::default_operations>,
          boost::numeric::odeint::initially_resizer, boost::numeric::odeint::explicit_error_stepper_fsal_tag>" has no member "result_type"
      { typedef typename _Functor::result_type result_type; };
                                   ^
          detected during:
           

(I cut the output of the compilation to have a "short" topic. If needed, I can provide the full output)

Again, the same code, with the same installation process (of boost and intel cluster studio) works fine under centos 7. Finally, if I remove the -std=c++11 flag, I do not have any error. This is an OK workaround for now but I would like to go back to c++11. I first posted a message on the ODEINT GitHub forum and apparently this could be related to the compiler.

Any clue to what could generate these errors?

Thank you very much,

Pierre


Viewing all articles
Browse latest Browse all 1616

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>