You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@mxnet.apache.org by Leonard Lausen <le...@lausen.nl> on 2019/08/27 09:52:21 UTC

Update GCC 4.8 dependency?

Hi,

"Currently, we only support gcc-4.8 build." [1]

Do we ever want to change this? gcc-4.8 is now available since more than
6 years and a lot has happened during that time. Also platforms have
upgraded their default compiler versions, and gcc-7 is now commonly
available (eg. Ubuntu 18.04 LTS, Amazon Linux 2). With gcc-7 we could
for example rely on C++17.

Wikipedia says:
- GCC since version 7 has complete support for C++17.
- Clang 5 and later implement all the features of C++17.
- Visual Studio 2017 15.7 (MSVC 19.14) supports almost all of C++17.

As Mu mentioned "Conservatism is not an option" if we want to bring
MXNet forward. The benefits of 6 years of work on compilers as well as
C++ ISO committee work may help us with that.

Should we adapt a newer compiler toolchain and perhaps C++17 standard?

Best regards
Leonard

[1]: https://github.com/apache/incubator-mxnet/blob/681cfc4/tools/dependencies/README.md

Re: Update GCC 4.8 dependency?

Posted by Sheng Zha <zh...@apache.org>.
Just for the sake of completeness, another factor is the python platform tag manylinux2010 compliance [1]. Since it required GLIBC2.12 and GCC4.3, unfortunately even the existing minimum version standard wouldn't allow us to be compliant.

[1] https://www.python.org/dev/peps/pep-0571/

On 2019/08/27 15:17:43, "Sunderland, Kellen" <ke...@amazon.de.INVALID> wrote: 
> We could think about moving to a newer version and updating the standard.  I'm using gcc 4.9 with my work builds, but more modern compilers everywhere else (and is be willing to update the work compiler).
> 
> One of the cons is that it makes our code less portable. When we update the minimum required compiler (in Linux) then we use a toolchains with a new libc version, meaning MXNet could not be used on older platforms without using docker or virtualization.  In our case updating to a cpp17 compiler might mean dropping centos5 or Ubuntu 14.04 support.
> 
> If you look at CUDA releases as an example the continually releases binaries compiled against older toolchains to support libc on most platforms.
> 
> What are the features you'd like to see in C++17?  I'd recommend we call out interesting features and then see what compiler support we would need to use the feature.  It could be the case that the feature is supported in a fairly old compiler version.
> 
> If we want to immediately modernize the codebase, I've noticed that their are actually a few C++14/11 features we could be using but aren't.  (Clang-tidy lists a number of them in each build).  We could start with those.
> 
> On Aug 27, 2019 2:53 AM, Leonard Lausen <le...@lausen.nl> wrote:
> Hi,
> 
> "Currently, we only support gcc-4.8 build." [1]
> 
> Do we ever want to change this? gcc-4.8 is now available since more than
> 6 years and a lot has happened during that time. Also platforms have
> upgraded their default compiler versions, and gcc-7 is now commonly
> available (eg. Ubuntu 18.04 LTS, Amazon Linux 2). With gcc-7 we could
> for example rely on C++17.
> 
> Wikipedia says:
> - GCC since version 7 has complete support for C++17.
> - Clang 5 and later implement all the features of C++17.
> - Visual Studio 2017 15.7 (MSVC 19.14) supports almost all of C++17.
> 
> As Mu mentioned "Conservatism is not an option" if we want to bring
> MXNet forward. The benefits of 6 years of work on compilers as well as
> C++ ISO committee work may help us with that.
> 
> Should we adapt a newer compiler toolchain and perhaps C++17 standard?
> 
> Best regards
> Leonard
> 
> [1]: https://github.com/apache/incubator-mxnet/blob/681cfc4/tools/dependencies/README.md
> 
> 
> On Aug 27, 2019 2:53 AM, Leonard Lausen <le...@lausen.nl> wrote:
> Hi,
> 
> "Currently, we only support gcc-4.8 build." [1]
> 
> Do we ever want to change this? gcc-4.8 is now available since more than
> 6 years and a lot has happened during that time. Also platforms have
> upgraded their default compiler versions, and gcc-7 is now commonly
> available (eg. Ubuntu 18.04 LTS, Amazon Linux 2). With gcc-7 we could
> for example rely on C++17.
> 
> Wikipedia says:
> - GCC since version 7 has complete support for C++17.
> - Clang 5 and later implement all the features of C++17.
> - Visual Studio 2017 15.7 (MSVC 19.14) supports almost all of C++17.
> 
> As Mu mentioned "Conservatism is not an option" if we want to bring
> MXNet forward. The benefits of 6 years of work on compilers as well as
> C++ ISO committee work may help us with that.
> 
> Should we adapt a newer compiler toolchain and perhaps C++17 standard?
> 
> Best regards
> Leonard
> 
> [1]: https://github.com/apache/incubator-mxnet/blob/681cfc4/tools/dependencies/README.md
> 

