Coverage for cuda / core / _program.pyx: 85.24%
637 statements
« prev ^ index » next coverage.py v7.13.5, created at 2026-04-29 01:27 +0000
« prev ^ index » next coverage.py v7.13.5, created at 2026-04-29 01:27 +0000
1# SPDX-FileCopyrightText: Copyright (c) 2024-2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2#
3# SPDX-License-Identifier: Apache-2.0
4"""Compilation machinery for CUDA programs.
6This module provides :class:`Program` for compiling source code into
7:class:`~cuda.core.ObjectCode`, with :class:`ProgramOptions` for configuration.
8"""
10from __future__ import annotations
12from dataclasses import dataclass
13import threading
14from warnings import warn
16from cuda.bindings import nvrtc
17from cuda.pathfinder._optional_cuda_import import _optional_cuda_import
19from libcpp.vector cimport vector
21from ._resource_handles cimport (
22 as_cu,
23 as_py,
24 create_nvrtc_program_handle,
25 create_nvvm_program_handle,
26)
27from cuda.bindings cimport cynvrtc, cynvvm
28from cuda.core._utils.cuda_utils cimport HANDLE_RETURN_NVRTC, HANDLE_RETURN_NVVM
29from cuda.core._device import Device
30from cuda.core._linker import Linker, LinkerHandleT, LinkerOptions
31from cuda.core._module import ObjectCode
32from cuda.core._utils.clear_error_support import assert_type
33from cuda.core._utils.cuda_utils import (
34 CUDAError,
35 _handle_boolean_option,
36 check_or_create_options,
37 handle_return,
38 is_nested_sequence,
39 is_sequence,
40)
41from cuda.core._utils.version import binding_version, driver_version
43__all__ = ["Program", "ProgramOptions"]
45ProgramHandleT = nvrtc.nvrtcProgram | int | LinkerHandleT
46"""Type alias for program handle types across different backends.
48The ``int`` type covers NVVM handles, which don't have a wrapper class.
49"""
52# =============================================================================
53# Principal Class
54# =============================================================================
57cdef class Program:
58 """Represent a compilation machinery to process programs into
59 :class:`~cuda.core.ObjectCode`.
61 This object provides a unified interface to multiple underlying
62 compiler libraries. Compilation support is enabled for a wide
63 range of code types and compilation types.
65 Parameters
66 ----------
67 code : str | bytes | bytearray
68 The source code to compile. For C++ and PTX, must be a string.
69 For NVVM IR, can be str, bytes, or bytearray.
70 code_type : str
71 The type of source code. Must be one of ``"c++"``, ``"ptx"``, or ``"nvvm"``.
72 options : :class:`ProgramOptions`, optional
73 Options to customize the compilation process.
74 """
76 def __init__(self, code: str | bytes | bytearray, code_type: str, options: ProgramOptions | None = None):
77 Program_init(self, code, code_type, options) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLgDg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOg9e!ed .dQgc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ngrg4ecghgdgigegjgVe5efgkgWe6egglga b RgMgIgFg7eKgTgSgJgPgBgsgtgugvgwgxgygzgAg8e
79 def close(self):
80 """Destroy this program."""
81 if self._linker: 29e!ed .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ngrgcghgdgigegjgVe5efgkgWe6egglga b IgBgsgtgugvgwgxgygzgAg
82 self._linker.close() 2BgsgtgugvgwgxgygzgAg
83 # Reset handles - the C++ shared_ptr destructor handles cleanup
84 self._h_nvrtc.reset() 29e!ed .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ngrgcghgdgigegjgVe5efgkgWe6egglga b IgBgsgtgugvgwgxgygzgAg
85 self._h_nvvm.reset() 29e!ed .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ngrgcghgdgigegjgVe5efgkgWe6egglga b IgBgsgtgugvgwgxgygzgAg
87 def compile(
88 self, target_type: str, name_expressions: tuple | list = (), logs = None
89 ) -> ObjectCode:
90 """Compile the program to the specified target type.
92 Parameters
93 ----------
94 target_type : str
95 The compilation target. Must be one of ``"ptx"``, ``"cubin"``, or ``"ltoir"``.
96 name_expressions : tuple | list, optional
97 Sequence of name expressions to make accessible in the compiled code.
98 Used for template instantiation and similar cases.
99 logs : object, optional
100 Object with a ``write`` method to receive compilation logs.
102 Returns
103 -------
104 :class:`~cuda.core.ObjectCode`
105 The compiled object code.
106 """
107 return Program_compile(self, target_type, name_expressions, logs) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbg9e!ed .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ngrg4ecghgdgigegjgVe5efgkgWe6egglga b Fg7esgtgugvgwgxgygzgAg8e
109 @property
110 def pch_status(self) -> str | None:
111 """PCH creation outcome from the most recent :meth:`compile` call.
113 Possible values:
115 * ``"created"`` — PCH file was written successfully.
116 * ``"not_attempted"`` — PCH creation was not attempted (e.g. the
117 compiler decided not to, or automatic PCH processing skipped it).
118 * ``"failed"`` — an error prevented PCH creation.
119 * ``None`` — PCH was not requested, the program has not been
120 compiled yet, the backend is not NVRTC (e.g. PTX or NVVM),
121 or the NVRTC bindings are too old to report status.
123 When ``create_pch`` is set in :class:`ProgramOptions` and the PCH
124 heap is too small, :meth:`compile` automatically resizes the heap
125 and retries, so ``"created"`` should be the common outcome.
127 .. note::
129 PCH is only supported for ``code_type="c++"`` programs that
130 use the NVRTC backend. For PTX and NVVM programs this property
131 always returns ``None``.
132 """
133 return self._pch_status 2#ed .d
135 @property
136 def backend(self) -> str:
137 """Return this Program instance's underlying backend."""
138 return self._backend 29e!ec -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|d4ecghgdgigegjgVe5efgkgWe6egglga b MgJgsgtgugvgwgxgygzgAg
140 @property
141 def handle(self) -> ProgramHandleT:
142 """Return the underlying handle object.
144 .. note::
146 The type of the returned object depends on the backend.
148 .. caution::
150 This handle is a Python object. To get the memory address of the underlying C
151 handle, call ``int(Program.handle)``.
152 """
153 if self._backend == "NVRTC": 24eKgJgBg
154 return as_py(self._h_nvrtc) 2KgJg
155 elif self._backend == "NVVM": 24eBg
156 return as_py(self._h_nvvm) # returns int (NVVM uses raw integers) 24e
157 else:
158 return self._linker.handle 2Bg
160 def __repr__(self) -> str:
161 return f"<Program backend='{self._backend}'>" 2LgDg4e
164# =============================================================================
165# Other Public Classes
166# =============================================================================
169@dataclass
170class ProgramOptions:
171 """Customizable options for configuring :class:`Program`.
173 Attributes
174 ----------
175 name : str, optional
176 Name of the program. If the compilation succeeds, the name is passed down to the generated `ObjectCode`.
177 arch : str, optional
178 Pass the SM architecture value, such as ``sm_<CC>`` (for generating CUBIN) or
179 ``compute_<CC>`` (for generating PTX). If not provided, the current device's architecture
180 will be used.
181 relocatable_device_code : bool, optional
182 Enable (disable) the generation of relocatable device code.
183 Default: False
184 extensible_whole_program : bool, optional
185 Do extensible whole program compilation of device code.
186 Default: False
187 debug : bool, optional
188 Generate debug information. If --dopt is not specified, then turns off all optimizations.
189 Default: False
190 lineinfo: bool, optional
191 Generate line-number information.
192 Default: False
193 device_code_optimize : bool, optional
194 Enable device code optimization. When specified along with '-G', enables limited debug information generation
195 for optimized device code.
196 Default: None
197 ptxas_options : Union[str, list[str]], optional
198 Specify one or more options directly to ptxas, the PTX optimizing assembler. Options should be strings.
199 For example ["-v", "-O2"].
200 Default: None
201 max_register_count : int, optional
202 Specify the maximum amount of registers that GPU functions can use.
203 Default: None
204 ftz : bool, optional
205 When performing single-precision floating-point operations, flush denormal values to zero or preserve denormal
206 values.
207 Default: False
208 prec_sqrt : bool, optional
209 For single-precision floating-point square root, use IEEE round-to-nearest mode or use a faster approximation.
210 Default: True
211 prec_div : bool, optional
212 For single-precision floating-point division and reciprocals, use IEEE round-to-nearest mode or use a faster
213 approximation.
214 Default: True
215 fma : bool, optional
216 Enables (disables) the contraction of floating-point multiplies and adds/subtracts into floating-point
217 multiply-add operations.
218 Default: True
219 use_fast_math : bool, optional
220 Make use of fast math operations.
221 Default: False
222 extra_device_vectorization : bool, optional
223 Enables more aggressive device code vectorization in the NVVM optimizer.
224 Default: False
225 link_time_optimization : bool, optional
226 Generate intermediate code for later link-time optimization.
227 Default: False
228 gen_opt_lto : bool, optional
229 Run the optimizer passes before generating the LTO IR.
230 Default: False
231 define_macro : Union[str, tuple[str, str], list[Union[str, tuple[str, str]]]], optional
232 Predefine a macro. Can be either a string, in which case that macro will be set to 1, a 2 element tuple of
233 strings, in which case the first element is defined as the second, or a list of strings or tuples.
234 Default: None
235 undefine_macro : Union[str, list[str]], optional
236 Cancel any previous definition of a macro, or list of macros.
237 Default: None
238 include_path : Union[str, list[str]], optional
239 Add the directory or directories to the list of directories to be searched for headers.
240 Default: None
241 pre_include : Union[str, list[str]], optional
242 Preinclude one or more headers during preprocessing. Can be either a string or a list of strings.
243 Default: None
244 no_source_include : bool, optional
245 Disable the default behavior of adding the directory of each input source to the include path.
246 Default: False
247 std : str, optional
248 Set language dialect to C++03, C++11, C++14, C++17 or C++20.
249 Default: c++17
250 builtin_move_forward : bool, optional
251 Provide builtin definitions of std::move and std::forward.
252 Default: True
253 builtin_initializer_list : bool, optional
254 Provide builtin definitions of std::initializer_list class and member functions.
255 Default: True
256 disable_warnings : bool, optional
257 Inhibit all warning messages.
258 Default: False
259 restrict : bool, optional
260 Programmer assertion that all kernel pointer parameters are restrict pointers.
261 Default: False
262 device_as_default_execution_space : bool, optional
263 Treat entities with no execution space annotation as __device__ entities.
264 Default: False
265 device_int128 : bool, optional
266 Allow the __int128 type in device code.
267 Default: False
268 optimization_info : str, optional
269 Provide optimization reports for the specified kind of optimization.
270 Default: None
271 no_display_error_number : bool, optional
272 Disable the display of a diagnostic number for warning messages.
273 Default: False
274 diag_error : Union[int, list[int]], optional
275 Emit error for a specified diagnostic message number or comma separated list of numbers.
276 Default: None
277 diag_suppress : Union[int, list[int]], optional
278 Suppress a specified diagnostic message number or comma separated list of numbers.
279 Default: None
280 diag_warn : Union[int, list[int]], optional
281 Emit warning for a specified diagnostic message number or comma separated lis of numbers.
282 Default: None
283 brief_diagnostics : bool, optional
284 Disable or enable showing source line and column info in a diagnostic.
285 Default: False
286 time : str, optional
287 Generate a CSV table with the time taken by each compilation phase.
288 Default: None
289 split_compile : int, optional
290 Perform compiler optimizations in parallel.
291 Default: 1
292 fdevice_syntax_only : bool, optional
293 Ends device compilation after front-end syntax checking.
294 Default: False
295 minimal : bool, optional
296 Omit certain language features to reduce compile time for small programs.
297 Default: False
298 no_cache : bool, optional
299 Disable compiler caching.
300 Default: False
301 fdevice_time_trace : str, optional
302 Generate time trace JSON for profiling compilation (NVRTC only).
303 Default: None
304 device_float128 : bool, optional
305 Allow __float128 type in device code (NVRTC only).
306 Default: False
307 frandom_seed : str, optional
308 Set random seed for randomized optimizations (NVRTC only).
309 Default: None
310 ofast_compile : str, optional
311 Fast compilation mode: "0", "min", "mid", or "max" (NVRTC only).
312 Default: None
313 pch : bool, optional
314 Use default precompiled header (NVRTC only, CUDA 12.8+).
315 Default: False
316 create_pch : str, optional
317 Create precompiled header file (NVRTC only, CUDA 12.8+).
318 Default: None
319 use_pch : str, optional
320 Use specific precompiled header file (NVRTC only, CUDA 12.8+).
321 Default: None
322 pch_dir : str, optional
323 PCH directory location (NVRTC only, CUDA 12.8+).
324 Default: None
325 pch_verbose : bool, optional
326 Verbose PCH output (NVRTC only, CUDA 12.8+).
327 Default: False
328 pch_messages : bool, optional
329 Control PCH diagnostic messages (NVRTC only, CUDA 12.8+).
330 Default: False
331 instantiate_templates_in_pch : bool, optional
332 Control template instantiation in PCH (NVRTC only, CUDA 12.8+).
333 Default: False
334 extra_sources : list of 2-tuples or tuple of 2-tuples, optional
335 Additional NVVM IR modules to compile together with the main program, specified as
336 ``((name1, source1), (name2, source2), ...)``. Each name is a string identifier used
337 in diagnostic messages. Each source can be a string (textual LLVM IR) or bytes/bytearray
338 (LLVM bitcode). Only supported for the NVVM backend.
339 Default: None
340 use_libdevice : bool, optional
341 Load NVIDIA's `libdevice <https://docs.nvidia.com/cuda/libdevice-users-guide/>`_
342 math builtins library. Only supported for the NVVM backend.
343 Default: False
344 """
346 name: str | None = "default_program"
347 arch: str | None = None
348 relocatable_device_code: bool | None = None
349 extensible_whole_program: bool | None = None
350 debug: bool | None = None
351 lineinfo: bool | None = None
352 device_code_optimize: bool | None = None
353 ptxas_options: str | list[str] | tuple[str] | None = None
354 max_register_count: int | None = None
355 ftz: bool | None = None
356 prec_sqrt: bool | None = None
357 prec_div: bool | None = None
358 fma: bool | None = None
359 use_fast_math: bool | None = None
360 extra_device_vectorization: bool | None = None
361 link_time_optimization: bool | None = None
362 gen_opt_lto: bool | None = None
363 define_macro: str | tuple[str, str] | list[str | tuple[str, str]] | tuple[str | tuple[str, str], ...] | None = None
364 undefine_macro: str | list[str] | tuple[str] | None = None
365 include_path: str | list[str] | tuple[str] | None = None
366 pre_include: str | list[str] | tuple[str] | None = None
367 no_source_include: bool | None = None
368 std: str | None = None
369 builtin_move_forward: bool | None = None
370 builtin_initializer_list: bool | None = None
371 disable_warnings: bool | None = None
372 restrict: bool | None = None
373 device_as_default_execution_space: bool | None = None
374 device_int128: bool | None = None
375 optimization_info: str | None = None
376 no_display_error_number: bool | None = None
377 diag_error: int | list[int] | tuple[int] | None = None
378 diag_suppress: int | list[int] | tuple[int] | None = None
379 diag_warn: int | list[int] | tuple[int] | None = None
380 brief_diagnostics: bool | None = None
381 time: str | None = None
382 split_compile: int | None = None
383 fdevice_syntax_only: bool | None = None
384 minimal: bool | None = None
385 no_cache: bool | None = None
386 fdevice_time_trace: str | None = None
387 device_float128: bool | None = None
388 frandom_seed: str | None = None
389 ofast_compile: str | None = None
390 pch: bool | None = None
391 create_pch: str | None = None
392 use_pch: str | None = None
393 pch_dir: str | None = None
394 pch_verbose: bool | None = None
395 pch_messages: bool | None = None
396 instantiate_templates_in_pch: bool | None = None
397 extra_sources: list[tuple[str, str | bytes | bytearray]] | tuple[tuple[str, str | bytes | bytearray], ...] | None = None
398 use_libdevice: bool | None = None # For libdevice execution
399 numba_debug: bool | None = None # Custom option for Numba debugging
401 def __post_init__(self):
402 self._name = self.name.encode() 2#e3 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLgDg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOg9e!ed .dQgc -dYgZgUgXg2gmgj ngrg4ea b RgMgIgFg7eKgTgSgJg1gogqgpgCgEgGgHg3gPgBg8e
403 # Set arch to default if not provided
404 if self.arch is None: 2#e3 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLgDg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOg9e!ed .dQgc -dYgZgUgXg2gmgj ngrg4ea b RgMgIgFg7eKgTgSgJg1gogqgpgCgEgGgHg3gPgBg8e
405 self.arch = f"sm_{Device().arch}" 2#e'e}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;bR S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c)e*e+e,e-e.e/e:e;e=e?e@e[e]eT ^e_e`e{e|e}e~eafbfU cfdfefffgfhfifjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfzfAfBfCfDfEfFfGfHfIfJfKfLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZf0f1f2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f+f,f-f.f/f:f;fLgDg=f?f@f[f]f^f_f`f{f|f}f~fNgagbgOgd .dQgc -dmgj ngrg4ea b RgMgIgFg7eKgTgSgJgPgBg8e
406 if self.extra_sources is not None: 2#e3 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLgDg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOg9e!ed .dQgc -dYgZgUgXg2gmgj ngrg4ea b RgMgIgFg7eKgTgSgJg1gogqgpgCgEgGgHg3gPgBg8e
407 if not is_sequence(self.extra_sources): 2QgYgZgUgXg2ga b Pg
408 raise TypeError( 22g
409 "extra_sources must be a sequence of 2-tuples: ((name1, source1), (name2, source2), ...)"
410 )
411 for i, module in enumerate(self.extra_sources): 2QgYgZgUgXga b Pg
412 if not isinstance(module, tuple) or len(module) != 2: 2QgYgZgUgXga b Pg
413 raise TypeError( 2Zg
414 f"Each extra module must be a 2-tuple (name, source)" 2Zg
415 f", got {type(module).__name__} at index {i}" 2Zg
416 )
418 module_name, module_source = module 2QgYgUgXga b Pg
420 if not isinstance(module_name, str): 2QgYgUgXga b Pg
421 raise TypeError(f"Module name at index {i} must be a string, got {type(module_name).__name__}") 2Yg
423 if not isinstance(module_source, (str, bytes, bytearray)): 2QgUgXga b Pg
424 raise TypeError( 2Ug
425 f"Module source at index {i} must be str (textual LLVM IR), bytes (textual LLVM IR or bitcode), " 2Ug
426 f"or bytearray, got {type(module_source).__name__}" 2Ug
427 )
429 if len(module_source) == 0: 2QgXga b Pg
430 raise ValueError(f"Module source for '{module_name}' (index {i}) cannot be empty") 2Xg
432 def _prepare_nvrtc_options(self) -> list[bytes]:
433 return _prepare_nvrtc_options_impl(self) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e
435 def _prepare_nvvm_options(self, as_bytes: bool = True) -> list[bytes] | list[str]:
436 return _prepare_nvvm_options_impl(self, as_bytes) 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
438 def as_bytes(self, backend: str, target_type: str | None = None) -> list[bytes]:
439 """Convert program options to bytes format for the specified backend.
441 This method transforms the program options into a format suitable for the
442 specified compiler backend. Different backends may use different option names
443 and formats even for the same conceptual options.
445 Parameters
446 ----------
447 backend : str
448 The compiler backend to prepare options for. Must be either "nvrtc" or "nvvm".
449 target_type : str, optional
450 The compilation target type (e.g., "ptx", "cubin", "ltoir"). Some backends
451 require additional options based on the target type.
453 Returns
454 -------
455 list[bytes]
456 List of option strings encoded as bytes.
458 Raises
459 ------
460 ValueError
461 If an unknown backend is specified.
462 CUDAError
463 If an option incompatible with the specified backend is set.
465 Examples
466 --------
467 >>> options = ProgramOptions(arch="sm_80", debug=True)
468 >>> nvrtc_options = options.as_bytes("nvrtc")
469 """
470 backend = backend.lower() 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbg9e!ed .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ng4ecghgdgigegjgVe5efgkgWe6egglga b 7e1gogqgpgCgEgGgHg8e
471 if backend == "nvrtc": 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbg9e!ed .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ng4ecghgdgigegjgVe5efgkgWe6egglga b 7e1gogqgpgCgEgGgHg8e
472 return self._prepare_nvrtc_options() 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e
473 elif backend == "nvvm": 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b 1gqgpg
474 options = self._prepare_nvvm_options(as_bytes=True) 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
475 if target_type == "ltoir" and b"-gen-lto" not in options: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b pg
476 options.append(b"-gen-lto") 29e!ecgdgegVefgWegga
477 return options 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b pg
478 else:
479 raise ValueError(f"Unknown backend '{backend}'. Must be one of: 'nvrtc', 'nvvm'") 21g
481 def __repr__(self):
482 return f"ProgramOptions(name={self.name!r}, arch={self.arch!r})" 23g
484 def _prepare_extra_sources_bytes(self) -> list[tuple[bytes, bytes]] | None:
485 """Convert extra_sources to bytes format for NVVM."""
486 if self.extra_sources is None: 1ab
487 return None
489 result = [] 1ab
490 for module_name, module_source in self.extra_sources: 1ab
491 name_bytes = module_name.encode("utf-8") 1ab
492 if isinstance(module_source, str): 1ab
493 source_bytes = module_source.encode("utf-8") 1ab
494 elif isinstance(module_source, bytearray):
495 source_bytes = bytes(module_source)
496 else:
497 source_bytes = module_source
498 result.append((name_bytes, source_bytes)) 1ab
499 return result 1ab
502# =============================================================================
503# Private Classes and Helper Functions
504# =============================================================================
506# Module-level state for NVVM lazy loading
507_nvvm_module = None
508_nvvm_import_attempted = False
511def _get_nvvm_module():
512 """Get the NVVM module, importing it lazily with availability checks."""
513 global _nvvm_module, _nvvm_import_attempted
515 if _nvvm_import_attempted: 2#eDgVgWg0g9e!engrg4g4ecghgdgigegjgVe5efg5gkgWe6egglga b Rg
516 if _nvvm_module is None: 2Dg9e!engrg4g4ecghgdgigegjgVe5efg5gkgWe6egglga b Rg
517 raise RuntimeError("NVVM module is not available (previous import attempt failed)")
518 return _nvvm_module 2Dg9e!engrg4g4ecghgdgigegjgVe5efg5gkgWe6egglga b Rg
520 _nvvm_import_attempted = True 2#eVgWg0g
522 try: 2#eVgWg0g
523 version = binding_version() 2#eVgWg0g
524 if version < (12, 9, 0): 2#eVgWg0g
525 raise RuntimeError(
526 f"NVVM bindings require cuda-bindings >= 12.9.0, but found {'.'.join(map(str, version))}. "
527 "Please update cuda-bindings to use NVVM features."
528 )
530 nvvm = _optional_cuda_import( 2#eVgWg0g
531 "cuda.bindings.nvvm",
532 probe_function=lambda module: module.version(), # probe triggers libnvvm load 2#eVgWg0g
533 )
534 if nvvm is None: 2#eVgWg
535 raise RuntimeError( 2VgWg
536 "NVVM support is unavailable: cuda.bindings.nvvm is missing or libnvvm cannot be loaded."
537 )
539 _nvvm_module = nvvm
540 return _nvvm_module
542 except RuntimeError: 2VgWg0g
543 _nvvm_module = None 2VgWg
544 raise 2VgWg
546def _find_libdevice_path():
547 """Find libdevice*.bc for NVVM compilation using cuda.pathfinder."""
548 from cuda.pathfinder import find_bitcode_lib
549 return find_bitcode_lib("device")
554cdef inline bint _process_define_macro_inner(list options, object macro) except? -1:
555 """Process a single define macro, returning True if successful."""
556 if isinstance(macro, str): 2Q O g h CgEgGgHg
557 options.append(f"--define-macro={macro}") 1Q
558 return True 1Q
559 if isinstance(macro, tuple): 2O g h CgEgGgHg
560 if len(macro) != 2 or any(not isinstance(val, str) for val in macro): 2O g h CgGgHg
561 raise RuntimeError(f"Expected define_macro tuple[str, str], got {macro}") 2CgGgHg
562 options.append(f"--define-macro={macro[0]}={macro[1]}") 1Ogh
563 return True 1Ogh
564 return False 2g h CgEg
567cdef inline void _process_define_macro(list options, object macro) except *:
568 """Process define_macro option which can be str, tuple, or list thereof."""
569 union_type = "Union[str, tuple[str, str]]" 2Q O g h CgEgGgHg
570 if _process_define_macro_inner(options, macro): 2Q O g h CgEgGgHg
571 return 1QO
572 if is_nested_sequence(macro): 2g h CgEg
573 for seq_macro in macro: 2g h Cg
574 if not _process_define_macro_inner(options, seq_macro): 2g h Cg
575 raise RuntimeError(f"Expected define_macro {union_type}, got {seq_macro}")
576 return 1gh
577 raise RuntimeError(f"Expected define_macro {union_type}, list[{union_type}], got {macro}") 2Eg
580cpdef bint _can_load_generated_ptx() except? -1:
581 """Check if the driver can load PTX generated by the current NVRTC version."""
582 drv = driver_version() 2}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFee f 6gM 7gN 8g9gd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e
583 nvrtc_major, nvrtc_minor = handle_return(nvrtc.nvrtcVersion()) 2}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFee f 6gM 7gN 8g9gd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e
584 return (nvrtc_major, nvrtc_minor, 0) <= drv 2}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFee f 6gM 7gN 8g9gd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e
587cdef inline object _translate_program_options(object options):
588 """Translate ProgramOptions to LinkerOptions for PTX compilation."""
589 return LinkerOptions( 2BgsgtgugvgwgxgygzgAg
590 name=options.name, 2BgsgtgugvgwgxgygzgAg
591 arch=options.arch, 2BgsgtgugvgwgxgygzgAg
592 max_register_count=options.max_register_count, 2BgsgtgugvgwgxgygzgAg
593 time=options.time, 2BgsgtgugvgwgxgygzgAg
594 link_time_optimization=options.link_time_optimization, 2BgsgtgugvgwgxgygzgAg
595 debug=options.debug, 2BgsgtgugvgwgxgygzgAg
596 lineinfo=options.lineinfo, 2BgsgtgugvgwgxgygzgAg
597 ftz=options.ftz, 2BgsgtgugvgwgxgygzgAg
598 prec_div=options.prec_div, 2BgsgtgugvgwgxgygzgAg
599 prec_sqrt=options.prec_sqrt, 2BgsgtgugvgwgxgygzgAg
600 fma=options.fma, 2BgsgtgugvgwgxgygzgAg
601 split_compile=options.split_compile, 2BgsgtgugvgwgxgygzgAg
602 ptxas_options=options.ptxas_options, 2BgsgtgugvgwgxgygzgAg
603 no_cache=options.no_cache, 2BgsgtgugvgwgxgygzgAg
604 )
607cdef inline int Program_init(Program self, object code, str code_type, object options) except -1:
608 """Initialize a Program instance."""
609 cdef cynvrtc.nvrtcProgram nvrtc_prog
610 cdef cynvvm.nvvmProgram nvvm_prog
611 cdef bytes code_bytes
612 cdef const char* code_ptr
613 cdef const char* name_ptr
614 cdef size_t code_len
615 cdef bytes module_bytes
616 cdef const char* module_ptr
617 cdef size_t module_len
619 self._options = options = check_or_create_options(ProgramOptions, options, "Program options") 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLgDg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOg9e!ed .dQgc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ngrg4ecghgdgigegjgVe5efgkgWe6egglga b RgMgIgFg7eKgTgSgJgPgBgsgtgugvgwgxgygzgAg8e
620 code_type = code_type.lower() 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLgDg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOg9e!ed .dQgc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ngrg4ecghgdgigegjgVe5efgkgWe6egglga b RgMgIgFg7eKgTgSgJgPgBgsgtgugvgwgxgygzgAg8e
621 self._compile_lock = threading.Lock() 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLgDg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOg9e!ed .dQgc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ngrg4ecghgdgigegjgVe5efgkgWe6egglga b RgMgIgFg7eKgTgSgJgPgBgsgtgugvgwgxgygzgAg8e
622 self._use_libdevice = False 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLgDg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOg9e!ed .dQgc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ngrg4ecghgdgigegjgVe5efgkgWe6egglga b RgMgIgFg7eKgTgSgJgPgBgsgtgugvgwgxgygzgAg8e
623 self._libdevice_added = False 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLgDg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOg9e!ed .dQgc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ngrg4ecghgdgigegjgVe5efgkgWe6egglga b RgMgIgFg7eKgTgSgJgPgBgsgtgugvgwgxgygzgAg8e
625 self._pch_status = None 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLgDg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOg9e!ed .dQgc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ngrg4ecghgdgigegjgVe5efgkgWe6egglga b RgMgIgFg7eKgTgSgJgPgBgsgtgugvgwgxgygzgAg8e
627 if code_type == "c++": 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLgDg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOg9e!ed .dQgc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ngrg4ecghgdgigegjgVe5efgkgWe6egglga b RgMgIgFg7eKgTgSgJgPgBgsgtgugvgwgxgygzgAg8e
628 assert_type(code, str) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOgd .dQgc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj MgIgFg7eKgTgJg8e
629 if options.extra_sources is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOgd .dQgc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj MgIgFg7eKgJg8e
630 raise ValueError("extra_sources is not supported by the NVRTC backend (C++ code_type)") 2Qg
632 # TODO: support pre-loaded headers & include names
633 code_bytes = code.encode() 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj MgIgFg7eKgJg8e
634 code_ptr = <const char*>code_bytes 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj MgIgFg7eKgJg8e
635 name_ptr = <const char*>options._name 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj MgIgFg7eKgJg8e
637 with nogil: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj MgIgFg7eKgJg8e
638 HANDLE_RETURN_NVRTC(NULL, cynvrtc.nvrtcCreateProgram( 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj MgIgFg7eKgJg8e
639 &nvrtc_prog, code_ptr, name_ptr, 0, NULL, NULL))
640 self._h_nvrtc = create_nvrtc_program_handle(nvrtc_prog) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj MgIgFg7eKgJg8e
641 self._nvrtc_code = code_bytes 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj MgIgFg7eKgJg8e
642 self._backend = "NVRTC" 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj MgIgFg7eKgJg8e
643 self._linker = None 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj MgIgFg7eKgJg8e
645 elif code_type == "ptx": 2Dg9e!engrg4ecghgdgigegjgVe5efgkgWe6egglga b RgSgPgBgsgtgugvgwgxgygzgAg
646 assert_type(code, str) 2PgBgsgtgugvgwgxgygzgAg
647 if options.extra_sources is not None: 2PgBgsgtgugvgwgxgygzgAg
648 raise ValueError("extra_sources is not supported by the PTX backend.") 2Pg
649 self._linker = Linker( 2BgsgtgugvgwgxgygzgAg
650 ObjectCode._init(code.encode(), code_type), options=_translate_program_options(options) 2BgsgtgugvgwgxgygzgAg
651 )
652 self._backend = self._linker.backend 2BgsgtgugvgwgxgygzgAg
654 elif code_type == "nvvm": 2Dg9e!engrg4ecghgdgigegjgVe5efgkgWe6egglga b RgSg
655 _get_nvvm_module() # Validate NVVM availability 2Dg9e!engrg4ecghgdgigegjgVe5efgkgWe6egglga b Rg
656 if isinstance(code, str): 2Dg9e!engrg4ecghgdgigegjgVe5efgkgWe6egglga b Rg
657 code = code.encode("utf-8") 2Dgngrg4ecghgdgigegjgVe5efgkgWe6egglga b
658 elif not isinstance(code, (bytes, bytearray)): 29e!eRg
659 raise TypeError("NVVM IR code must be provided as str, bytes, or bytearray") 2Rg
661 code_ptr = <const char*>(<bytes>code) 2Dg9e!engrg4ecghgdgigegjgVe5efgkgWe6egglga b
662 name_ptr = <const char*>options._name 2Dg9e!engrg4ecghgdgigegjgVe5efgkgWe6egglga b
663 code_len = len(code) 2Dg9e!engrg4ecghgdgigegjgVe5efgkgWe6egglga b
665 with nogil: 2Dg9e!engrg4ecghgdgigegjgVe5efgkgWe6egglga b
666 HANDLE_RETURN_NVVM(NULL, cynvvm.nvvmCreateProgram(&nvvm_prog)) 2Dg9e!engrg4ecghgdgigegjgVe5efgkgWe6egglga b
667 self._h_nvvm = create_nvvm_program_handle(nvvm_prog) # RAII from here 2Dg9e!engrg4ecghgdgigegjgVe5efgkgWe6egglga b
668 with nogil: 2Dg9e!engrg4ecghgdgigegjgVe5efgkgWe6egglga b
669 HANDLE_RETURN_NVVM(nvvm_prog, cynvvm.nvvmAddModuleToProgram(nvvm_prog, code_ptr, code_len, name_ptr)) 2Dg9e!engrg4ecghgdgigegjgVe5efgkgWe6egglga b
671 # Add extra modules if provided
672 if options.extra_sources is not None: 2Dg9e!engrg4ecghgdgigegjgVe5efgkgWe6egglga b
673 extra_sources_bytes = options._prepare_extra_sources_bytes() 1ab
674 for module_name_bytes, module_bytes in extra_sources_bytes: 1ab
675 module_ptr = <const char*>module_bytes 1ab
676 module_len = len(module_bytes) 1ab
677 module_name_ptr = <const char*>module_name_bytes 1ab
678 with nogil: 1ab
679 HANDLE_RETURN_NVVM(nvvm_prog, cynvvm.nvvmAddModuleToProgram( 1ab
680 nvvm_prog, module_ptr, module_len, module_name_ptr))
682 # Store use_libdevice flag
683 if options.use_libdevice: 2Dg9e!engrg4ecghgdgigegjgVe5efgkgWe6egglga b
684 self._use_libdevice = True
686 self._backend = "NVVM" 2Dg9e!engrg4ecghgdgigegjgVe5efgkgWe6egglga b
687 self._linker = None 2Dg9e!engrg4ecghgdgigegjgVe5efgkgWe6egglga b
689 else:
690 supported_code_types = ("c++", "ptx", "nvvm") 2Sg
691 assert code_type not in supported_code_types, f"{code_type=}" 2Sg
692 if options.use_libdevice: 2Sg
693 raise ValueError("use_libdevice is only supported by the NVVM backend")
694 raise RuntimeError(f"Unsupported {code_type=} ({supported_code_types=})") 2Sg
696 return 0 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;fLgDg6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~fNg+dag,dbgOg9e!ed .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ngrg4ecghgdgigegjgVe5efgkgWe6egglga b MgIgFg7eKgJgBgsgtgugvgwgxgygzgAg8e
699cdef object _nvrtc_compile_and_extract(
700 cynvrtc.nvrtcProgram prog, str target_type, object name_expressions,
701 object logs, list options_list, str name,
702):
703 """Run nvrtcCompileProgram on *prog* and extract the output.
705 This is the inner compile+extract loop, factored out so the PCH
706 auto-retry path can call it on a fresh program handle.
707 """
708 cdef size_t output_size = 0 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e
709 cdef size_t logsize = 0 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e
710 cdef vector[const char*] options_vec
711 cdef char* data_ptr = NULL 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e
712 cdef bytes name_bytes
713 cdef const char* name_ptr = NULL 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e
714 cdef const char* lowered_name = NULL 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e
715 cdef dict symbol_mapping = {} 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e
717 # Add name expressions before compilation
718 if name_expressions: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e
719 for n in name_expressions: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bk l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[cT U ]c^c_c`c{c|c}c~cadbdcdddedfdgdV W hdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdX Y LdMdNdOdPdQdRdSdTdUdVdWdXdYdZdZ 0 0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d
720 name_bytes = n.encode() if isinstance(n, str) else n 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bk l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[cT U ]c^c_c`c{c|c}c~cadbdcdddedfdgdV W hdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdX Y LdMdNdOdPdQdRdSdTdUdVdWdXdYdZdZ 0 0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d
721 name_ptr = <const char*>name_bytes 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bk l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[cT U ]c^c_c`c{c|c}c~cadbdcdddedfdgdV W hdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdX Y LdMdNdOdPdQdRdSdTdUdVdWdXdYdZdZ 0 0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d
722 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcAddNameExpression(prog, name_ptr)) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bk l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[cT U ]c^c_c`c{c|c}c~cadbdcdddedfdgdV W hdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdX Y LdMdNdOdPdQdRdSdTdUdVdWdXdYdZdZ 0 0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d
724 # Build options array
725 options_vec.resize(len(options_list)) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e
726 for i in range(len(options_list)): 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e
727 options_vec[i] = <const char*>(<bytes>options_list[i]) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e
729 # Compile
730 with nogil: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e
731 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcCompileProgram(prog, <int>options_vec.size(), options_vec.data())) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e
733 # Get compiled output based on target type
734 if target_type == "ptx": 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dj 7e8e
735 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetPTXSize(prog, &output_size)) 2}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFee f M N d .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dj 7e8e
736 data = bytearray(output_size) 2}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFee f M N d .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dj 7e8e
737 data_ptr = <char*>(<bytearray>data) 2}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFee f M N d .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dj 7e8e
738 with nogil: 2}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFee f M N d .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dj 7e8e
739 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetPTX(prog, data_ptr)) 2}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFee f M N d .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dj 7e8e
740 elif target_type == "cubin": 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b$e4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbg
741 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetCUBINSize(prog, &output_size)) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbg
742 data = bytearray(output_size) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbg
743 data_ptr = <char*>(<bytearray>data) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbg
744 with nogil: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbg
745 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetCUBIN(prog, data_ptr)) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbg
746 else: # ltoir
747 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetLTOIRSize(prog, &output_size)) 2$eR S ;f
748 data = bytearray(output_size) 2$eR S ;f
749 data_ptr = <char*>(<bytearray>data) 2$eR S ;f
750 with nogil: 2$eR S ;f
751 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetLTOIR(prog, data_ptr)) 2$eR S ;f
753 # Get lowered names after compilation
754 if name_expressions: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dj 7e8e
755 for n in name_expressions: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bk l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[cT U ]c^c_c`c{c|c}c~cadbdcdddedfdgdV W hdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdX Y LdMdNdOdPdQdRdSdTdUdVdWdXdYdZdZ 0 0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d
756 name_bytes = n.encode() if isinstance(n, str) else n 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bk l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[cT U ]c^c_c`c{c|c}c~cadbdcdddedfdgdV W hdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdX Y LdMdNdOdPdQdRdSdTdUdVdWdXdYdZdZ 0 0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d
757 name_ptr = <const char*>name_bytes 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bk l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[cT U ]c^c_c`c{c|c}c~cadbdcdddedfdgdV W hdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdX Y LdMdNdOdPdQdRdSdTdUdVdWdXdYdZdZ 0 0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d
758 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetLoweredName(prog, name_ptr, &lowered_name)) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bk l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[cT U ]c^c_c`c{c|c}c~cadbdcdddedfdgdV W hdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdX Y LdMdNdOdPdQdRdSdTdUdVdWdXdYdZdZ 0 0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d
759 symbol_mapping[n] = lowered_name if lowered_name != NULL else None 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bk l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[cT U ]c^c_c`c{c|c}c~cadbdcdddedfdgdV W hdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdX Y LdMdNdOdPdQdRdSdTdUdVdWdXdYdZdZ 0 0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d
761 # Get compilation log if requested
762 if logs is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dj 7e8e
763 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetProgramLogSize(prog, &logsize)) 1j
764 if logsize > 1: 1j
765 log = bytearray(logsize) 1j
766 data_ptr = <char*>(<bytearray>log) 1j
767 with nogil: 1j
768 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetProgramLog(prog, data_ptr)) 1j
769 logs.write(log.decode("utf-8", errors="backslashreplace")) 1j
771 return ObjectCode._init(bytes(data), target_type, symbol_mapping=symbol_mapping, name=name) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dj 7e8e
774cdef int _nvrtc_pch_apis_cached = -1 # -1 = unchecked
776cdef bint _has_nvrtc_pch_apis():
777 global _nvrtc_pch_apis_cached
778 if _nvrtc_pch_apis_cached < 0: 1dci
779 _nvrtc_pch_apis_cached = hasattr(nvrtc, "nvrtcGetPCHCreateStatus") 1d
780 return _nvrtc_pch_apis_cached 1dci
783cdef str _PCH_STATUS_CREATED = "created"
784cdef str _PCH_STATUS_NOT_ATTEMPTED = "not_attempted"
785cdef str _PCH_STATUS_FAILED = "failed"
788cdef str _read_pch_status(cynvrtc.nvrtcProgram prog):
789 """Query nvrtcGetPCHCreateStatus and translate to a high-level string."""
790 cdef cynvrtc.nvrtcResult err
791 with nogil: 1dci
792 err = cynvrtc.nvrtcGetPCHCreateStatus(prog) 1dci
793 if err == cynvrtc.nvrtcResult.NVRTC_SUCCESS: 1dci
794 return _PCH_STATUS_CREATED 1dci
795 if err == cynvrtc.nvrtcResult.NVRTC_ERROR_PCH_CREATE_HEAP_EXHAUSTED:
796 return None # sentinel: caller should auto-retry
797 if err == cynvrtc.nvrtcResult.NVRTC_ERROR_NO_PCH_CREATE_ATTEMPTED:
798 return _PCH_STATUS_NOT_ATTEMPTED
799 return _PCH_STATUS_FAILED
802cdef object Program_compile_nvrtc(Program self, str target_type, object name_expressions, object logs):
803 """Compile using NVRTC backend and return ObjectCode."""
804 cdef cynvrtc.nvrtcProgram prog = as_cu(self._h_nvrtc) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e
805 cdef list options_list = self._options.as_bytes("nvrtc", target_type) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e
807 result = _nvrtc_compile_and_extract( 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e
808 prog, target_type, name_expressions, logs, options_list, self._options.name, 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e
809 )
811 cdef bint pch_creation_possible = self._options.create_pch or self._options.pch 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dj 7e8e
812 if not pch_creation_possible or not _has_nvrtc_pch_apis(): 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dj 7e8e
813 self._pch_status = None 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbg.dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSeTeUe|dj 7e8e
814 return result 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbg.dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSeTeUe|dj 7e8e
816 try: 1dci
817 status = _read_pch_status(prog) 1dci
818 except RuntimeError as e:
819 raise RuntimeError(
820 "PCH was requested but the runtime libnvrtc does not support "
821 "PCH APIs. Update to CUDA toolkit 12.8 or newer."
822 ) from e
824 if status is not None: 1dci
825 self._pch_status = status 1dci
826 return result 1dci
828 # Heap exhausted — auto-resize and retry with a fresh program
829 cdef size_t required = 0
830 with nogil:
831 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetPCHHeapSizeRequired(prog, &required))
832 HANDLE_RETURN_NVRTC(NULL, cynvrtc.nvrtcSetPCHHeapSize(required))
834 cdef cynvrtc.nvrtcProgram retry_prog
835 cdef const char* code_ptr = <const char*>self._nvrtc_code
836 cdef const char* name_ptr = <const char*>self._options._name
837 with nogil:
838 HANDLE_RETURN_NVRTC(NULL, cynvrtc.nvrtcCreateProgram(
839 &retry_prog, code_ptr, name_ptr, 0, NULL, NULL))
840 self._h_nvrtc = create_nvrtc_program_handle(retry_prog)
842 result = _nvrtc_compile_and_extract(
843 retry_prog, target_type, name_expressions, logs, options_list, self._options.name,
844 )
846 status = _read_pch_status(retry_prog)
847 self._pch_status = status if status is not None else _PCH_STATUS_FAILED
848 return result
851cdef object Program_compile_nvvm(Program self, str target_type, object logs):
852 """Compile using NVVM backend and return ObjectCode."""
853 cdef cynvvm.nvvmProgram prog = as_cu(self._h_nvvm) 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b
854 cdef size_t output_size = 0 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b
855 cdef size_t logsize = 0 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b
856 cdef vector[const char*] options_vec
857 cdef char* data_ptr = NULL 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b
858 cdef bytes libdevice_bytes
859 cdef const char* libdevice_ptr
860 cdef size_t libdevice_len
861 # Build options array
862 options_list = self._options.as_bytes("nvvm", target_type) 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b
863 options_vec.resize(len(options_list)) 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b
864 for i in range(len(options_list)): 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b
865 options_vec[i] = <const char*>(<bytes>options_list[i]) 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b
867 # Serialize NVVM program mutation/use per Program instance.
868 with self._compile_lock: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b
869 with nogil: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b
870 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmVerifyProgram(prog, <int>options_vec.size(), options_vec.data())) 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b
872 # Load libdevice if requested - following numba-cuda.
873 if self._use_libdevice and not self._libdevice_added: 29e!e4ecghgdgigegjgVe5efgkgWe6egglga b
874 libdevice_path = _find_libdevice_path()
875 with open(libdevice_path, "rb") as f:
876 libdevice_bytes = f.read()
877 libdevice_ptr = <const char*>libdevice_bytes
878 libdevice_len = len(libdevice_bytes)
879 with nogil:
880 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmLazyAddModuleToProgram(
881 prog, libdevice_ptr, libdevice_len, NULL))
882 self._libdevice_added = True
884 with nogil: 29e!e4ecghgdgigegjgVe5efgkgWe6egglga b
885 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmCompileProgram(prog, <int>options_vec.size(), options_vec.data())) 29e!e4ecghgdgigegjgVe5efgkgWe6egglga b
887 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmGetCompiledResultSize(prog, &output_size)) 29e!e4ecghgdgigegjgVe5efgkgWe6egglga b
888 data = bytearray(output_size) 29e!e4ecghgdgigegjgVe5efgkgWe6egglga b
889 data_ptr = <char*>(<bytearray>data) 29e!e4ecghgdgigegjgVe5efgkgWe6egglga b
890 with nogil: 29e!e4ecghgdgigegjgVe5efgkgWe6egglga b
891 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmGetCompiledResult(prog, data_ptr)) 29e!e4ecghgdgigegjgVe5efgkgWe6egglga b
893 # Get compilation log if requested
894 if logs is not None: 29e!e4ecghgdgigegjgVe5efgkgWe6egglga b
895 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmGetProgramLogSize(prog, &logsize))
896 if logsize > 1:
897 log = bytearray(logsize)
898 data_ptr = <char*>(<bytearray>log)
899 with nogil:
900 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmGetProgramLog(prog, data_ptr))
901 logs.write(log.decode("utf-8", errors="backslashreplace"))
903 return ObjectCode._init(bytes(data), target_type, name=self._options.name) 29e!e4ecghgdgigegjgVe5efgkgWe6egglga b
905# Supported target types per backend
906cdef dict SUPPORTED_TARGETS = {
907 "NVRTC": ("ptx", "cubin", "ltoir"),
908 "NVVM": ("ptx", "ltoir"),
909 "nvJitLink": ("cubin", "ptx"),
910 "driver": ("cubin", "ptx"),
911}
914cdef object Program_compile(Program self, str target_type, object name_expressions, object logs):
915 """Compile the program to the specified target type."""
916 # Validate target_type for this backend
917 supported = SUPPORTED_TARGETS.get(self._backend) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbg9e!ed .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ngrg4ecghgdgigegjgVe5efgkgWe6egglga b Fg7esgtgugvgwgxgygzgAg8e
918 if supported is None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbg9e!ed .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ngrg4ecghgdgigegjgVe5efgkgWe6egglga b Fg7esgtgugvgwgxgygzgAg8e
919 raise ValueError(f'Unknown backend="{self._backend}"')
920 if target_type not in supported: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbg9e!ed .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ngrg4ecghgdgigegjgVe5efgkgWe6egglga b Fg7esgtgugvgwgxgygzgAg8e
921 raise ValueError( 2rgFg
922 f'Unsupported target_type="{target_type}" for {self._backend} ' 2rgFg
923 f'(supported: {", ".join(repr(t) for t in supported)})' 2rgFg
924 )
926 if self._backend == "NVRTC": 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbg9e!ed .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj ng4ecghgdgigegjgVe5efgkgWe6egglga b 7esgtgugvgwgxgygzgAg8e
927 if target_type == "ptx" and not _can_load_generated_ptx(): 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e
928 warn( 2}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFee f M N d .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e
929 "The CUDA driver version is older than the backend version. "
930 "The generated ptx will not be loadable by the current driver.",
931 stacklevel=2,
932 category=RuntimeWarning, 2}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFee f M N d .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e
933 )
934 return Program_compile_nvrtc(self, target_type, name_expressions, logs) 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7e8e
936 elif self._backend == "NVVM": 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b sgtgugvgwgxgygzgAg
937 return Program_compile_nvvm(self, target_type, logs) 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b
939 else:
940 return self._linker.link(target_type) 2sgtgugvgwgxgygzgAg
943cdef inline list _prepare_nvrtc_options_impl(object opts):
944 """Build NVRTC-specific compiler options."""
945 options = [f"-arch={opts.arch}"] 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e
946 if opts.relocatable_device_code is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e
947 options.append(f"--relocatable-device-code={_handle_boolean_option(opts.relocatable_device_code)}") 2}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFe[d
948 if opts.extensible_whole_program is not None and opts.extensible_whole_program: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e
949 options.append("--extensible-whole-program") 2Le
950 if opts.debug is not None and opts.debug: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e
951 options.append("--device-debug") 2?d@dog
952 if opts.lineinfo is not None and opts.lineinfo: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e
953 options.append("--generate-line-info") 2og
954 if opts.device_code_optimize is not None and opts.device_code_optimize: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e
955 options.append("--dopt=on") 2?d
956 if opts.ptxas_options is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e
957 opt_name = "--ptxas-options" 112
958 if isinstance(opts.ptxas_options, str): 112
959 options.append(f"{opt_name}={opts.ptxas_options}")
960 elif is_sequence(opts.ptxas_options): 112
961 for opt_value in opts.ptxas_options: 112
962 options.append(f"{opt_name}={opt_value}") 112
963 if opts.max_register_count is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e
964 options.append(f"--maxrregcount={opts.max_register_count}") 2[d
965 if opts.ftz is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e
966 options.append(f"--ftz={_handle_boolean_option(opts.ftz)}") 2=dog
967 if opts.prec_sqrt is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e
968 options.append(f"--prec-sqrt={_handle_boolean_option(opts.prec_sqrt)}") 2=d
969 if opts.prec_div is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e
970 options.append(f"--prec-div={_handle_boolean_option(opts.prec_div)}") 2=d
971 if opts.fma is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e
972 options.append(f"--fmad={_handle_boolean_option(opts.fma)}") 2]d
973 if opts.use_fast_math is not None and opts.use_fast_math: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e
974 options.append("--use_fast_math") 2]d
975 if opts.extra_device_vectorization is not None and opts.extra_device_vectorization: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e
976 options.append("--extra-device-vectorization") 2Ge
977 if opts.link_time_optimization is not None and opts.link_time_optimization: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e
978 options.append("--dlink-time-opt") 2$eR S He
979 if opts.gen_opt_lto is not None and opts.gen_opt_lto: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e
980 options.append("--gen-opt-lto") 2Ne
981 if opts.define_macro is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eogCgEgGgHg8e
982 _process_define_macro(options, opts.define_macro) 2Q O g h CgEgGgHg
983 if opts.undefine_macro is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e
984 if isinstance(opts.undefine_macro, str): 2/d:d
985 options.append(f"--undefine-macro={opts.undefine_macro}") 2:d
986 elif is_sequence(opts.undefine_macro): 2/d
987 for macro in opts.undefine_macro: 2/d
988 options.append(f"--undefine-macro={macro}") 2/d
989 if opts.include_path is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e
990 if isinstance(opts.include_path, str): 2XeYeZe0e1e2ek l m n o p q r s t u v w x y z A B C D E F G H I J K L :d
991 options.append(f"--include-path={opts.include_path}") 2:d
992 elif is_sequence(opts.include_path): 2XeYeZe0e1e2ek l m n o p q r s t u v w x y z A B C D E F G H I J K L
993 for path in opts.include_path: 2XeYeZe0e1e2ek l m n o p q r s t u v w x y z A B C D E F G H I J K L
994 options.append(f"--include-path={path}") 2XeYeZe0e1e2ek l m n o p q r s t u v w x y z A B C D E F G H I J K L
995 if opts.pre_include is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e
996 if isinstance(opts.pre_include, str):
997 options.append(f"--pre-include={opts.pre_include}")
998 elif is_sequence(opts.pre_include):
999 for header in opts.pre_include:
1000 options.append(f"--pre-include={header}")
1001 if opts.no_source_include is not None and opts.no_source_include: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e
1002 options.append("--no-source-include") 2Pe
1003 if opts.std is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e
1004 options.append(f"--std={opts.std}") 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[cT U ]c^c_c`c{c|c}c~cadbdcdddedfdgdV W hdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdX Y LdMdNdOdPdQdRdSdTdUdVdWdXdYdZdZ 0 0d1d2d3d4d5d6d7d8d9d!d#d$d%d'd(d)d*d+d,d1 2
1005 if opts.builtin_move_forward is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e
1006 options.append(f"--builtin-move-forward={_handle_boolean_option(opts.builtin_move_forward)}") 2Ke
1007 if opts.builtin_initializer_list is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e
1008 options.append(f"--builtin-initializer-list={_handle_boolean_option(opts.builtin_initializer_list)}") 2^d
1009 if opts.disable_warnings is not None and opts.disable_warnings: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e
1010 options.append("--disable-warnings") 2^d
1011 if opts.restrict is not None and opts.restrict: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e
1012 options.append("--restrict") 2_d
1013 if opts.device_as_default_execution_space is not None and opts.device_as_default_execution_space: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e
1014 options.append("--device-as-default-execution-space") 2_d
1015 if opts.device_int128 is not None and opts.device_int128: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e
1016 options.append("--device-int128") 2`d
1017 if opts.device_float128 is not None and opts.device_float128: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e
1018 options.append("--device-float128")
1019 if opts.optimization_info is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e
1020 options.append(f"--optimization-info={opts.optimization_info}") 2`d
1021 if opts.no_display_error_number is not None and opts.no_display_error_number: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e
1022 options.append("--no-display-error-number") 2Ie
1023 if opts.diag_error is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e
1024 if isinstance(opts.diag_error, int): 2;dP
1025 options.append(f"--diag-error={opts.diag_error}") 2;d
1026 elif is_sequence(opts.diag_error): 1P
1027 for error in opts.diag_error: 1P
1028 options.append(f"--diag-error={error}") 1P
1029 if opts.diag_suppress is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e
1030 if isinstance(opts.diag_suppress, int): 2;dP
1031 options.append(f"--diag-suppress={opts.diag_suppress}") 2;d
1032 elif is_sequence(opts.diag_suppress): 1P
1033 for suppress in opts.diag_suppress: 1P
1034 options.append(f"--diag-suppress={suppress}") 1P
1035 if opts.diag_warn is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e
1036 if isinstance(opts.diag_warn, int): 2{d
1037 options.append(f"--diag-warn={opts.diag_warn}") 2{d
1038 elif is_sequence(opts.diag_warn):
1039 for w in opts.diag_warn:
1040 options.append(f"--diag-warn={w}")
1041 if opts.brief_diagnostics is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e
1042 options.append(f"--brief-diagnostics={_handle_boolean_option(opts.brief_diagnostics)}") 2Je
1043 if opts.time is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e
1044 options.append(f"--time={opts.time}")
1045 if opts.split_compile is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e
1046 options.append(f"--split-compile={opts.split_compile}")
1047 if opts.fdevice_syntax_only is not None and opts.fdevice_syntax_only: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e
1048 options.append("--fdevice-syntax-only") 2Me
1049 if opts.minimal is not None and opts.minimal: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e
1050 options.append("--minimal") 2Oe
1051 if opts.no_cache is not None and opts.no_cache: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e
1052 options.append("--no-cache") 2Qe
1053 if opts.fdevice_time_trace is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e
1054 options.append(f"--fdevice-time-trace={opts.fdevice_time_trace}") 2-d
1055 if opts.frandom_seed is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e
1056 options.append(f"--frandom-seed={opts.frandom_seed}") 2Re
1057 if opts.ofast_compile is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e
1058 options.append(f"--Ofast-compile={opts.ofast_compile}") 2Se
1059 # PCH options (CUDA 12.8+)
1060 if opts.pch is not None and opts.pch: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e
1061 options.append("--pch") 1i
1062 if opts.create_pch is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e
1063 options.append(f"--create-pch={opts.create_pch}") 1dc
1064 if opts.use_pch is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e
1065 options.append(f"--use-pch={opts.use_pch}") 1c
1066 if opts.pch_dir is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e
1067 options.append(f"--pch-dir={opts.pch_dir}")
1068 if opts.pch_verbose is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e
1069 options.append(f"--pch-verbose={_handle_boolean_option(opts.pch_verbose)}") 2Te
1070 if opts.pch_messages is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e
1071 options.append(f"--pch-messages={_handle_boolean_option(opts.pch_messages)}") 2Ue
1072 if opts.instantiate_templates_in_pch is not None: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e
1073 options.append( 2|d
1074 f"--instantiate-templates-in-pch={_handle_boolean_option(opts.instantiate_templates_in_pch)}" 2|d
1075 )
1076 if opts.numba_debug: 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e
1077 options.append("--numba-debug") 2@d
1078 return [o.encode() for o in options] 23 4 5 6 7 8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1bXeYeZe0e%e1e2e'ek l m n o p q r s t u v w x y z A B C D E F G H I J K L 2b3b}d~daebecedeeefegeheiejekelemeneoepeqereseteuevewexeyezeAeBeCeDe$eEeFe4b5b6b7b8b9b(e!b#b$b%b'b(b)b*b+b,b-b.b/b:b;be f R S M N =b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c)e2c*e+e3c,e4c-e5c6c7c.e8c/e9c!c#c$c%c'c(c)c*c+c:e,c;e-c=e.c?e/c:c;c@e=c[e?c@c[c]eT ^e_e`e{e|e}e~eafbfU cfdfefffgf]c^c_c`c{c|c}c~cadbdcdddhfediffdgdjfV kflfmfnfofpfqfrfsftfW ufvfwfxfyfhdidjdzfkdAfldBfmdCfndodpdDfqdEfrdsdtdudvdwdxdydzdAdFfBdGfCdHfDdIfEdFdGdJfHdKfIdJdKdLfX MfNfOfPfQfRfSfTfUfY VfWfXfYfZfLdMdNdOdPdQdRdSdTdUdVdWd0fXd1fYdZd2fZ 3f4f5f6f7f8f9f!f#f$f0 %f'f(f)f*f0d1d2d+f3d,f-f.f4d/f5d:f;f6d=f7d?f8d@f9d[f!d]f#d^f$d_f%d`f'd{f(d|f)d}f*d~f+dag,dbgd .dc -d3e?d@d[d=d]dGeHeQ O g h /d:d^d_d`dIe;dP {d1 2 JeKeLeMeNeOePeQeReSei TeUe|dmgj 7eog8e
1081cdef inline object _prepare_nvvm_options_impl(object opts, bint as_bytes):
1082 """Build NVVM-specific compiler options."""
1083 options = [] 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1085 # Options supported by NVVM
1086 assert opts.arch is not None 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1087 arch = opts.arch 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1088 if arch.startswith("sm_"): 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1089 arch = f"compute_{arch[3:]}" 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1090 options.append(f"-arch={arch}") 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1091 if opts.debug is not None and opts.debug: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1092 options.append("-g") 2pg
1093 if opts.device_code_optimize is False: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1094 options.append("-opt=0") 2cghgdgigfgkg
1095 elif opts.device_code_optimize is True: 29e!eng4eegjgVe5eWe6egglga b qgpg
1096 options.append("-opt=3") 2Ve5eWe6epg
1097 # NVVM uses 0/1 instead of true/false for boolean options
1098 if opts.ftz is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1099 options.append(f"-ftz={'1' if opts.ftz else '0'}") 2Ve5eWe6epg
1100 if opts.prec_sqrt is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1101 options.append(f"-prec-sqrt={'1' if opts.prec_sqrt else '0'}") 2Ve5eWe6e
1102 if opts.prec_div is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1103 options.append(f"-prec-div={'1' if opts.prec_div else '0'}") 2Ve5eWe6e
1104 if opts.fma is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1105 options.append(f"-fma={'1' if opts.fma else '0'}") 2Ve5eWe6e
1107 # Check for unsupported options and raise error if they are set
1108 unsupported = [] 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1109 if opts.relocatable_device_code is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1110 unsupported.append("relocatable_device_code")
1111 if opts.extensible_whole_program is not None and opts.extensible_whole_program: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1112 unsupported.append("extensible_whole_program")
1113 if opts.lineinfo is not None and opts.lineinfo: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1114 unsupported.append("lineinfo") 2qg
1115 if opts.ptxas_options is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1116 unsupported.append("ptxas_options")
1117 if opts.max_register_count is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1118 unsupported.append("max_register_count")
1119 if opts.use_fast_math is not None and opts.use_fast_math: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1120 unsupported.append("use_fast_math")
1121 if opts.extra_device_vectorization is not None and opts.extra_device_vectorization: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1122 unsupported.append("extra_device_vectorization")
1123 if opts.gen_opt_lto is not None and opts.gen_opt_lto: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1124 unsupported.append("gen_opt_lto")
1125 if opts.define_macro is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1126 unsupported.append("define_macro")
1127 if opts.undefine_macro is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1128 unsupported.append("undefine_macro")
1129 if opts.include_path is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1130 unsupported.append("include_path")
1131 if opts.pre_include is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1132 unsupported.append("pre_include")
1133 if opts.no_source_include is not None and opts.no_source_include: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1134 unsupported.append("no_source_include")
1135 if opts.std is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1136 unsupported.append("std")
1137 if opts.builtin_move_forward is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1138 unsupported.append("builtin_move_forward")
1139 if opts.builtin_initializer_list is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1140 unsupported.append("builtin_initializer_list")
1141 if opts.disable_warnings is not None and opts.disable_warnings: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1142 unsupported.append("disable_warnings")
1143 if opts.restrict is not None and opts.restrict: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1144 unsupported.append("restrict")
1145 if opts.device_as_default_execution_space is not None and opts.device_as_default_execution_space: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1146 unsupported.append("device_as_default_execution_space")
1147 if opts.device_int128 is not None and opts.device_int128: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1148 unsupported.append("device_int128")
1149 if opts.optimization_info is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1150 unsupported.append("optimization_info")
1151 if opts.no_display_error_number is not None and opts.no_display_error_number: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1152 unsupported.append("no_display_error_number")
1153 if opts.diag_error is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1154 unsupported.append("diag_error")
1155 if opts.diag_suppress is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1156 unsupported.append("diag_suppress")
1157 if opts.diag_warn is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1158 unsupported.append("diag_warn")
1159 if opts.brief_diagnostics is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1160 unsupported.append("brief_diagnostics")
1161 if opts.time is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1162 unsupported.append("time")
1163 if opts.split_compile is not None: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1164 unsupported.append("split_compile")
1165 if opts.fdevice_syntax_only is not None and opts.fdevice_syntax_only: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1166 unsupported.append("fdevice_syntax_only")
1167 if opts.minimal is not None and opts.minimal: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1168 unsupported.append("minimal")
1169 if opts.numba_debug is not None and opts.numba_debug: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1170 unsupported.append("numba_debug")
1171 if unsupported: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b qgpg
1172 raise CUDAError(f"The following options are not supported by NVVM backend: {', '.join(unsupported)}") 2qg
1174 if as_bytes: 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b pg
1175 return [o.encode() for o in options] 29e!eng4ecghgdgigegjgVe5efgkgWe6egglga b pg
1176 else:
1177 return options