clang 23.0.0git
Cuda.h
Go to the documentation of this file.
1//===--- Cuda.h - Utilities for compiling CUDA code ------------*- C++ -*-===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLVM_CLANG_BASIC_CUDA_H
10#define LLVM_CLANG_BASIC_CUDA_H
11
13
14namespace llvm {
15class StringRef;
16class Twine;
17class VersionTuple;
18} // namespace llvm
19
20namespace clang {
21
59const char *CudaVersionToString(CudaVersion V);
60// Input is "Major.Minor"
61CudaVersion CudaStringToVersion(const llvm::Twine &S);
62
70
71/// Get the earliest CudaVersion that supports the given OffloadArch.
72CudaVersion MinVersionForOffloadArch(OffloadArch A);
73
74/// Get the latest CudaVersion that supports the given OffloadArch.
75CudaVersion MaxVersionForOffloadArch(OffloadArch A);
76
77// Various SDK-dependent features that affect CUDA compilation
78enum class CudaFeature {
79 // CUDA-9.2+ uses a new API for launching kernels.
81 // CUDA-10.1+ needs explicit end of GPU binary registration.
83};
84
85CudaVersion ToCudaVersion(llvm::VersionTuple);
86bool CudaFeatureEnabled(llvm::VersionTuple, CudaFeature);
87bool CudaFeatureEnabled(CudaVersion, CudaFeature);
88
89/// Get the numeric ID (e.g. 700) of a CUDA architecture.
90unsigned CudaArchToID(OffloadArch Arch);
91
92/// Check if the CUDA architecture is an accelerated variant (e.g. sm_90a).
93bool IsNVIDIAAcceleratedOffloadArch(OffloadArch Arch);
94
95/// Check if the CUDA architecture is a family-specific variant (e.g. sm_100f).
97
98} // namespace clang
99
100#endif
#define V(N, I)
The JSON file list parser is used to communicate input to InstallAPI.
CudaVersion MaxVersionForOffloadArch(OffloadArch A)
Get the latest CudaVersion that supports the given OffloadArch.
Definition Cuda.cpp:146
unsigned CudaArchToID(OffloadArch Arch)
Get the numeric ID (e.g. 700) of a CUDA architecture.
Definition Cuda.cpp:186
CUDAFunctionTarget
Definition Cuda.h:63
CudaVersion ToCudaVersion(llvm::VersionTuple)
Definition Cuda.cpp:72
CudaVersion CudaStringToVersion(const llvm::Twine &S)
Definition Cuda.cpp:64
bool CudaFeatureEnabled(llvm::VersionTuple, CudaFeature)
Definition Cuda.cpp:172
const char * CudaVersionToString(CudaVersion V)
Definition Cuda.cpp:56
bool IsNVIDIAAcceleratedOffloadArch(OffloadArch Arch)
Check if the CUDA architecture is an accelerated variant (e.g. sm_90a).
Definition Cuda.cpp:261
CudaVersion
Definition Cuda.h:22
@ PARTIALLY_SUPPORTED
Definition Cuda.h:55
CudaFeature
Definition Cuda.h:78
@ CUDA_USES_NEW_LAUNCH
Definition Cuda.h:80
@ CUDA_USES_FATBIN_REGISTER_END
Definition Cuda.h:82
CudaVersion MinVersionForOffloadArch(OffloadArch A)
Get the earliest CudaVersion that supports the given OffloadArch.
Definition Cuda.cpp:79
bool IsNVIDIAFamilySpecificOffloadArch(OffloadArch Arch)
Check if the CUDA architecture is a family-specific variant (e.g. sm_100f).
Definition Cuda.cpp:276
Diagnostic wrappers for TextAPI types for error reporting.
Definition Dominators.h:30