Re: Update GCC 4.8 dependency?

Posted by "Sunderland, Kellen" <ke...@amazon.de.INVALID>.
We could think about moving to a newer version and updating the standard.  I'm using gcc 4.9 with my work builds, but more modern compilers everywhere else (and is be willing to update the work compiler).

One of the cons is that it makes our code less portable. When we update the minimum required compiler (in Linux) then we use a toolchains with a new libc version, meaning MXNet could not be used on older platforms without using docker or virtualization.  In our case updating to a cpp17 compiler might mean dropping centos5 or Ubuntu 14.04 support.

If you look at CUDA releases as an example the continually releases binaries compiled against older toolchains to support libc on most platforms.

What are the features you'd like to see in C++17?  I'd recommend we call out interesting features and then see what compiler support we would need to use the feature.  It could be the case that the feature is supported in a fairly old compiler version.

If we want to immediately modernize the codebase, I've noticed that their are actually a few C++14/11 features we could be using but aren't.  (Clang-tidy lists a number of them in each build).  We could start with those.

On Aug 27, 2019 2:53 AM, Leonard Lausen <le...@lausen.nl> wrote:
Hi,

"Currently, we only support gcc-4.8 build." [1]

Do we ever want to change this? gcc-4.8 is now available since more than
6 years and a lot has happened during that time. Also platforms have
upgraded their default compiler versions, and gcc-7 is now commonly
available (eg. Ubuntu 18.04 LTS, Amazon Linux 2). With gcc-7 we could
for example rely on C++17.

Wikipedia says:
- GCC since version 7 has complete support for C++17.
- Clang 5 and later implement all the features of C++17.
- Visual Studio 2017 15.7 (MSVC 19.14) supports almost all of C++17.

As Mu mentioned "Conservatism is not an option" if we want to bring
MXNet forward. The benefits of 6 years of work on compilers as well as
C++ ISO committee work may help us with that.

Should we adapt a newer compiler toolchain and perhaps C++17 standard?

Best regards
Leonard

[1]: https://github.com/apache/incubator-mxnet/blob/681cfc4/tools/dependencies/README.md


On Aug 27, 2019 2:53 AM, Leonard Lausen <le...@lausen.nl> wrote:
Hi,

"Currently, we only support gcc-4.8 build." [1]

Do we ever want to change this? gcc-4.8 is now available since more than
6 years and a lot has happened during that time. Also platforms have
upgraded their default compiler versions, and gcc-7 is now commonly
available (eg. Ubuntu 18.04 LTS, Amazon Linux 2). With gcc-7 we could
for example rely on C++17.

Wikipedia says:
- GCC since version 7 has complete support for C++17.
- Clang 5 and later implement all the features of C++17.
- Visual Studio 2017 15.7 (MSVC 19.14) supports almost all of C++17.

As Mu mentioned "Conservatism is not an option" if we want to bring
MXNet forward. The benefits of 6 years of work on compilers as well as
C++ ISO committee work may help us with that.

Should we adapt a newer compiler toolchain and perhaps C++17 standard?

Best regards
Leonard

[1]: https://github.com/apache/incubator-mxnet/blob/681cfc4/tools/dependencies/README.md