cuda_runtime.h 2.51 KB
Newer Older
Tim Moon's avatar
Tim Moon committed
1
/*************************************************************************
2
 * Copyright (c) 2022-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
Tim Moon's avatar
Tim Moon committed
3
4
5
6
7
8
9
10
 *
 * See LICENSE for license information.
 ************************************************************************/

#ifndef TRANSFORMER_ENGINE_COMMON_UTIL_CUDA_RUNTIME_H_
#define TRANSFORMER_ENGINE_COMMON_UTIL_CUDA_RUNTIME_H_

#include <cuda_runtime_api.h>
11

12
#include <string>
Tim Moon's avatar
Tim Moon committed
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

namespace transformer_engine {

namespace cuda {

/* \brief Number of accessible devices */
int num_devices();

/* \brief Which device is currently being used */
int current_device();

/* \brief Compute capability of device
 *
 * \param[in] device_id CUDA device (default is current device)
 *
 * \return Compute capability as int. Last digit is minor revision,
 *         remaining digits are major revision.
 */
int sm_arch(int device_id = -1);

yuguo's avatar
yuguo committed
33
34
35
36
37
38
39
40
41
42
#ifdef __HIP_PLATFORM_AMD__
/* \brief Compute capability of device
 *
 * \param[in] device_id HIP device (default is current device)
 *
 * \return GPU arch name and compute capabilities string.
 */
const std::string &sm_arch_name(int device_id = -1);
#endif

Tim Moon's avatar
Tim Moon committed
43
44
45
46
47
48
49
50
/* \brief Number of multiprocessors on a device
 *
 * \param[in] device_id CUDA device (default is current device)
 *
 * \return Number of multiprocessors
 */
int sm_count(int device_id = -1);

51
52
53
54
55
56
57
58
59
60
/* \brief Minimum and maximum stream priorities supported on device
 *
 * \param[in] device_id CUDA device (default is current device)
 *
 * \param[out] low_priority Lowest priority value on device.
 *
 * \param[out] high_priority Highest priority value on device.
 */
void stream_priority_range(int *low_priority, int *high_priority, int device_id = -1);

61
62
63
64
65
66
67
68
/* \brief CUDA Multicast support status for device
 *
 * \param[in] device_id CUDA device (default is current device)
 *
 * \return CUDA multicast support flag
 */
bool supports_multicast(int device_id = -1);

yuguo's avatar
yuguo committed
69
#ifndef __HIP_PLATFORM_AMD__
Tim Moon's avatar
Tim Moon committed
70
71
72
73
74
75
76
77
78
79
/* \brief Path to CUDA Toolkit headers
 *
 * The path can be configured by setting NVTE_CUDA_INCLUDE_DIR in the
 * environment. Otherwise searches in common install paths.
 *
 * \param[in] required Whether to throw exception if not found
 *
 * \return Path to include directory, or an empty string if not found
 */
const std::string &include_directory(bool required = false);
yuguo's avatar
yuguo committed
80
#endif
Tim Moon's avatar
Tim Moon committed
81

82
83
84
85
86
87
/* \brief CUDA Runtime version number at run-time
 *
 * Versions may differ between compile-time and run-time.
 */
int cudart_version();

Tim Moon's avatar
Tim Moon committed
88
89
90
91
92
}  // namespace cuda

}  // namespace transformer_engine

#endif  // TRANSFORMER_ENGINE_COMMON_UTIL_CUDA_RUNTIME_H_