Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Considerations for C++17-only release #1011

Closed
BenjaminW3 opened this issue May 24, 2020 · 6 comments · Fixed by #1466
Closed

Considerations for C++17-only release #1011

BenjaminW3 opened this issue May 24, 2020 · 6 comments · Fixed by #1466

Comments

@BenjaminW3
Copy link
Member

CUDA 11 will add support for C++17. This would allow us to require C++17 as minimum version for alpaka which would allow us to simplify some internals.

As an intermediate step we should create a release that still supports c++14 but already adds support for CUDA 11 and c++17.

In a follow up release we could drop support for the following dependencies because they miss full c++17 support:

  • CUDA 9.0, 9.1, 9.2, 10.0, 10.1, 10.2
  • clang 4
  • gcc 5 and 6
@psychocoderHPC
Copy link
Member

Note: we need to stay with CUDA 10.1 requirements as long as the most used HPC systems using CUDA 10.1.
A stable release with C++14 will help but also increase the required work because we need to create back-ports and work on multible alpaka versions at the same time.

@bernhardmgruber
Copy link
Member

bernhardmgruber commented May 25, 2020

As discussed in a VC: I think compiler/toolchain updates are governed by what kinds of (HPC-) systems we want to support. So if all of these systems have upgraded to a new compiler/toolchain, we can upgrade as well. @sbastrakov pointed me to a list of systems where picongpu has been run, so we have a (partially outdated) sample of these supported systems.

I think we should have a table of supported systems and their compiler/toolchain versions and then regularly (like every month) check if those have changed. This will allow us to know when the time for an update has come.

@ax3l
Copy link
Member

ax3l commented May 29, 2020

Fantastic ideas, maybe we could do a simple wiki page in the Alpaka repo?

@bernhardmgruber
Copy link
Member

We mentioned this topic again in the last alpaka VC and decided to put together a list of arguments for and against a transition to C++17 after the next release (alpaka 0.8 will ship in C++14, then upgrade).

Arguments for are primarily big improvements in programmer convenience. There are especially new metaprogramming features (e.g. if constexpr, fold expression, new type traits) that would help.
Arguments against are higher requirements on compilers and tools. This especially concerns CUDA/nvcc, where we would need to drop support for CUDA 10 with the next but one release (Spring 2022).

@bernhardmgruber bernhardmgruber linked a pull request Nov 15, 2021 that will close this issue
@bernhardmgruber
Copy link
Member

The upgrade to C++17 has further implications. Since we need to require at least CUDA 11.0 to support C++17, it seems we can no longer support clang as CUDA compiler below clang-12, as clang-11 and below fail to detect a CUDA 11.0 SDK. See #1466 (comment). Or at least I could not find a way yet to make clang-11 and below work with CUDA SDK 11.0.

@psychocoderHPC
Copy link
Member

I can confirm that CUDA 11.0 is not working with clang++-9 and clang++-10.
I can use PIConGPU with clang++-11 together with CUDA 11.0.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants