## Description
I propose to raise our toolchain requirements for the MXNet 2 development 
branch to require at minimum gcc7 or clang6 on Unix systems and MSVC 2019 on 
Windows system. All 3 have [reasonable complete C++17 
support](https://en.cppreference.com/w/cpp/compiler_support#cpp17) and MSVC 
2019 fully supports, so that we can adopt `C++17` as required language 
standard. gcc7 and clang6 are available on Ubuntu 18.04 LTS release.

The benefits of adopting a more recent C++ standard should be obvious, giving 
us access to new features and abstractions that the C++ committee has worked on 
over the course of 6 years. The benefits of adopting a more recent toolchain 
should also be obvious, as newer compilers will come with more optimizations as 
older ones.

There are no downsides for MXNet's users, as we can continue to build binary 
releases of MXNet on CentOS 6 that should work on any major Linux distribution 
released after 2004. This is possible based on the great work by RedHat to 
bring new C++ toolchains to old platforms [1]. 

With respect to Windows: MSVC 2019 is the first MSVC that uses an 64bit 
toolchain by default. You may have noticed that our Windows CI was recently 
blocked due to the use of a 32bit toolchain and updating it to MSVC 2019 was 
chosen as remedy (attempts to use the 64bit version of the 2017 toolchain 
failed). It also appears that MSVC 2019 16.5 is the first release to make 
proper use of advanced instruction sets, such as AVX2 [2].

## References
1: https://www.softwarecollections.org/en/scls/rhscl/devtoolset-8/
2: 
https://devblogs.microsoft.com/cppblog/avx2-floating-point-improvements-in-visual-studio-2019-version-16-5/

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/apache/incubator-mxnet/issues/17968

Reply via email to