Coverage for cuda/core/_program.pyx: 87.31%
670 statements
« prev ^ index » next coverage.py v7.14.1, created at 2026-06-13 01:38 +0000
« prev ^ index » next coverage.py v7.14.1, created at 2026-06-13 01:38 +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 typing import TYPE_CHECKING
15from warnings import warn
17if TYPE_CHECKING:
18 from cuda.core.utils._program_cache import ProgramCacheResource # no-cython-lint
20from cuda.bindings import nvrtc
21from cuda.pathfinder._optional_cuda_import import _optional_cuda_import
23from libcpp.vector cimport vector
25from ._resource_handles cimport (
26 as_cu,
27 as_py,
28 create_nvrtc_program_handle,
29 create_nvvm_program_handle,
30)
31from cuda.bindings cimport cynvrtc, cynvvm
32from cuda.core._utils.cuda_utils cimport HANDLE_RETURN_NVRTC, HANDLE_RETURN_NVVM
33from cuda.core._device import Device
34from cuda.core._linker import Linker, LinkerHandleT, LinkerOptions
35from cuda.core._module import ObjectCode
36from cuda.core._utils.clear_error_support import assert_type
37from cuda.core._utils.cuda_utils import (
38 CUDAError,
39 _handle_boolean_option,
40 check_or_create_options,
41 handle_return,
42 is_nested_sequence,
43 is_sequence,
44)
45from cuda.core._utils.version import binding_version, driver_version
46from cuda.core.typing import ObjectCodeFormatType, CompilerBackendType, PCHStatusType, SourceCodeType
48__all__ = ["Program", "ProgramOptions"]
50ProgramHandleT = nvrtc.nvrtcProgram | int | LinkerHandleT
51"""Type alias for program handle types across different backends.
53The ``int`` type covers NVVM handles, which don't have a wrapper class.
54"""
57# =============================================================================
58# Principal Class
59# =============================================================================
62cdef class Program:
63 """Represent a compilation machinery to process programs into
64 :class:`~cuda.core.ObjectCode`.
66 This object provides a unified interface to multiple underlying
67 compiler libraries. Compilation support is enabled for a wide
68 range of code types and compilation types.
70 Parameters
71 ----------
72 code : str | bytes | bytearray
73 The source code to compile. For C++ and PTX, must be a string.
74 For NVVM IR, can be str, bytes, or bytearray.
75 code_type : SourceCodeType | str
76 The type of source code. Must be one of ``"c++"``, ``"ptx"``, or ``"nvvm"``.
77 options : :class:`ProgramOptions`, optional
78 Options to customize the compilation process.
79 """
80 def __init__(self, code: str | bytes | bytearray, code_type: SourceCodeType | str, options: ProgramOptions | None = None):
81 Program_init(self, code, str(code_type), options) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgChnh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFh)e*ed ^dHhc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk mhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b IhDhyhoh,eAhNhLhzhGh-elhahbhchdhehfhghhhihjh.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh
83 def close(self) -> None:
84 """Destroy this program."""
85 if self._linker: 2)e*ed ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk mhBgkh:eug;evg=ewgie8e?exgje9e@eyga b yhlhahbhchdhehfhghhhihjh.e
86 self._linker.close() 2lhahbhchdhehfhghhhihjh
87 # Reset handles - the C++ shared_ptr destructor handles cleanup
88 self._h_nvrtc.reset() 2)e*ed ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk mhBgkh:eug;evg=ewgie8e?exgje9e@eyga b yhlhahbhchdhehfhghhhihjh.e
89 self._h_nvvm.reset() 2)e*ed ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk mhBgkh:eug;evg=ewgie8e?exgje9e@eyga b yhlhahbhchdhehfhghhhihjh.e
91 def compile(
92 self,
93 target_type: ObjectCodeFormatType | str,
94 name_expressions: tuple[str, ...] | list[str] = (),
95 logs: object = None,
96 *,
97 cache: ProgramCacheResource | None = None,
98 ) -> ObjectCode:
99 """Compile the program to the specified target type.
101 Parameters
102 ----------
103 target_type : ObjectCodeFormatType | str
104 The compilation target. Must be one of ``"ptx"``, ``"cubin"``, or ``"ltoir"``.
105 name_expressions : tuple | list, optional
106 Sequence of name expressions to make accessible in the compiled code.
107 Used for template instantiation and similar cases.
108 logs : object, optional
109 Object with a ``write`` method to receive compilation logs.
110 On a cache hit no compilation runs and ``logs`` receives
111 nothing -- callers that rely on log output to confirm a
112 compile happened should compile without ``cache=``.
113 cache : :class:`~cuda.core.utils.ProgramCacheResource`, optional
114 If provided, the compiled binary is looked up in ``cache`` via a
115 key derived from the program's code, options, and ``target_type``.
116 On a hit the cached bytes are wrapped in a fresh
117 :class:`~cuda.core.ObjectCode` (with the same ``target_type``
118 and ``ProgramOptions.name``) and returned without re-compiling;
119 on a miss the compile output is stored as raw bytes (the cache
120 extracts ``bytes(object_code.code)``). Passing a non-empty
121 ``name_expressions`` together with ``cache=`` raises
122 ``ValueError``: NVRTC populates
123 ``ObjectCode.symbol_mapping`` at compile time and that mapping
124 is not carried in the binary the cache stores, so cache hits
125 would silently miss ``get_kernel(name_expression)`` lookups.
126 Options that require an ``extra_digest`` (``include_path``,
127 ``pre_include``, ``pch``, ``use_pch``, ``pch_dir``, NVVM
128 ``use_libdevice=True``, or NVRTC ``options.name`` with a
129 directory component) raise ``ValueError`` via
130 :func:`~cuda.core.utils.make_program_cache_key`; for those
131 compiles, use the manual ``make_program_cache_key(...)``
132 pattern directly.
134 ``cache=`` is independent of ``ProgramOptions.no_cache``: the
135 former controls this program-level cache (compiled-output
136 reuse across calls), while ``no_cache`` is forwarded to the
137 Linker to disable its in-process JIT cache for cuLink/nvJitLink.
138 Setting ``options.no_cache=True`` does not bypass ``cache=``,
139 and vice-versa.
141 Returns
142 -------
143 :class:`~cuda.core.ObjectCode`
144 The compiled object code.
145 """
146 # Mirror Program_init's code_type normalization so callers can pass
147 # ``ObjectCodeFormatType.PTX`` or ``"PTX"`` and get the same routing
148 # / cache key as the lowercase string. ``Program_compile_nvrtc``
149 # keys on lowercase ``target_type`` and ``make_program_cache_key``
150 # lowercases too.
151 target_type = str(target_type).lower() 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtg)e*ed ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Bgkh7e:eug;evg=ewgie8e?exgje9e@eyga b oh,e-eahbhchdhehfhghhhihjh.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh
153 if cache is None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtg)e*ed ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Bgkh7e:eug;evg=ewgie8e?exgje9e@eyga b oh,e-eahbhchdhehfhghhhihjh.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh
154 return _program_compile_uncached(self, target_type, name_expressions, logs) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtg)e*ed ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Bgkh7e:eug;evg=ewgie8e?exgje9e@eyga b oh,e-eahbhchdhehfhghhhihjh.eBh
156 # Deferred import to avoid a circular import between _program and
157 # cuda.core.utils._program_cache (the cache module already imports
158 # ProgramOptions from this module). Import from the leaf module so
159 # tests that monkeypatch make_program_cache_key via that path
160 # intercept reliably.
161 from cuda.core.utils._program_cache import ( 2EgCgDgFgR IgGguhqhrhshJgxhHgS
162 ProgramCacheResource,
163 make_program_cache_key,
164 )
166 if not isinstance(cache, ProgramCacheResource): 2EgCgDgFgR IgGguhqhrhshJgxhHgS
167 raise TypeError( 2uh
168 "cache must be an instance of " 2uh
169 "cuda.core.utils.ProgramCacheResource; got "
170 f"{type(cache).__name__}" 2uh
171 )
173 # ``name_expressions`` is incompatible with the cache: NVRTC
174 # populates ``ObjectCode.symbol_mapping`` from name-expression
175 # mangling at compile time, and that mapping isn't carried in
176 # the binary bytes the cache stores. Without this guard the
177 # first call (cache miss) would return an ObjectCode with
178 # symbol_mapping populated, while every subsequent call (hit)
179 # would return one without -- silently breaking later
180 # ``get_kernel(name_expression)`` lookups that work on the
181 # uncached path. Fail loud here instead.
182 if name_expressions: 2EgCgDgFgR IgGgqhrhshJgxhHgS
183 raise ValueError( 2xh
184 "Program.compile(cache=...) does not support name_expressions: "
185 "ObjectCode.symbol_mapping is populated by NVRTC at compile "
186 "time and is not preserved across a cache round-trip, so cache "
187 "hits would silently break get_kernel(name_expression) lookups "
188 "that the uncached path supports. Compile without cache= when "
189 "name_expressions are needed, or look up mangled symbols by "
190 "hand from the cached ObjectCode."
191 )
193 # ``self._code`` is always stored as bytes (see ``Program_init``),
194 # but ``make_program_cache_key`` only accepts bytes when
195 # ``code_type == "nvvm"`` -- c++/ptx must be ``str``. The bytes
196 # came from ``code.encode()`` on a ``str`` Program_init validated
197 # via ``assert_type(code, str)``, so this round-trip is always
198 # safe; no try/except needed.
199 code_for_key = self._code if self._code_type == "nvvm" else self._code.decode("utf-8") 2EgCgDgFgR IgGgqhrhshJgHgS
201 key = make_program_cache_key( 2EgCgDgFgR IgGgqhrhshJgHgS
202 code=code_for_key,
203 code_type=self._code_type,
204 options=self._options,
205 target_type=target_type, 2EgCgDgFgR IgGgqhrhshJgHgS
206 )
207 hit_bytes = cache.get(key) 2EgCgDgFgR IgGgJgHgS
208 if hit_bytes is not None: 2EgCgDgFgR IgGgHgS
209 # The uncached NVRTC path warns when the active driver can't
210 # load freshly-generated PTX; that loadability is a property
211 # of the driver, not of how the bytes were produced, so the
212 # warning applies equally to cached PTX. Mirror it here so a
213 # cache hit doesn't silently hide an incompatibility that the
214 # uncached call would have surfaced.
215 if ( 2EgCgDgFgR S
216 self._backend == "NVRTC" 2EgCgDgFgR S
217 and target_type == "ptx" 2EgCgDgFgR S
218 and not _can_load_generated_ptx() 2CgDg
219 ):
220 warn( 2Cg
221 "The CUDA driver version is older than the backend version. "
222 "The generated ptx will not be loadable by the current driver.",
223 stacklevel=2,
224 category=RuntimeWarning, 2Cg
225 )
226 return ObjectCode._init(hit_bytes, target_type, name=self._options.name) 2EgCgDgFgR S
227 compiled = _program_compile_uncached(self, target_type, name_expressions, logs) 2EgR IgGgHgS
228 cache[key] = compiled 2EgR GgHgS
229 return compiled 2EgR GgS
231 @property
232 def pch_status(self) -> PCHStatusType | None:
233 """PCH creation outcome from the most recent :meth:`compile` call.
235 Possible values:
237 * ``"created"`` — PCH file was written successfully.
238 * ``"not_attempted"`` — PCH creation was not attempted (e.g. the
239 compiler decided not to, or automatic PCH processing skipped it).
240 * ``"failed"`` — an error prevented PCH creation.
241 * ``None`` — PCH was not requested, the program has not been
242 compiled yet, the backend is not NVRTC (e.g. PTX or NVVM),
243 or the NVRTC bindings are too old to report status.
245 When ``create_pch`` is set in :class:`ProgramOptions` and the PCH
246 heap is too small, :meth:`compile` automatically resizes the heap
247 and retries, so ``"created"`` should be the common outcome.
249 .. note::
251 PCH is only supported for ``code_type="c++"`` programs that
252 use the NVRTC backend. For PTX and NVVM programs this property
253 always returns ``None``.
254 """
255 if self._pch_status is None: 2d ^d
256 return None 2d ^d
257 return PCHStatusType(self._pch_status) 1d
259 @property
260 def backend(self) -> CompilerBackendType:
261 """Return this Program instance's underlying :class:`CompilerBackendType`."""
262 return CompilerBackendType(self._backend) 2)e*ec _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6ehemh7e:eug;evg=ewgie8e?exgje9e@eyga b Dhzhahbhchdhehfhghhhihjh
264 @property
265 def handle(self) -> ProgramHandleT:
266 """Return the underlying handle object.
268 .. note::
270 The type of the returned object depends on the backend.
272 .. caution::
274 This handle is a Python object. To get the memory address of the underlying C
275 handle, call ``int(Program.handle)``.
276 """
277 if self._backend == "NVRTC": 2mh7eAhzhlh
278 return as_py(self._h_nvrtc) 2Ahzh
279 elif self._backend == "NVVM": 2mh7elh
280 return as_py(self._h_nvvm) # returns int (NVVM uses raw integers) 2mh7e
281 else:
282 return self._linker.handle 2lh
284 def __repr__(self) -> str:
285 return f"<Program backend='{self._backend}'>" 2Chnh7e
288# =============================================================================
289# Other Public Classes
290# =============================================================================
293@dataclass
294class ProgramOptions:
295 """Customizable options for configuring :class:`Program`.
297 Attributes
298 ----------
299 name : str, optional
300 Name of the program. If the compilation succeeds, the name is passed down to the generated :class:`ObjectCode`.
301 arch : str, optional
302 Pass the SM architecture value, such as ``sm_<CC>`` (for generating CUBIN) or
303 ``compute_<CC>`` (for generating PTX). If not provided, the current device's architecture
304 will be used.
305 relocatable_device_code : bool, optional
306 Enable (disable) the generation of relocatable device code.
307 Default: False
308 extensible_whole_program : bool, optional
309 Do extensible whole program compilation of device code.
310 Default: False
311 debug : bool, optional
312 Generate debug information. If --dopt is not specified, then turns off all optimizations.
313 Default: False
314 lineinfo: bool, optional
315 Generate line-number information.
316 Default: False
317 device_code_optimize : bool, optional
318 Enable device code optimization. When specified along with '-G', enables limited debug information generation
319 for optimized device code.
320 Default: None
321 ptxas_options : Union[str, list[str]], optional
322 Specify one or more options directly to ptxas, the PTX optimizing assembler. Options should be strings.
323 For example ["-v", "-O2"].
324 Default: None
325 max_register_count : int, optional
326 Specify the maximum amount of registers that GPU functions can use.
327 Default: None
328 ftz : bool, optional
329 When performing single-precision floating-point operations, flush denormal values to zero or preserve denormal
330 values.
331 Default: False
332 prec_sqrt : bool, optional
333 For single-precision floating-point square root, use IEEE round-to-nearest mode or use a faster approximation.
334 Default: True
335 prec_div : bool, optional
336 For single-precision floating-point division and reciprocals, use IEEE round-to-nearest mode or use a faster
337 approximation.
338 Default: True
339 fma : bool, optional
340 Enables (disables) the contraction of floating-point multiplies and adds/subtracts into floating-point
341 multiply-add operations.
342 Default: True
343 use_fast_math : bool, optional
344 Make use of fast math operations.
345 Default: False
346 extra_device_vectorization : bool, optional
347 Enables more aggressive device code vectorization in the NVVM optimizer.
348 Default: False
349 link_time_optimization : bool, optional
350 Generate intermediate code for later link-time optimization.
351 Default: False
352 gen_opt_lto : bool, optional
353 Run the optimizer passes before generating the LTO IR.
354 Default: False
355 define_macro : Union[str, tuple[str, str], list[Union[str, tuple[str, str]]]], optional
356 Predefine a macro. Can be either a string, in which case that macro will be set to 1, a 2 element tuple of
357 strings, in which case the first element is defined as the second, or a list of strings or tuples.
358 Default: None
359 undefine_macro : Union[str, list[str]], optional
360 Cancel any previous definition of a macro, or list of macros.
361 Default: None
362 include_path : Union[str, list[str]], optional
363 Add the directory or directories to the list of directories to be searched for headers.
364 Default: None
365 pre_include : Union[str, list[str]], optional
366 Preinclude one or more headers during preprocessing. Can be either a string or a list of strings.
367 Default: None
368 no_source_include : bool, optional
369 Disable the default behavior of adding the directory of each input source to the include path.
370 Default: False
371 std : str, optional
372 Set language dialect to C++03, C++11, C++14, C++17 or C++20.
373 Default: c++17
374 builtin_move_forward : bool, optional
375 Provide builtin definitions of std::move and std::forward.
376 Default: True
377 builtin_initializer_list : bool, optional
378 Provide builtin definitions of std::initializer_list class and member functions.
379 Default: True
380 disable_warnings : bool, optional
381 Inhibit all warning messages.
382 Default: False
383 restrict : bool, optional
384 Programmer assertion that all kernel pointer parameters are restrict pointers.
385 Default: False
386 device_as_default_execution_space : bool, optional
387 Treat entities with no execution space annotation as __device__ entities.
388 Default: False
389 device_int128 : bool, optional
390 Allow the __int128 type in device code.
391 Default: False
392 optimization_info : str, optional
393 Provide optimization reports for the specified kind of optimization.
394 Default: None
395 no_display_error_number : bool, optional
396 Disable the display of a diagnostic number for warning messages.
397 Default: False
398 diag_error : Union[int, list[int]], optional
399 Emit error for a specified diagnostic message number or comma-separated list of numbers.
400 Default: None
401 diag_suppress : Union[int, list[int]], optional
402 Suppress a specified diagnostic message number or comma-separated list of numbers.
403 Default: None
404 diag_warn : Union[int, list[int]], optional
405 Emit warning for a specified diagnostic message number or comma-separated list of numbers.
406 Default: None
407 brief_diagnostics : bool, optional
408 Disable or enable showing source line and column info in a diagnostic.
409 Default: False
410 time : str, optional
411 Generate a CSV table with the time taken by each compilation phase.
412 Default: None
413 split_compile : int, optional
414 Perform compiler optimizations in parallel.
415 Default: 1
416 fdevice_syntax_only : bool, optional
417 Ends device compilation after front-end syntax checking.
418 Default: False
419 minimal : bool, optional
420 Omit certain language features to reduce compile time for small programs.
421 Default: False
422 no_cache : bool, optional
423 Disable compiler caching.
424 Default: False
425 fdevice_time_trace : str, optional
426 Generate time trace JSON for profiling compilation (NVRTC only).
427 Default: None
428 device_float128 : bool, optional
429 Allow __float128 type in device code (NVRTC only).
430 Default: False
431 frandom_seed : str, optional
432 Set random seed for randomized optimizations (NVRTC only).
433 Default: None
434 ofast_compile : str, optional
435 Fast compilation mode: "0", "min", "mid", or "max" (NVRTC only).
436 Default: None
437 pch : bool, optional
438 Use default precompiled header (NVRTC only, CUDA 12.8+).
439 Default: False
440 create_pch : str, optional
441 Create precompiled header file (NVRTC only, CUDA 12.8+).
442 Default: None
443 use_pch : str, optional
444 Use specific precompiled header file (NVRTC only, CUDA 12.8+).
445 Default: None
446 pch_dir : str, optional
447 PCH directory location (NVRTC only, CUDA 12.8+).
448 Default: None
449 pch_verbose : bool, optional
450 Verbose PCH output (NVRTC only, CUDA 12.8+).
451 Default: False
452 pch_messages : bool, optional
453 Control PCH diagnostic messages (NVRTC only, CUDA 12.8+).
454 Default: False
455 instantiate_templates_in_pch : bool, optional
456 Control template instantiation in PCH (NVRTC only, CUDA 12.8+).
457 Default: False
458 extra_sources : list of 2-tuples or tuple of 2-tuples, optional
459 Additional NVVM IR modules to compile together with the main program, specified as
460 ``((name1, source1), (name2, source2), ...)``. Each name is a string identifier used
461 in diagnostic messages. Each source can be a string (textual LLVM IR) or bytes/bytearray
462 (LLVM bitcode). Only supported for the NVVM backend.
463 Default: None
464 use_libdevice : bool, optional
465 Load NVIDIA's `libdevice <https://docs.nvidia.com/cuda/libdevice-users-guide/>`_
466 math builtins library. Only supported for the NVVM backend.
467 Default: False
468 """
470 name: str | None = "default_program"
471 arch: str | None = None
472 relocatable_device_code: bool | None = None
473 extensible_whole_program: bool | None = None
474 debug: bool | None = None
475 lineinfo: bool | None = None
476 device_code_optimize: bool | None = None
477 ptxas_options: str | list[str] | tuple[str] | None = None
478 max_register_count: int | None = None
479 ftz: bool | None = None
480 prec_sqrt: bool | None = None
481 prec_div: bool | None = None
482 fma: bool | None = None
483 use_fast_math: bool | None = None
484 extra_device_vectorization: bool | None = None
485 link_time_optimization: bool | None = None
486 gen_opt_lto: bool | None = None
487 define_macro: str | tuple[str, str] | list[str | tuple[str, str]] | tuple[str | tuple[str, str], ...] | None = None
488 undefine_macro: str | list[str] | tuple[str] | None = None
489 include_path: str | list[str] | tuple[str] | None = None
490 pre_include: str | list[str] | tuple[str] | None = None
491 no_source_include: bool | None = None
492 std: str | None = None
493 builtin_move_forward: bool | None = None
494 builtin_initializer_list: bool | None = None
495 disable_warnings: bool | None = None
496 restrict: bool | None = None
497 device_as_default_execution_space: bool | None = None
498 device_int128: bool | None = None
499 optimization_info: str | None = None
500 no_display_error_number: bool | None = None
501 diag_error: int | list[int] | tuple[int] | None = None
502 diag_suppress: int | list[int] | tuple[int] | None = None
503 diag_warn: int | list[int] | tuple[int] | None = None
504 brief_diagnostics: bool | None = None
505 time: str | None = None
506 split_compile: int | None = None
507 fdevice_syntax_only: bool | None = None
508 minimal: bool | None = None
509 no_cache: bool | None = None
510 fdevice_time_trace: str | None = None
511 device_float128: bool | None = None
512 frandom_seed: str | None = None
513 ofast_compile: str | None = None
514 pch: bool | None = None
515 create_pch: str | None = None
516 use_pch: str | None = None
517 pch_dir: str | None = None
518 pch_verbose: bool | None = None
519 pch_messages: bool | None = None
520 instantiate_templates_in_pch: bool | None = None
521 extra_sources: list[tuple[str, str | bytes | bytearray]] | tuple[tuple[str, str | bytes | bytearray], ...] | None = None
522 use_libdevice: bool | None = None # For libdevice execution
523 numba_debug: bool | None = None # Custom option for Numba debugging
525 def __post_init__(self) -> None:
526 self._name = self.name.encode() 2zg8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgChnh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFh)e*ed ^dHhc _dUhVhOhRhYhAgk mhBgkh7e1ga b IhJhKhZhMhDhyhoh,eAhNhLhzhXhKg~gPgphthvhwh0hGh-elh.eQgLgMgNgRgOgSg1h2h3h4h5hTg3g4g5g6g6h7h7g8g9g!g#g2g$g%g'gUg8h9h!h(gVg#hWg$h)g%h*g+g,gXg'h(h-g.g/g:g;g{g|g}gYgZg)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikilimini=goipiqirisitiuiviwixiyiziShTh?g@g[g]gAiBiCiDiEiFiGiHiIiJiKiLi^gMi_g0g`gNiEgCgDgFgR IgGguhqhrhshJgxhHgS Bh
527 # Set arch to default if not provided
528 if self.arch is None: 2zg8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgChnh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFh)e*ed ^dHhc _dUhVhOhRhYhAgk mhBgkh7e1ga b IhJhKhZhMhDhyhoh,eAhNhLhzhXhKg~gPgphthvhwh0hGh-elh.eQgLgMgNgRgOgSg1h2h3h4h5hTg3g4g5g6g6h7h7g8g9g!g#g2g$g%g'gUg8h9h!h(gVg#hWg$h)g%h*g+g,gXg'h(h-g.g/g:g;g{g|g}gYgZg)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikilimini=goipiqirisitiuiviwixiyiziShTh?g@g[g]gAiBiCiDiEiFiGiHiIiJiKiLi^gMi_g0g`gNiEgCgDgFgR IgGguhqhrhshJgxhHgS Bh
529 self.arch = f"sm_{Device().arch}" 2zg`ekelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|bV W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c|e}e~eafbfcfdfefffgfhfifjfkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfzfAfBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfRfSfTfUfVfWfXfYfZf0f1f2f3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*f+f,f-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f~fagbgcgdgegfgChnhgghgigjgkglgmgngogpgqgrgEhsgtgFhd ^dHhc _dAgk mhBgkh7ea b IhDhyhoh,eAhNhLhzhGh-elh.e
530 if self.extra_sources is not None: 2zg8 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgChnh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFh)e*ed ^dHhc _dUhVhOhRhYhAgk mhBgkh7e1ga b IhJhKhZhMhDhyhoh,eAhNhLhzhXhKg~gPgphthvhwh0hGh-elh.eQgLgMgNgRgOgSg1h2h3h4h5hTg3g4g5g6g6h7h7g8g9g!g#g2g$g%g'gUg8h9h!h(gVg#hWg$h)g%h*g+g,gXg'h(h-g.g/g:g;g{g|g}gYgZg)h*h+h,h-h.h/h:h;h=h?h@h[h]h^h_h`h{h|h}h~haibicidieifigihiiijikilimini=goipiqirisitiuiviwixiyiziShTh?g@g[g]gAiBiCiDiEiFiGiHiIiJiKiLi^gMi_g0g`gNiEgCgDgFgR IgGguhqhrhshJgxhHgS Bh
531 if not is_sequence(self.extra_sources): 2HhUhVhOhRhYha b JhKhMhGhShTh
532 raise TypeError( 2Yh
533 "extra_sources must be a sequence of 2-tuples: ((name1, source1), (name2, source2), ...)"
534 )
535 for i, module in enumerate(self.extra_sources): 2HhUhVhOhRha b JhKhMhGhShTh
536 if not isinstance(module, tuple) or len(module) != 2: 2HhUhVhOhRha b JhKhMhGhShTh
537 raise TypeError( 2Vh
538 f"Each extra module must be a 2-tuple (name, source)" 2Vh
539 f", got {type(module).__name__} at index {i}" 2Vh
540 )
542 module_name, module_source = module 2HhUhOhRha b JhKhMhGhShTh
544 if not isinstance(module_name, str): 2HhUhOhRha b JhKhMhGhShTh
545 raise TypeError(f"Module name at index {i} must be a string, got {type(module_name).__name__}") 2Uh
547 if not isinstance(module_source, (str, bytes, bytearray)): 2HhOhRha b JhKhMhGhShTh
548 raise TypeError( 2Oh
549 f"Module source at index {i} must be str (textual LLVM IR), bytes (textual LLVM IR or bitcode), " 2Oh
550 f"or bytearray, got {type(module_source).__name__}" 2Oh
551 )
553 if len(module_source) == 0: 2HhRha b JhKhMhGhShTh
554 raise ValueError(f"Module source for '{module_name}' (index {i}) cannot be empty") 2Rh
556 def _prepare_nvrtc_options(self) -> list[bytes]:
557 return _prepare_nvrtc_options_impl(self) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
559 def _prepare_nvvm_options(self, as_bytes: bool = True) -> list[bytes] | list[str]:
560 return _prepare_nvvm_options_impl(self, as_bytes) 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
562 def as_bytes(self, backend: CompilerBackendType | str, target_type: ObjectCodeFormatType | str | None = None) -> list[bytes]:
563 """Convert program options to bytes format for the specified backend.
565 This method transforms the program options into a format suitable for the
566 specified compiler backend. Different backends may use different option names
567 and formats even for the same conceptual options.
569 Parameters
570 ----------
571 backend : CompilerBackendType | str
572 The compiler backend to prepare options for. Must be either "nvrtc" or "nvvm".
573 target_type : ObjectCodeFormatType | str, optional
574 The compilation target type (e.g., "ptx", "cubin", "ltoir"). Some backends
575 require additional options based on the target type.
577 Returns
578 -------
579 list[bytes]
580 List of option strings encoded as bytes.
582 Raises
583 ------
584 ValueError
585 If an unknown backend is specified.
586 CUDAError
587 If an option incompatible with the specified backend is set.
589 Examples
590 --------
591 >>> options = ProgramOptions(arch="sm_80", debug=True)
592 >>> nvrtc_options = options.as_bytes("nvrtc")
593 """
594 backend = str(backend).lower() 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtg)e*ed ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Bg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ,eXhKg~gPgphthvhwh-e.eQgLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'gUg(gVgWg)g*g+g,gXg-g.g/g:g;g{g|g}gYgZg=g?g@g[g]g^g_g0g`gEgCgDgFgR IgGgJgHgS
595 if backend == "nvrtc": 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtg)e*ed ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Bg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ,eXhKg~gPgphthvhwh-e.eQgLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'gUg(gVgWg)g*g+g,gXg-g.g/g:g;g{g|g}gYgZg=g?g@g[g]g^g_g0g`gEgCgDgFgR IgGgJgHgS
596 return self._prepare_nvrtc_options() 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
597 elif backend == "nvvm": 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b Xh~gPgQgUgVgWgXg{g|g}gYgZg0g
598 options = self._prepare_nvvm_options(as_bytes=True) 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
599 if target_type == "ltoir" and b"-gen-lto" not in options: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b PgQgUgVgWgXg{g|g}gYgZg0g
600 options.append(b"-gen-lto") 2)e*e:e;e=eie?eje@ea
601 return options 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b PgQgUgVgWgXg{g|g}gYgZg0g
602 else:
603 raise ValueError(f"Unknown backend '{backend}'. Must be one of: 'nvrtc', 'nvvm'") 2Xh
605 def __repr__(self) -> str:
606 return f"ProgramOptions(name={self.name!r}, arch={self.arch!r})" 20h
608 def _prepare_extra_sources_bytes(self) -> list[tuple[bytes, bytes]] | None:
609 """Convert extra_sources to bytes format for NVVM."""
610 if self.extra_sources is None: 2a b JhKhZhMh
611 return None 2Zh
613 result = [] 2a b JhKhMh
614 for module_name, module_source in self.extra_sources: 2a b JhKhMh
615 name_bytes = module_name.encode("utf-8") 2a b JhKhMh
616 if isinstance(module_source, str): 2a b JhKhMh
617 source_bytes = module_source.encode("utf-8") 2a b Mh
618 elif isinstance(module_source, bytearray): 2JhKh
619 source_bytes = bytes(module_source) 2Jh
620 else:
621 source_bytes = module_source 2Kh
622 result.append((name_bytes, source_bytes)) 2a b JhKhMh
623 return result 2a b JhKhMh
626# =============================================================================
627# Private Classes and Helper Functions
628# =============================================================================
631def _program_compile_uncached(program, target_type, name_expressions, logs):
632 """Run ``Program_compile`` without the cache wrapper.
634 Module-level Python function so tests can monkeypatch it from
635 ``cuda.core._program`` to avoid invoking NVRTC when exercising the cache
636 wrapper in :meth:`Program.compile`. ``Program`` itself is a ``cdef class``
637 and its methods cannot be reassigned from Python, so the seam must live
638 outside the class.
639 """
640 return Program_compile(program, target_type, name_expressions, logs) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtg)e*ed ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Bgkh7e:eug;evg=ewgie8e?exgje9e@eyga b oh,e-eahbhchdhehfhghhhihjh.eR S
643# Module-level state for NVVM lazy loading
644_nvvm_module = None
645_nvvm_import_attempted = False
648def _get_nvvm_module() -> object:
649 """Get the NVVM module, importing it lazily with availability checks."""
650 global _nvvm_module, _nvvm_import_attempted
652 if _nvvm_import_attempted: 2zgnhPhQhWh)e*emhBgkhOi7e:eug;evg=ewgie8e?ePixgje9e@eyga b IhQgUgVgWgXgYgZg0g
653 if _nvvm_module is None: 2nh)e*emhBgkhOi7e:eug;evg=ewgie8e?ePixgje9e@eyga b IhQgUgVgWgXgYgZg0g
654 raise RuntimeError("NVVM module is not available (previous import attempt failed)")
655 return _nvvm_module 2nh)e*emhBgkhOi7e:eug;evg=ewgie8e?ePixgje9e@eyga b IhQgUgVgWgXgYgZg0g
657 _nvvm_import_attempted = True 2zgPhQhWh
659 try: 2zgPhQhWh
660 version = binding_version() 2zgPhQhWh
661 if version < (12, 9, 0): 2zgPhQhWh
662 raise RuntimeError(
663 f"NVVM bindings require cuda-bindings >= 12.9.0, but found {'.'.join(map(str, version))}. "
664 "Please update cuda-bindings to use NVVM features."
665 )
667 nvvm = _optional_cuda_import( 2zgPhQhWh
668 "cuda.bindings.nvvm",
669 probe_function=lambda module: module.version(), # probe triggers libnvvm load 2zgPhQhWh
670 )
671 if nvvm is None: 2zgPhQh
672 raise RuntimeError( 2PhQh
673 "NVVM support is unavailable: cuda.bindings.nvvm is missing or libnvvm cannot be loaded."
674 )
676 _nvvm_module = nvvm
677 return _nvvm_module
679 except RuntimeError: 2PhQhWh
680 _nvvm_module = None 2PhQh
681 raise 2PhQh
683def _find_libdevice_path() -> object:
684 """Find libdevice*.bc for NVVM compilation using cuda.pathfinder."""
685 from cuda.pathfinder import find_bitcode_lib 2Vi
686 return find_bitcode_lib("device") 2Vi
691cdef inline bint _process_define_macro_inner(list options, object macro) except? -1:
692 """Process a single define macro, returning True if successful."""
693 if isinstance(macro, str): 2U Q h i phthvhwh
694 options.append(f"--define-macro={macro}") 1U
695 return True 1U
696 if isinstance(macro, tuple): 2Q h i phthvhwh
697 if len(macro) != 2 or any(not isinstance(val, str) for val in macro): 2Q h i phvhwh
698 raise RuntimeError(f"Expected define_macro tuple[str, str], got {macro}") 2phvhwh
699 options.append(f"--define-macro={macro[0]}={macro[1]}") 1Qhi
700 return True 1Qhi
701 return False 2h i phth
704cdef inline void _process_define_macro(list options, object macro) except *:
705 """Process define_macro option which can be str, tuple, or list thereof."""
706 union_type = "Union[str, tuple[str, str]]" 2U Q h i phthvhwh
707 if _process_define_macro_inner(options, macro): 2U Q h i phthvhwh
708 return 1UQ
709 if is_nested_sequence(macro): 2h i phth
710 for seq_macro in macro: 2h i ph
711 if not _process_define_macro_inner(options, seq_macro): 2h i ph
712 raise RuntimeError(f"Expected define_macro {union_type}, got {seq_macro}")
713 return 1hi
714 raise RuntimeError(f"Expected define_macro {union_type}, list[{union_type}], got {macro}") 2th
717cpdef bint _can_load_generated_ptx() except? -1:
718 """Check if the driver can load PTX generated by the current NVRTC version."""
719 drv = driver_version() 2kelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeRee f g QiN RiO SiP TiUid ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-eCgDg
720 nvrtc_major, nvrtc_minor = handle_return(nvrtc.nvrtcVersion()) 2kelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeRee f g QiN RiO SiP TiUid ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-eCgDg
721 return (nvrtc_major, nvrtc_minor, 0) <= drv 2kelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeRee f g QiN RiO SiP TiUid ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-eCgDg
724cdef inline object _translate_program_options(object options):
725 """Translate ProgramOptions to LinkerOptions for PTX compilation."""
726 return LinkerOptions( 2lhahbhchdhehfhghhhihjh
727 name=options.name, 2lhahbhchdhehfhghhhihjh
728 arch=options.arch, 2lhahbhchdhehfhghhhihjh
729 max_register_count=options.max_register_count, 2lhahbhchdhehfhghhhihjh
730 time=options.time, 2lhahbhchdhehfhghhhihjh
731 link_time_optimization=options.link_time_optimization, 2lhahbhchdhehfhghhhihjh
732 debug=options.debug, 2lhahbhchdhehfhghhhihjh
733 lineinfo=options.lineinfo, 2lhahbhchdhehfhghhhihjh
734 ftz=options.ftz, 2lhahbhchdhehfhghhhihjh
735 prec_div=options.prec_div, 2lhahbhchdhehfhghhhihjh
736 prec_sqrt=options.prec_sqrt, 2lhahbhchdhehfhghhhihjh
737 fma=options.fma, 2lhahbhchdhehfhghhhihjh
738 split_compile=options.split_compile, 2lhahbhchdhehfhghhhihjh
739 ptxas_options=options.ptxas_options, 2lhahbhchdhehfhghhhihjh
740 no_cache=options.no_cache, 2lhahbhchdhehfhghhhihjh
741 numba_debug = options.numba_debug 2lhahbhchdhehfhghhhihjh
742 )
745cdef inline int Program_init(Program self, object code, str code_type, object options) except -1:
746 """Initialize a Program instance."""
747 cdef cynvrtc.nvrtcProgram nvrtc_prog
748 cdef cynvvm.nvvmProgram nvvm_prog
749 cdef bytes code_bytes
750 cdef const char* code_ptr
751 cdef const char* name_ptr
752 cdef size_t code_len
753 cdef bytes module_bytes
754 cdef const char* module_ptr
755 cdef size_t module_len
757 self._options = options = check_or_create_options(ProgramOptions, options, "Program options") 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgChnh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFh)e*ed ^dHhc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk mhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b IhDhyhoh,eAhNhLhzhGh-elhahbhchdhehfhghhhihjh.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh
758 code_type = code_type.lower() 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgChnh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFh)e*ed ^dHhc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk mhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b IhDhyhoh,eAhNhLhzhGh-elhahbhchdhehfhghhhihjh.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh
759 self._code_type = code_type 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgChnh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFh)e*ed ^dHhc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk mhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b IhDhyhoh,eAhNhLhzhGh-elhahbhchdhehfhghhhihjh.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh
760 self._compile_lock = threading.Lock() 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgChnh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFh)e*ed ^dHhc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk mhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b IhDhyhoh,eAhNhLhzhGh-elhahbhchdhehfhghhhihjh.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh
761 self._use_libdevice = False 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgChnh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFh)e*ed ^dHhc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk mhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b IhDhyhoh,eAhNhLhzhGh-elhahbhchdhehfhghhhihjh.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh
762 self._libdevice_added = False 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgChnh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFh)e*ed ^dHhc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk mhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b IhDhyhoh,eAhNhLhzhGh-elhahbhchdhehfhghhhihjh.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh
764 self._pch_status = None 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgChnh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFh)e*ed ^dHhc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk mhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b IhDhyhoh,eAhNhLhzhGh-elhahbhchdhehfhghhhihjh.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh
766 if code_type == "c++": 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgChnh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFh)e*ed ^dHhc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk mhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b IhDhyhoh,eAhNhLhzhGh-elhahbhchdhehfhghhhihjh.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh
767 assert_type(code, str) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgCh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFhd ^dHhc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Dhyhoh,eAhNhzh-e.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh
768 if options.extra_sources is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgCh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFhd ^dHhc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Dhyhoh,eAhzh-e.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh
769 raise ValueError("extra_sources is not supported by the NVRTC backend (C++ code_type)") 2Hh
771 # TODO: support pre-loaded headers & include names
772 code_bytes = code.encode() 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgCh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFhd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Dhyhoh,eAhzh-e.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh
773 code_ptr = <const char*>code_bytes 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgCh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFhd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Dhyhoh,eAhzh-e.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh
774 name_ptr = <const char*>options._name 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgCh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFhd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Dhyhoh,eAhzh-e.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh
776 with nogil: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgCh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFhd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Dhyhoh,eAhzh-e.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh
777 HANDLE_RETURN_NVRTC(NULL, cynvrtc.nvrtcCreateProgram( 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgCh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFhd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Dhyhoh,eAhzh-e.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh
778 &nvrtc_prog, code_ptr, name_ptr, 0, NULL, NULL))
779 self._h_nvrtc = create_nvrtc_program_handle(nvrtc_prog) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgCh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFhd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Dhyhoh,eAhzh-e.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh
780 self._code = code_bytes 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgCh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFhd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Dhyhoh,eAhzh-e.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh
781 self._backend = str(CompilerBackendType.NVRTC) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgCh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFhd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Dhyhoh,eAhzh-e.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh
782 self._linker = None 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgCh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFhd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Dhyhoh,eAhzh-e.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh
784 elif code_type == "ptx": 2nh)e*emhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b IhLhGhlhahbhchdhehfhghhhihjh
785 assert_type(code, str) 2Ghlhahbhchdhehfhghhhihjh
786 if options.extra_sources is not None: 2Ghlhahbhchdhehfhghhhihjh
787 raise ValueError("extra_sources is not supported by the PTX backend.") 2Gh
788 code_bytes = code.encode() 2lhahbhchdhehfhghhhihjh
789 self._code = code_bytes 2lhahbhchdhehfhghhhihjh
790 self._linker = Linker( 2lhahbhchdhehfhghhhihjh
791 ObjectCode._init(code_bytes, code_type), options=_translate_program_options(options) 2lhahbhchdhehfhghhhihjh
792 )
793 self._backend = str(Linker.which_backend()) 2lhahbhchdhehfhghhhihjh
795 elif code_type == "nvvm": 2nh)e*emhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b IhLh
796 _get_nvvm_module() # Validate NVVM availability 2nh)e*emhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b Ih
797 if isinstance(code, str): 2nh)e*emhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b Ih
798 code = code.encode("utf-8") 2nhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b
799 elif not isinstance(code, (bytes, bytearray)): 2)e*emhIh
800 raise TypeError("NVVM IR code must be provided as str, bytes, or bytearray") 2Ih
801 self._code = bytes(code) # Coerce bytearray -> bytes so retention type is stable 2nh)e*emhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b
803 # Use self._code (strictly bytes) for the C pointer so a bytearray
804 # input doesn't trip the `<bytes>code` cast at runtime.
805 code_ptr = <const char*>self._code 2nh)e*emhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b
806 name_ptr = <const char*>options._name 2nh)e*emhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b
807 code_len = len(self._code) 2nh)e*emhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b
809 with nogil: 2nh)e*emhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b
810 HANDLE_RETURN_NVVM(NULL, cynvvm.nvvmCreateProgram(&nvvm_prog)) 2nh)e*emhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b
811 self._h_nvvm = create_nvvm_program_handle(nvvm_prog) # RAII from here 2nh)e*emhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b
812 with nogil: 2nh)e*emhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b
813 HANDLE_RETURN_NVVM(nvvm_prog, cynvvm.nvvmAddModuleToProgram(nvvm_prog, code_ptr, code_len, name_ptr)) 2nh)e*emhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b
815 # Add extra modules if provided
816 if options.extra_sources is not None: 2nh)e*emhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b
817 extra_sources_bytes = options._prepare_extra_sources_bytes() 1ab
818 for module_name_bytes, module_bytes in extra_sources_bytes: 1ab
819 module_ptr = <const char*>module_bytes 1ab
820 module_len = len(module_bytes) 1ab
821 module_name_ptr = <const char*>module_name_bytes 1ab
822 with nogil: 1ab
823 HANDLE_RETURN_NVVM(nvvm_prog, cynvvm.nvvmAddModuleToProgram( 1ab
824 nvvm_prog, module_ptr, module_len, module_name_ptr))
826 # Store use_libdevice flag
827 if options.use_libdevice: 2nh)e*emhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b
828 self._use_libdevice = True
830 self._backend = str(CompilerBackendType.NVVM) 2nh)e*emhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b
831 self._linker = None 2nh)e*emhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b
833 else:
834 supported_code_types = tuple(x.value for x in SourceCodeType) 2Lh
835 if options.use_libdevice: 2Lh
836 raise ValueError("use_libdevice is only supported by the NVVM backend")
837 raise RuntimeError(f"Unsupported {code_type=} ({supported_code_types=})") 2Lh
839 return 0 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfgChnh)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drgEh[dsg]dtgFh)e*ed ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk mhBgkh7e:eug;evg=ewgie8e?exgje9e@eyga b Dhyhoh,eAhzh-elhahbhchdhehfhghhhihjh.eEgCgDgFgR IgGguhqhrhshJgxhHgS Bh
842cdef object _nvrtc_compile_and_extract(
843 cynvrtc.nvrtcProgram prog, str target_type, object name_expressions,
844 object logs, list options_list, str name,
845):
846 """Run nvrtcCompileProgram on *prog* and extract the output.
848 This is the inner compile+extract loop, factored out so the PCH
849 auto-retry path can call it on a fresh program handle.
850 """
851 cdef size_t output_size = 0 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e.eR S
852 cdef size_t logsize = 0 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e.eR S
853 cdef vector[const char*] options_vec
854 cdef char* data_ptr = NULL 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e.eR S
855 cdef bytes name_bytes
856 cdef const char* name_ptr = NULL 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e.eR S
857 cdef const char* lowered_name = NULL 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e.eR S
858 cdef dict symbol_mapping = {} 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e.eR S
860 # Add name expressions before compilation
861 if name_expressions: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e.eR S
862 for n in name_expressions: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8bl 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 M 9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdY Z cdddedfdgdhdidjdkdldmdndodpdqd0 1 rdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUd2 3 VdWdXdYdZd0d1d2d3d4d5d6d7d8d9d4 5 !d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d
863 name_bytes = n.encode() if isinstance(n, str) else n 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8bl 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 M 9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdY Z cdddedfdgdhdidjdkdldmdndodpdqd0 1 rdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUd2 3 VdWdXdYdZd0d1d2d3d4d5d6d7d8d9d4 5 !d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d
864 name_ptr = <const char*>name_bytes 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8bl 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 M 9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdY Z cdddedfdgdhdidjdkdldmdndodpdqd0 1 rdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUd2 3 VdWdXdYdZd0d1d2d3d4d5d6d7d8d9d4 5 !d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d
865 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcAddNameExpression(prog, name_ptr)) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8bl 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 M 9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdY Z cdddedfdgdhdidjdkdldmdndodpdqd0 1 rdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUd2 3 VdWdXdYdZd0d1d2d3d4d5d6d7d8d9d4 5 !d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d
867 # Build options array
868 options_vec.resize(len(options_list)) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e.eR S
869 for i in range(len(options_list)): 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e.eR S
870 options_vec[i] = <const char*>(<bytes>options_list[i]) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e.eR S
872 # Compile
873 with nogil: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e.eR S
874 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcCompileProgram(prog, <int>options_vec.size(), options_vec.data())) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e.eR S
876 # Get compiled output based on target type
877 if target_type == "ptx": 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6ehek ,e-e.eR S
878 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetPTXSize(prog, &output_size)) 2kelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeRee f g N O P d ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6ehek ,e-e
879 data = bytearray(output_size) 2kelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeRee f g N O P d ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6ehek ,e-e
880 data_ptr = <char*>(<bytearray>data) 2kelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeRee f g N O P d ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6ehek ,e-e
881 with nogil: 2kelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeRee f g N O P d ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6ehek ,e-e
882 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetPTX(prog, data_ptr)) 2kelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeRee f g N O P d ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6ehek ,e-e
883 elif target_type == "cubin": 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!b/e#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtg.eR S
884 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetCUBINSize(prog, &output_size)) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!b#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(deg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtg.eR S
885 data = bytearray(output_size) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!b#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(deg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtg.eR S
886 data_ptr = <char*>(<bytearray>data) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!b#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(deg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtg.eR S
887 with nogil: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!b#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(deg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtg.eR S
888 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetCUBIN(prog, data_ptr)) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!b#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(deg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtg.eR S
889 else: # ltoir
890 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetLTOIRSize(prog, &output_size)) 2/eV W X fg
891 data = bytearray(output_size) 2/eV W X fg
892 data_ptr = <char*>(<bytearray>data) 2/eV W X fg
893 with nogil: 2/eV W X fg
894 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetLTOIR(prog, data_ptr)) 2/eV W X fg
896 # Get lowered names after compilation
897 if name_expressions: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6ehek ,e-e.eR S
898 for n in name_expressions: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8bl 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 M 9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdY Z cdddedfdgdhdidjdkdldmdndodpdqd0 1 rdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUd2 3 VdWdXdYdZd0d1d2d3d4d5d6d7d8d9d4 5 !d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d
899 name_bytes = n.encode() if isinstance(n, str) else n 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8bl 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 M 9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdY Z cdddedfdgdhdidjdkdldmdndodpdqd0 1 rdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUd2 3 VdWdXdYdZd0d1d2d3d4d5d6d7d8d9d4 5 !d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d
900 name_ptr = <const char*>name_bytes 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8bl 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 M 9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdY Z cdddedfdgdhdidjdkdldmdndodpdqd0 1 rdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUd2 3 VdWdXdYdZd0d1d2d3d4d5d6d7d8d9d4 5 !d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d
901 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetLoweredName(prog, name_ptr, &lowered_name)) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8bl 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 M 9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdY Z cdddedfdgdhdidjdkdldmdndodpdqd0 1 rdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUd2 3 VdWdXdYdZd0d1d2d3d4d5d6d7d8d9d4 5 !d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d
902 symbol_mapping[n] = lowered_name if lowered_name != NULL else None 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8bl 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 M 9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdY Z cdddedfdgdhdidjdkdldmdndodpdqd0 1 rdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUd2 3 VdWdXdYdZd0d1d2d3d4d5d6d7d8d9d4 5 !d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d
904 # Get compilation log if requested
905 if logs is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6ehek ,e-e.eR S
906 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetProgramLogSize(prog, &logsize)) 1k
907 if logsize > 1: 1k
908 log = bytearray(logsize) 1k
909 data_ptr = <char*>(<bytearray>log) 1k
910 with nogil: 1k
911 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetProgramLog(prog, data_ptr)) 1k
912 logs.write(log.decode("utf-8", errors="backslashreplace")) 1k
914 return ObjectCode._init(bytes(data), target_type, symbol_mapping=symbol_mapping, name=name) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6ehek ,e-e.eR S
917cdef int _nvrtc_pch_apis_cached = -1 # -1 = unchecked
919cdef bint _has_nvrtc_pch_apis():
920 global _nvrtc_pch_apis_cached
921 if _nvrtc_pch_apis_cached < 0: 1dcj
922 _nvrtc_pch_apis_cached = hasattr(nvrtc, "nvrtcGetPCHCreateStatus") 1c
923 return _nvrtc_pch_apis_cached 1dcj
926cdef object _read_pch_status(cynvrtc.nvrtcProgram prog):
927 """Query nvrtcGetPCHCreateStatus and translate to a high-level string."""
928 cdef cynvrtc.nvrtcResult err
929 with nogil: 1dcj
930 err = cynvrtc.nvrtcGetPCHCreateStatus(prog) 1dcj
931 if err == cynvrtc.nvrtcResult.NVRTC_SUCCESS: 1dcj
932 return PCHStatusType.CREATED 1dcj
933 if err == cynvrtc.nvrtcResult.NVRTC_ERROR_PCH_CREATE_HEAP_EXHAUSTED:
934 return None # sentinel: caller should auto-retry
935 if err == cynvrtc.nvrtcResult.NVRTC_ERROR_NO_PCH_CREATE_ATTEMPTED:
936 return PCHStatusType.NOT_ATTEMPTED
937 return PCHStatusType.FAILED
940cdef object Program_compile_nvrtc(Program self, str target_type, object name_expressions, object logs):
941 """Compile using NVRTC backend and return ObjectCode."""
942 cdef cynvrtc.nvrtcProgram prog = as_cu(self._h_nvrtc) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e.eR S
943 cdef list options_list = self._options.as_bytes("nvrtc", target_type) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e.eR S
945 result = _nvrtc_compile_and_extract( 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e.eR S
946 prog, target_type, name_expressions, logs, options_list, self._options.name, 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e.eR S
947 )
949 cdef bint pch_creation_possible = self._options.create_pch or self._options.pch 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6ehek ,e-e.eR S
950 if not pch_creation_possible or not _has_nvrtc_pch_apis(): 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6ehek ,e-e.eR S
951 self._pch_status = None 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtg^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4e5e6ehek ,e-e.eR S
952 return result 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtg^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4e5e6ehek ,e-e.eR S
954 try: 1dcj
955 status = _read_pch_status(prog) 1dcj
956 except RuntimeError as e:
957 raise RuntimeError(
958 "PCH was requested but the runtime libnvrtc does not support "
959 "PCH APIs. Update to CUDA toolkit 12.8 or newer."
960 ) from e
962 if status is not None: 1dcj
963 self._pch_status = str(status) 1dcj
964 return result 1dcj
966 # Heap exhausted — auto-resize and retry with a fresh program
967 cdef size_t required = 0
968 with nogil:
969 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetPCHHeapSizeRequired(prog, &required))
970 HANDLE_RETURN_NVRTC(NULL, cynvrtc.nvrtcSetPCHHeapSize(required))
972 cdef cynvrtc.nvrtcProgram retry_prog
973 cdef const char* code_ptr = <const char*>self._code
974 cdef const char* name_ptr = <const char*>self._options._name
975 with nogil:
976 HANDLE_RETURN_NVRTC(NULL, cynvrtc.nvrtcCreateProgram(
977 &retry_prog, code_ptr, name_ptr, 0, NULL, NULL))
978 self._h_nvrtc = create_nvrtc_program_handle(retry_prog)
980 result = _nvrtc_compile_and_extract(
981 retry_prog, target_type, name_expressions, logs, options_list, self._options.name,
982 )
984 status = _read_pch_status(retry_prog)
985 self._pch_status = status if status is not None else str(PCHStatusType.FAILED)
986 return result
989cdef object Program_compile_nvvm(Program self, str target_type, object logs):
990 """Compile using NVVM backend and return ObjectCode."""
991 cdef cynvvm.nvvmProgram prog = as_cu(self._h_nvvm) 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyga b
992 cdef size_t output_size = 0 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyga b
993 cdef size_t logsize = 0 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyga b
994 cdef vector[const char*] options_vec
995 cdef char* data_ptr = NULL 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyga b
996 cdef bytes libdevice_bytes
997 cdef const char* libdevice_ptr
998 cdef size_t libdevice_len
999 # Build options array
1000 options_list = self._options.as_bytes("nvvm", target_type) 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyga b
1001 options_vec.resize(len(options_list)) 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyga b
1002 for i in range(len(options_list)): 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyga b
1003 options_vec[i] = <const char*>(<bytes>options_list[i]) 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyga b
1005 # Serialize NVVM program mutation/use per Program instance.
1006 with self._compile_lock: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyga b
1007 with nogil: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyga b
1008 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmVerifyProgram(prog, <int>options_vec.size(), options_vec.data())) 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyga b
1010 # Load libdevice if requested - following numba-cuda.
1011 if self._use_libdevice and not self._libdevice_added: 2)e*e7e:eug;evg=ewgie8e?exgje9e@eyga b
1012 libdevice_path = _find_libdevice_path()
1013 with open(libdevice_path, "rb") as f:
1014 libdevice_bytes = f.read()
1015 libdevice_ptr = <const char*>libdevice_bytes
1016 libdevice_len = len(libdevice_bytes)
1017 with nogil:
1018 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmLazyAddModuleToProgram(
1019 prog, libdevice_ptr, libdevice_len, NULL))
1020 self._libdevice_added = True
1022 with nogil: 2)e*e7e:eug;evg=ewgie8e?exgje9e@eyga b
1023 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmCompileProgram(prog, <int>options_vec.size(), options_vec.data())) 2)e*e7e:eug;evg=ewgie8e?exgje9e@eyga b
1025 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmGetCompiledResultSize(prog, &output_size)) 2)e*e7e:eug;evg=ewgie8e?exgje9e@eyga b
1026 data = bytearray(output_size) 2)e*e7e:eug;evg=ewgie8e?exgje9e@eyga b
1027 data_ptr = <char*>(<bytearray>data) 2)e*e7e:eug;evg=ewgie8e?exgje9e@eyga b
1028 with nogil: 2)e*e7e:eug;evg=ewgie8e?exgje9e@eyga b
1029 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmGetCompiledResult(prog, data_ptr)) 2)e*e7e:eug;evg=ewgie8e?exgje9e@eyga b
1031 # Get compilation log if requested
1032 if logs is not None: 2)e*e7e:eug;evg=ewgie8e?exgje9e@eyga b
1033 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmGetProgramLogSize(prog, &logsize))
1034 if logsize > 1:
1035 log = bytearray(logsize)
1036 data_ptr = <char*>(<bytearray>log)
1037 with nogil:
1038 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmGetProgramLog(prog, data_ptr))
1039 logs.write(log.decode("utf-8", errors="backslashreplace"))
1041 return ObjectCode._init(bytes(data), target_type, name=self._options.name) 2)e*e7e:eug;evg=ewgie8e?exgje9e@eyga b
1043# Supported target types per backend
1044cdef dict SUPPORTED_TARGETS = {
1045 CompilerBackendType.NVRTC: (ObjectCodeFormatType.PTX, ObjectCodeFormatType.CUBIN, ObjectCodeFormatType.LTOIR),
1046 CompilerBackendType.NVVM: (ObjectCodeFormatType.PTX, ObjectCodeFormatType.LTOIR),
1047 CompilerBackendType.NVJITLINK: (ObjectCodeFormatType.CUBIN, ObjectCodeFormatType.PTX),
1048 CompilerBackendType.DRIVER: (ObjectCodeFormatType.CUBIN, ObjectCodeFormatType.PTX),
1049}
1052cdef object Program_compile(Program self, str target_type, object name_expressions, object logs):
1053 """Compile the program to the specified target type."""
1054 # Validate target_type for this backend
1055 supported = SUPPORTED_TARGETS.get(self._backend) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtg)e*ed ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Bgkh7e:eug;evg=ewgie8e?exgje9e@eyga b oh,e-eahbhchdhehfhghhhihjh.eR S
1056 if supported is None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtg)e*ed ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Bgkh7e:eug;evg=ewgie8e?exgje9e@eyga b oh,e-eahbhchdhehfhghhhihjh.eR S
1057 raise ValueError(f'Unknown backend="{self._backend}"')
1058 if target_type not in supported: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtg)e*ed ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Bgkh7e:eug;evg=ewgie8e?exgje9e@eyga b oh,e-eahbhchdhehfhghhhihjh.eR S
1059 raise ValueError( 2khoh
1060 f'Unsupported target_type="{target_type}" for {self._backend} ' 2khoh
1061 f'(supported: {", ".join(repr(t) for t in supported)})' 2khoh
1062 )
1064 if self._backend == "NVRTC": 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtg)e*ed ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk Bg7e:eug;evg=ewgie8e?exgje9e@eyga b ,e-eahbhchdhehfhghhhihjh.eR S
1065 if target_type == "ptx" and not _can_load_generated_ptx(): 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e.eR S
1066 warn( 2kelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeRee f g N O P d ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e
1067 "The CUDA driver version is older than the backend version. "
1068 "The generated ptx will not be loadable by the current driver.",
1069 stacklevel=2,
1070 category=RuntimeWarning, 2kelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeRee f g N O P d ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e
1071 )
1072 return Program_compile_nvrtc(self, target_type, name_expressions, logs) 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,e-e.eR S
1074 elif self._backend == "NVVM": 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyga b ahbhchdhehfhghhhihjh
1075 return Program_compile_nvvm(self, target_type, logs) 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyga b
1077 else:
1078 return self._linker.link(target_type) 2ahbhchdhehfhghhhihjh
1081cdef inline list _prepare_nvrtc_options_impl(object opts):
1082 """Build NVRTC-specific compiler options."""
1083 options = [f"-arch={opts.arch}"] 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1084 if opts.relocatable_device_code is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1085 options.append(f"--relocatable-device-code={_handle_boolean_option(opts.relocatable_device_code)}") 2kelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePeQeRebe
1086 if opts.extensible_whole_program is not None and opts.extensible_whole_program: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1087 options.append("--extensible-whole-program") 2Xe
1088 if opts.debug is not None and opts.debug: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1089 options.append("--device-debug") 2~daeKg
1090 if opts.lineinfo is not None and opts.lineinfo: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1091 options.append("--generate-line-info") 2Kg
1092 if opts.device_code_optimize is not None and opts.device_code_optimize: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1093 options.append("--dopt=on") 2~d
1094 if opts.ptxas_options is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1095 opt_name = "--ptxas-options" 167
1096 if isinstance(opts.ptxas_options, str): 167
1097 options.append(f"{opt_name}={opts.ptxas_options}")
1098 elif is_sequence(opts.ptxas_options): 167
1099 for opt_value in opts.ptxas_options: 167
1100 options.append(f"{opt_name}={opt_value}") 167
1101 if opts.max_register_count is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1102 options.append(f"--maxrregcount={opts.max_register_count}") 2be
1103 if opts.ftz is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1104 options.append(f"--ftz={_handle_boolean_option(opts.ftz)}") 2}dKg
1105 if opts.prec_sqrt is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1106 options.append(f"--prec-sqrt={_handle_boolean_option(opts.prec_sqrt)}") 2}d
1107 if opts.prec_div is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1108 options.append(f"--prec-div={_handle_boolean_option(opts.prec_div)}") 2}d
1109 if opts.fma is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1110 options.append(f"--fmad={_handle_boolean_option(opts.fma)}") 2ce
1111 if opts.use_fast_math is not None and opts.use_fast_math: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1112 options.append("--use_fast_math") 2ce2g
1113 if opts.extra_device_vectorization is not None and opts.extra_device_vectorization: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1114 options.append("--extra-device-vectorization") 2Se
1115 if opts.link_time_optimization is not None and opts.link_time_optimization: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1116 options.append("--dlink-time-opt") 2/eV W X Te
1117 if opts.gen_opt_lto is not None and opts.gen_opt_lto: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1118 options.append("--gen-opt-lto") 2Ze
1119 if opts.define_macro is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKgphthvhwh-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1120 _process_define_macro(options, opts.define_macro) 2U Q h i phthvhwh
1121 if opts.undefine_macro is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1122 if isinstance(opts.undefine_macro, str): 2`d{d
1123 options.append(f"--undefine-macro={opts.undefine_macro}") 2{d
1124 elif is_sequence(opts.undefine_macro): 2`d
1125 for macro in opts.undefine_macro: 2`d
1126 options.append(f"--undefine-macro={macro}") 2`d
1127 if opts.include_path is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1128 if isinstance(opts.include_path, str): 2!e#e$e%e'e(el 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 M {dLgMgNgRgTg
1129 options.append(f"--include-path={opts.include_path}") 2{dTg
1130 elif is_sequence(opts.include_path): 2!e#e$e%e'e(el 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 M LgMgNgRg
1131 for path in opts.include_path: 2!e#e$e%e'e(el 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 M LgMgNg
1132 options.append(f"--include-path={path}") 2!e#e$e%e'e(el 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 M
1133 if opts.pre_include is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1134 if isinstance(opts.pre_include, str): 2OgSg
1135 options.append(f"--pre-include={opts.pre_include}")
1136 elif is_sequence(opts.pre_include): 2OgSg
1137 for header in opts.pre_include: 2Og
1138 options.append(f"--pre-include={header}")
1139 if opts.no_source_include is not None and opts.no_source_include: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1140 options.append("--no-source-include") 21e
1141 if opts.std is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1142 options.append(f"--std={opts.std}") 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(el 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 M 9b!b#c$c%c'c(c)c*c+c,c-c.c/c:c;c=c?c@c[c]c^c_c`c{c|c}c~cadbdY Z cdddedfdgdhdidjdkdldmdndodpdqd0 1 rdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUd2 3 VdWdXdYdZd0d1d2d3d4d5d6d7d8d9d4 5 !d#d$d%d'd(d)d*d+d,d-d.d/d:d;d=d?d@d[d]d6 7
1143 if opts.builtin_move_forward is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1144 options.append(f"--builtin-move-forward={_handle_boolean_option(opts.builtin_move_forward)}") 2We
1145 if opts.builtin_initializer_list is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1146 options.append(f"--builtin-initializer-list={_handle_boolean_option(opts.builtin_initializer_list)}") 2de
1147 if opts.disable_warnings is not None and opts.disable_warnings: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1148 options.append("--disable-warnings") 2de
1149 if opts.restrict is not None and opts.restrict: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1150 options.append("--restrict") 2ee
1151 if opts.device_as_default_execution_space is not None and opts.device_as_default_execution_space: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1152 options.append("--device-as-default-execution-space") 2ee
1153 if opts.device_int128 is not None and opts.device_int128: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1154 options.append("--device-int128") 2fe
1155 if opts.device_float128 is not None and opts.device_float128: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1156 options.append("--device-float128")
1157 if opts.optimization_info is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1158 options.append(f"--optimization-info={opts.optimization_info}") 2fe
1159 if opts.no_display_error_number is not None and opts.no_display_error_number: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1160 options.append("--no-display-error-number") 2Ue
1161 if opts.diag_error is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1162 if isinstance(opts.diag_error, int): 2|dT
1163 options.append(f"--diag-error={opts.diag_error}") 2|d
1164 elif is_sequence(opts.diag_error): 1T
1165 for error in opts.diag_error: 1T
1166 options.append(f"--diag-error={error}") 1T
1167 if opts.diag_suppress is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1168 if isinstance(opts.diag_suppress, int): 2|dT
1169 options.append(f"--diag-suppress={opts.diag_suppress}") 2|d
1170 elif is_sequence(opts.diag_suppress): 1T
1171 for suppress in opts.diag_suppress: 1T
1172 options.append(f"--diag-suppress={suppress}") 1T
1173 if opts.diag_warn is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1174 if isinstance(opts.diag_warn, int): 2ge
1175 options.append(f"--diag-warn={opts.diag_warn}") 2ge
1176 elif is_sequence(opts.diag_warn):
1177 for w in opts.diag_warn:
1178 options.append(f"--diag-warn={w}")
1179 if opts.brief_diagnostics is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1180 options.append(f"--brief-diagnostics={_handle_boolean_option(opts.brief_diagnostics)}") 2Ve
1181 if opts.time is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1182 options.append(f"--time={opts.time}")
1183 if opts.split_compile is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1184 options.append(f"--split-compile={opts.split_compile}")
1185 if opts.fdevice_syntax_only is not None and opts.fdevice_syntax_only: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1186 options.append("--fdevice-syntax-only") 2Ye
1187 if opts.minimal is not None and opts.minimal: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1188 options.append("--minimal") 20e
1189 if opts.no_cache is not None and opts.no_cache: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1190 options.append("--no-cache") 22e
1191 if opts.fdevice_time_trace is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1192 options.append(f"--fdevice-time-trace={opts.fdevice_time_trace}") 2_d
1193 if opts.frandom_seed is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1194 options.append(f"--frandom-seed={opts.frandom_seed}") 23e
1195 if opts.ofast_compile is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1196 options.append(f"--Ofast-compile={opts.ofast_compile}") 24e
1197 # PCH options (CUDA 12.8+)
1198 if opts.pch is not None and opts.pch: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1199 options.append("--pch") 1j
1200 if opts.create_pch is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1201 options.append(f"--create-pch={opts.create_pch}") 1dc
1202 if opts.use_pch is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1203 options.append(f"--use-pch={opts.use_pch}") 1c
1204 if opts.pch_dir is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1205 options.append(f"--pch-dir={opts.pch_dir}")
1206 if opts.pch_verbose is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1207 options.append(f"--pch-verbose={_handle_boolean_option(opts.pch_verbose)}") 25e
1208 if opts.pch_messages is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1209 options.append(f"--pch-messages={_handle_boolean_option(opts.pch_messages)}") 26e
1210 if opts.instantiate_templates_in_pch is not None: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1211 options.append( 2he
1212 f"--instantiate-templates-in-pch={_handle_boolean_option(opts.instantiate_templates_in_pch)}" 2he
1213 )
1214 if opts.numba_debug: 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1215 options.append("--numba-debug") 2ae
1216 return [o.encode() for o in options] 28 9 ! # $ % ' ( ) * + , - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b!e#e$e%e[e]e^e_e'e(e`el 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 M 9b!bkelemeneoepeqereseteuevewexeyezeAeBeCeDeEeFeGeHeIeJeKeLeMeNeOePe/eQeRe#b$b%b'b(b)b*b+b{e,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|be f g V W X N O P }b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2c3c4c5c6c7c8c9c!c#c|e$c}e~e%caf'cbf(c)c*ccf+cdf,c-c.c/c:c;c=c?c@c[cef]cff^cgf_chf`c{c|cif}cjf~cadbdkfY lfmfnfofpfqfrfsftfZ ufvfwfxfyfcdddedfdgdhdidjdkdldmdndzfodAfpdqdBf0 CfDfEfFfGfHfIfJfKfLf1 MfNfOfPfQfrdsdtdRfudSfvdTfwdUfxdydzdVfAdWfBdCdDdEdFdGdHdIdJdKdXfLdYfMdZfNd0fOdPdQd1fRd2fSdTdUd3f2 4f5f6f7f8f9f!f#f$f3 %f'f(f)f*fVdWdXdYdZd0d1d2d3d4d5d6d+f7d,f8d9d-f4 .f/f:f;f=f?f@f[f]f^f5 _f`f{f|f}f!d#d$d~f%dagbgcg'ddg(degfg)dgg*dhg+dig,djg-dkg.dlg/dmg:dng;dog=dpg?dqg@drg[dsg]dtgd ^dc _d+e~daebe}dceSeTeU Q h i `d{ddeeefeUe|dT ge6 7 VeWeXeYeZe0e1e2e3e4ej 5e6eheAgk ,eKg-e.eLgMgNgRgOgSgTg3g4g5g6g7g8g9g!g#g2g$g%g'g(g)g*g+g,g-g.g/g:g;g=g?g@g[g]g^g_g`gEgCgDgFgR IgGgJgHgS
1219cdef inline object _prepare_nvvm_options_impl(object opts, bint as_bytes):
1220 """Build NVVM-specific compiler options."""
1221 options = [] 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1223 # Options supported by NVVM
1224 assert opts.arch is not None 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1225 arch = opts.arch 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1226 if arch.startswith("sm_"): 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1227 arch = f"compute_{arch[3:]}" 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1228 options.append(f"-arch={arch}") 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1229 if opts.debug is not None and opts.debug: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1230 options.append("-g") 21gPg
1231 if opts.numba_debug: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1232 options.append("--numba-debug") 21g
1233 if opts.device_code_optimize is False: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1234 options.append("-opt=0") 2:eug;evg?exg
1235 elif opts.device_code_optimize is True: 2)e*eBg7e=ewgie8eje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1236 options.append("-opt=3") 2ie8eje9ePg
1237 # NVVM uses 0/1 instead of true/false for boolean options
1238 if opts.ftz is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1239 options.append(f"-ftz={'1' if opts.ftz else '0'}") 2ie8eje9ePg
1240 if opts.prec_sqrt is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1241 options.append(f"-prec-sqrt={'1' if opts.prec_sqrt else '0'}") 2ie8eje9e
1242 if opts.prec_div is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1243 options.append(f"-prec-div={'1' if opts.prec_div else '0'}") 2ie8eje9e
1244 if opts.fma is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1245 options.append(f"-fma={'1' if opts.fma else '0'}") 2ie8eje9e
1247 # Check for unsupported options and raise error if they are set
1248 unsupported = [] 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1249 if opts.relocatable_device_code is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1250 unsupported.append("relocatable_device_code")
1251 if opts.extensible_whole_program is not None and opts.extensible_whole_program: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1252 unsupported.append("extensible_whole_program")
1253 if opts.lineinfo is not None and opts.lineinfo: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1254 unsupported.append("lineinfo") 2~g
1255 if opts.ptxas_options is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1256 unsupported.append("ptxas_options")
1257 if opts.max_register_count is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1258 unsupported.append("max_register_count")
1259 if opts.use_fast_math is not None and opts.use_fast_math: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1260 unsupported.append("use_fast_math")
1261 if opts.extra_device_vectorization is not None and opts.extra_device_vectorization: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1262 unsupported.append("extra_device_vectorization")
1263 if opts.gen_opt_lto is not None and opts.gen_opt_lto: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1264 unsupported.append("gen_opt_lto")
1265 if opts.define_macro is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1266 unsupported.append("define_macro")
1267 if opts.undefine_macro is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1268 unsupported.append("undefine_macro")
1269 if opts.include_path is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1270 unsupported.append("include_path")
1271 if opts.pre_include is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1272 unsupported.append("pre_include")
1273 if opts.no_source_include is not None and opts.no_source_include: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1274 unsupported.append("no_source_include")
1275 if opts.std is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1276 unsupported.append("std")
1277 if opts.builtin_move_forward is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1278 unsupported.append("builtin_move_forward")
1279 if opts.builtin_initializer_list is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1280 unsupported.append("builtin_initializer_list")
1281 if opts.disable_warnings is not None and opts.disable_warnings: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1282 unsupported.append("disable_warnings")
1283 if opts.restrict is not None and opts.restrict: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1284 unsupported.append("restrict")
1285 if opts.device_as_default_execution_space is not None and opts.device_as_default_execution_space: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1286 unsupported.append("device_as_default_execution_space")
1287 if opts.device_int128 is not None and opts.device_int128: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1288 unsupported.append("device_int128")
1289 if opts.optimization_info is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1290 unsupported.append("optimization_info")
1291 if opts.no_display_error_number is not None and opts.no_display_error_number: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1292 unsupported.append("no_display_error_number")
1293 if opts.diag_error is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1294 unsupported.append("diag_error")
1295 if opts.diag_suppress is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1296 unsupported.append("diag_suppress")
1297 if opts.diag_warn is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1298 unsupported.append("diag_warn")
1299 if opts.brief_diagnostics is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1300 unsupported.append("brief_diagnostics")
1301 if opts.time is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1302 unsupported.append("time")
1303 if opts.split_compile is not None: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1304 unsupported.append("split_compile")
1305 if opts.fdevice_syntax_only is not None and opts.fdevice_syntax_only: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1306 unsupported.append("fdevice_syntax_only")
1307 if opts.minimal is not None and opts.minimal: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1308 unsupported.append("minimal")
1309 if unsupported: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b ~gPgQgUgVgWgXg{g|g}gYgZg0g
1310 raise CUDAError(f"The following options are not supported by NVVM backend: {', '.join(unsupported)}") 2~g
1312 if as_bytes: 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b PgQgUgVgWgXg{g|g}gYgZg0g
1313 return [o.encode() for o in options] 2)e*eBg7e:eug;evg=ewgie8e?exgje9e@eyg1ga b PgQgUgVgWgXg{g|g}gYgZg0g
1314 else:
1315 return options