clang 24.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
61const char *CudaVersionToString(CudaVersion V);
62// Input is "Major.Minor"
63CudaVersion CudaStringToVersion(const llvm::Twine &S);
64
72
73/// Get the earliest CudaVersion that supports the given OffloadArch.
74CudaVersion MinVersionForOffloadArch(OffloadArch A);
75
76/// Get the latest CudaVersion that supports the given OffloadArch.
77CudaVersion MaxVersionForOffloadArch(OffloadArch A);
78
79// Various SDK-dependent features that affect CUDA compilation
80enum class CudaFeature {
81 // CUDA-9.2+ uses a new API for launching kernels.
83 // CUDA-10.1+ needs explicit end of GPU binary registration.
85};
86
87CudaVersion ToCudaVersion(llvm::VersionTuple);
88bool CudaFeatureEnabled(llvm::VersionTuple, CudaFeature);
89bool CudaFeatureEnabled(CudaVersion, CudaFeature);
90
91/// Get the numeric ID (e.g. 700) of a CUDA architecture.
92unsigned CudaArchToID(OffloadArch Arch);
93
94/// Check if the CUDA architecture is an accelerated variant (e.g. sm_90a).
95bool IsNVIDIAAcceleratedOffloadArch(OffloadArch Arch);
96
97/// Check if the CUDA architecture is a family-specific variant (e.g. sm_100f).
99
100} // namespace clang
101
102#endif
#define V(N, I)
Top level wrappers for InstallAPI frontend operations.
CudaVersion MaxVersionForOffloadArch(OffloadArch A)
Get the latest CudaVersion that supports the given OffloadArch.
Definition Cuda.cpp:101
unsigned CudaArchToID(OffloadArch Arch)
Get the numeric ID (e.g. 700) of a CUDA architecture.
Definition Cuda.cpp:133
CUDAFunctionTarget
Definition Cuda.h:65
CudaVersion ToCudaVersion(llvm::VersionTuple)
Definition Cuda.cpp:76
CudaVersion CudaStringToVersion(const llvm::Twine &S)
Definition Cuda.cpp:68
bool CudaFeatureEnabled(llvm::VersionTuple, CudaFeature)
Definition Cuda.cpp:119
const char * CudaVersionToString(CudaVersion V)
Definition Cuda.cpp:60
bool IsNVIDIAAcceleratedOffloadArch(OffloadArch Arch)
Check if the CUDA architecture is an accelerated variant (e.g. sm_90a).
Definition Cuda.cpp:138
CudaVersion
Definition Cuda.h:22
@ PARTIALLY_SUPPORTED
Definition Cuda.h:57
CudaFeature
Definition Cuda.h:80
@ CUDA_USES_NEW_LAUNCH
Definition Cuda.h:82
@ CUDA_USES_FATBIN_REGISTER_END
Definition Cuda.h:84
CudaVersion MinVersionForOffloadArch(OffloadArch A)
Get the earliest CudaVersion that supports the given OffloadArch.
Definition Cuda.cpp:83
bool IsNVIDIAFamilySpecificOffloadArch(OffloadArch Arch)
Check if the CUDA architecture is a family-specific variant (e.g. sm_100f).
Definition Cuda.cpp:142
Diagnostic wrappers for TextAPI types for error reporting.
Definition Dominators.h:30