ecmwf / atlas

A library for numerical weather prediction and climate modelling
https://sites.ecmwf.int/docs/atlas
Apache License 2.0
107 stars 41 forks source link

Compile failures with old Intel compiler #123

Closed DJDavies2 closed 1 year ago

DJDavies2 commented 1 year ago

I am getting compile failures with an older version of the Intel compiler (18.0.5.274):

compilation aborted for /home/d03/frwd/cylc-run/UpdateAtlas/share/mo-bundle/atlas/src/atlas/interpolation/method/structured/QuasiCubic2D.cc (code 2) gmake[2]: [atlas/src/atlas/CMakeFiles/atlas.dir/interpolation/method/structured/QuasiCubic2D.cc.o] Error 2 compilation aborted for /home/d03/frwd/cylc-run/UpdateAtlas/share/mo-bundle/atlas/src/atlas/interpolation/method/structured/Linear2D.cc (code 2) gmake[2]: [atlas/src/atlas/CMakeFiles/atlas.dir/interpolation/method/structured/Linear2D.cc.o] Error 2 /home/d00/darth/opt/bb-stack/cray_intel-v24/include/boost/container/vector.hpp(1125): internal error: bad pointer         boost::container::destroy_alloc_n         ^

 

compilation aborted for /home/d03/frwd/cylc-run/UpdateAtlas/share/mo-bundle/atlas/src/atlas/mesh/actions/BuildConvexHull3D.cc (code 4) gmake[2]: *** [atlas/src/atlas/CMakeFiles/atlas.dir/mesh/actions/BuildConvexHull3D.cc.o] Error 4  

which can be fixed by adjust some atlas cmake options, and

 

/home/d03/frwd/cylc-run/UpdateAtlas/share/mo-bundle/atlas/src/atlas/interpolation/method/structured/StructuredInterpolation2D.tcc(521): error: identifier "west" is undefined       auto [west, east] = compute_src_west_east(source());             ^           detected during instantiation of "void atlas::interpolation::method::StructuredInterpolation2D::do_execute(const atlas::FieldSet &, atlas::FieldSet &, atlas::interpolation::Method::Metadata &) const [with Kernel=atlas::interpolation::method::QuasiCubicHorizontalKernel]" at line 453

 

which as far as I can tell requires a code change to fix.

wdeconinck commented 1 year ago

Hi @DJDavies2 , ECMWF has started releasing its software with C++17, though not many packages perhaps take advantage of this yet. For Atlas at least, C++17 is now a requirement and perhaps the intel 18 compiler (which is now 5 years old) is not fully supporting it yet. I know intel 21 compiler does support it.

True, we can work around these few problems reported, and implement it without C++17, but I am already aware of other developments that use C++17 features that are to make their way as pull requests as well.

DJDavies2 commented 1 year ago

We aren't using this compiler any more, so from my point of view this isn't an issue now. Closing on that basis.