[Clang][OpenMP] Require CUDA 9.2+ for OpenMP offloading on NVPTX target
authorShilei Tian <tianshilei1992@gmail.com>
Mon, 22 Feb 2021 15:59:55 +0000 (10:59 -0500)
committerShilei Tian <tianshilei1992@gmail.com>
Mon, 22 Feb 2021 16:00:33 +0000 (11:00 -0500)
commit76151acf893ac7bdaf460fdfe8a8494cf477157a
treef01616908d90a5cbfc42671b66577ef846379436
parentdaeb70be0bd42fbed66c03b4c5f9940ffba88ce9
[Clang][OpenMP] Require CUDA 9.2+ for OpenMP offloading on NVPTX target

In current implementation of `deviceRTLs`, we're using some functions
that are CUDA version dependent (if CUDA_VERSION < 9, it is one; otheriwse, it
is another one). As a result, we have to compile one bitcode library for each
CUDA version supported. A worse problem is forward compatibility. If a new CUDA
version is released, we have to update CMake file as well.

CUDA 9.2 has been released for three years. Instead of using various weird tricks
to make `deviceRTLs` work with different CUDA versions and still have forward
compatibility, we can simply drop support for CUDA 9.1 or lower version. It has at
least two benifits:
- We don't need to generate bitcode libraries for each CUDA version;
- Clang driver doesn't need to search for the bitcode lib based on CUDA version.

We can claim that starting from LLVM 12, OpenMP offloading on NVPTX target requires
CUDA 9.2+.

Reviewed By: jdoerfert, JonChesterfield

Differential Revision: https://reviews.llvm.org/D97003
clang/include/clang/Basic/DiagnosticDriverKinds.td
clang/lib/Driver/ToolChains/Cuda.cpp
clang/test/Driver/Inputs/libomptarget/libomptarget-nvptx-cuda_102-sm_35.bc [moved from clang/test/Driver/Inputs/libomptarget/libomptarget-nvptx-cuda_80-sm_35.bc with 100% similarity]
clang/test/Driver/openmp-offload-gpu.c