1{
2 /**
3 Mapping of CUDA versions to NVCC compatibilities
4
5 Taken from
6 https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#host-compiler-support-policy
7
8 NVCC performs a version check on the host compiler's major version and so newer minor versions
9 of the compilers listed below will be supported, but major versions falling outside the range
10 will not be supported.
11
12 NOTE: These constraints don't apply to Jetson, which uses something else.
13
14 NOTE: NVIDIA can and will add support for newer compilers even during patch releases.
15 E.g.: CUDA 12.2.1 maxxed out with support for Clang 15.0; 12.2.2 added support for Clang 16.0.
16
17 NOTE: Because all platforms NVIDIA supports use GCC and Clang, we omit the architectures here.
18
19 # Type
20
21 ```
22 nvccCompatibilities ::
23 AttrSet
24 String
25 { clang :: { maxMajorVersion :: String, minMajorVersion :: String }
26 , gcc :: { maxMajorVersion :: String, minMajorVersion :: String }
27 }
28 ```
29 */
30 nvccCompatibilities = {
31 # Our baseline
32 # https://docs.nvidia.com/cuda/archive/11.0/cuda-toolkit-release-notes/index.html#cuda-compiler-new-features
33 "11.0" = {
34 clang = {
35 maxMajorVersion = "9";
36 minMajorVersion = "7";
37 };
38 gcc = {
39 maxMajorVersion = "9";
40 minMajorVersion = "6";
41 };
42 };
43
44 # Added support for Clang 10 and GCC 10
45 # https://docs.nvidia.com/cuda/archive/11.1.1/cuda-toolkit-release-notes/index.html#cuda-compiler-new-features
46 "11.1" = {
47 clang = {
48 maxMajorVersion = "10";
49 minMajorVersion = "7";
50 };
51 gcc = {
52 maxMajorVersion = "10";
53 minMajorVersion = "6";
54 };
55 };
56
57 # Added support for Clang 11
58 # https://docs.nvidia.com/cuda/archive/11.2.2/cuda-installation-guide-linux/index.html#system-requirements
59 "11.2" = {
60 clang = {
61 maxMajorVersion = "11";
62 minMajorVersion = "7";
63 };
64 gcc = {
65 maxMajorVersion = "10";
66 minMajorVersion = "6";
67 };
68 };
69
70 # No changes from 11.2 to 11.3
71 "11.3" = {
72 clang = {
73 maxMajorVersion = "11";
74 minMajorVersion = "7";
75 };
76 gcc = {
77 maxMajorVersion = "10";
78 minMajorVersion = "6";
79 };
80 };
81
82 # Added support for Clang 12 and GCC 11
83 # https://docs.nvidia.com/cuda/archive/11.4.4/cuda-toolkit-release-notes/index.html#cuda-general-new-features
84 # NOTE: There is a bug in the version of GLIBC that GCC 11 uses which causes it to fail to compile some CUDA
85 # code. As such, we skip it for this release, and do the bump in 11.6 (skipping 11.5).
86 # https://forums.developer.nvidia.com/t/cuda-11-5-samples-throw-multiple-error-attribute-malloc-does-not-take-arguments/192750/15
87 "11.4" = {
88 clang = {
89 maxMajorVersion = "12";
90 minMajorVersion = "7";
91 };
92 gcc = {
93 maxMajorVersion = "10";
94 minMajorVersion = "6";
95 };
96 };
97
98 # No changes from 11.4 to 11.5
99 "11.5" = {
100 clang = {
101 maxMajorVersion = "12";
102 minMajorVersion = "7";
103 };
104 gcc = {
105 maxMajorVersion = "10";
106 minMajorVersion = "6";
107 };
108 };
109
110 # No changes from 11.5 to 11.6
111 # However, as mentioned above, we add GCC 11 this release.
112 "11.6" = {
113 clang = {
114 maxMajorVersion = "12";
115 minMajorVersion = "7";
116 };
117 gcc = {
118 maxMajorVersion = "11";
119 minMajorVersion = "6";
120 };
121 };
122
123 # Added support for Clang 13
124 # https://docs.nvidia.com/cuda/archive/11.7.1/cuda-toolkit-release-notes/index.html#cuda-compiler-new-features
125 "11.7" = {
126 clang = {
127 maxMajorVersion = "13";
128 minMajorVersion = "7";
129 };
130 gcc = {
131 maxMajorVersion = "11";
132 minMajorVersion = "6";
133 };
134 };
135
136 # Added support for Clang 14
137 # https://docs.nvidia.com/cuda/archive/11.8.0/cuda-installation-guide-linux/index.html#system-requirements
138 "11.8" = {
139 clang = {
140 maxMajorVersion = "14";
141 minMajorVersion = "7";
142 };
143 gcc = {
144 maxMajorVersion = "11";
145 minMajorVersion = "6";
146 };
147 };
148
149 # Added support for GCC 12
150 # https://docs.nvidia.com/cuda/archive/12.0.1/cuda-installation-guide-linux/index.html#system-requirements
151 "12.0" = {
152 clang = {
153 maxMajorVersion = "14";
154 minMajorVersion = "7";
155 };
156 gcc = {
157 maxMajorVersion = "12";
158 minMajorVersion = "6";
159 };
160 };
161
162 # Added support for Clang 15
163 # https://docs.nvidia.com/cuda/archive/12.1.1/cuda-toolkit-release-notes/index.html#cuda-compilers-new-features
164 "12.1" = {
165 clang = {
166 maxMajorVersion = "15";
167 minMajorVersion = "7";
168 };
169 gcc = {
170 maxMajorVersion = "12";
171 minMajorVersion = "6";
172 };
173 };
174
175 # Added support for Clang 16
176 # https://docs.nvidia.com/cuda/archive/12.2.2/cuda-installation-guide-linux/index.html#host-compiler-support-policy
177 "12.2" = {
178 clang = {
179 maxMajorVersion = "16";
180 minMajorVersion = "7";
181 };
182 gcc = {
183 maxMajorVersion = "12";
184 minMajorVersion = "6";
185 };
186 };
187
188 # No changes from 12.2 to 12.3
189 # https://docs.nvidia.com/cuda/archive/12.3.2/cuda-installation-guide-linux/index.html#host-compiler-support-policy
190 "12.3" = {
191 clang = {
192 maxMajorVersion = "16";
193 minMajorVersion = "7";
194 };
195 gcc = {
196 maxMajorVersion = "12";
197 minMajorVersion = "6";
198 };
199 };
200
201 # Maximum Clang version is 17
202 # Minimum GCC version is still 6, but all versions prior to GCC 7.3 are deprecated.
203 # Maximum GCC version is 13.2
204 # https://docs.nvidia.com/cuda/archive/12.4.1/cuda-installation-guide-linux/index.html#host-compiler-support-policy
205 "12.4" = {
206 clang = {
207 maxMajorVersion = "17";
208 minMajorVersion = "7";
209 };
210 gcc = {
211 maxMajorVersion = "13";
212 minMajorVersion = "6";
213 };
214 };
215
216 # No changes from 12.4 to 12.5
217 # https://docs.nvidia.com/cuda/archive/12.5.1/cuda-installation-guide-linux/index.html#host-compiler-support-policy
218 "12.5" = {
219 clang = {
220 maxMajorVersion = "17";
221 minMajorVersion = "7";
222 };
223 gcc = {
224 maxMajorVersion = "13";
225 minMajorVersion = "6";
226 };
227 };
228
229 # Maximum Clang version is 18
230 # https://docs.nvidia.com/cuda/archive/12.6.0/cuda-installation-guide-linux/index.html#host-compiler-support-policy
231 "12.6" = {
232 clang = {
233 maxMajorVersion = "18";
234 minMajorVersion = "7";
235 };
236 gcc = {
237 maxMajorVersion = "13";
238 minMajorVersion = "6";
239 };
240 };
241
242 # Maximum Clang version is 19, maximum GCC version is 14
243 # https://docs.nvidia.com/cuda/archive/12.8.1/cuda-installation-guide-linux/index.html#host-compiler-support-policy
244 "12.8" = {
245 clang = {
246 maxMajorVersion = "19";
247 minMajorVersion = "7";
248 };
249 gcc = {
250 maxMajorVersion = "14";
251 minMajorVersion = "6";
252 };
253 };
254
255 # No changes from 12.8 to 12.9
256 # https://docs.nvidia.com/cuda/cuda-installation-guide-linux/index.html#host-compiler-support-policy
257 "12.9" = {
258 clang = {
259 maxMajorVersion = "19";
260 minMajorVersion = "7";
261 };
262 gcc = {
263 maxMajorVersion = "14";
264 minMajorVersion = "6";
265 };
266 };
267 };
268}