Coverage for cuda/core/_program.pyx: 87.30%
748 statements
« prev ^ index » next coverage.py v7.16.0, created at 2026-09-03 02:41 +0000
« prev ^ index » next coverage.py v7.16.0, created at 2026-09-03 02:41 +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 os
14import re
15import sys
16import tempfile
17import threading
18from typing import TYPE_CHECKING
19from warnings import warn
21if TYPE_CHECKING:
22 from cuda.core.utils._program_cache import ProgramCacheResource # no-cython-lint
24from cuda.bindings import nvrtc
25from cuda.pathfinder._optional_cuda_import import _optional_cuda_import
27from libcpp.vector cimport vector
29from ._resource_handles cimport (
30 as_cu,
31 as_py,
32 create_nvrtc_program_handle,
33 create_nvvm_program_handle,
34)
35from cuda.bindings cimport cynvrtc, cynvvm
36from cuda.core._utils.cuda_utils cimport HANDLE_RETURN_NVRTC, HANDLE_RETURN_NVVM
37from cuda.core._device import Device
38from cuda.core._linker import Linker, LinkerHandleT, LinkerOptions
39from cuda.core._module import ObjectCode
40from cuda.core._utils.clear_error_support import assert_type
41from cuda.core._utils.cuda_utils import (
42 CUDAError,
43 _handle_boolean_option,
44 check_or_create_options,
45 handle_return,
46 is_nested_sequence,
47 is_sequence,
48)
49from cuda.core._utils.version import binding_version, driver_version
50from cuda.core.utils._cache_dir import _default_cache_dir
51from cuda.core.typing import ObjectCodeFormatType, CompilerBackendType, PCHStatusType, SourceCodeType
53__all__ = ["Program", "ProgramOptions"]
55ProgramHandleT = nvrtc.nvrtcProgram | int | LinkerHandleT
56"""Type alias for program handle types across different backends.
58The ``int`` type covers NVVM handles, which don't have a wrapper class.
59"""
62# =============================================================================
63# Principal Class
64# =============================================================================
67cdef inline int Program_check_open(Program self) except -1:
68 if self.is_closed: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~g2e3e{hh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c ah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g @hXf%hOf'hHh(h)h*h+h,h-hPf.h/h:h4 Qfehchdhfh0 hhgh_h[h]h^hjh`hih1 |h
69 raise RuntimeError("Program has been closed") 2{h
70 return 0 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~g2e3eh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c ah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g @hXf%hOf'hHh(h)h*h+h,h-hPf.h/h:h4 Qfehchdhfh0 hhgh_h[h]h^hjh`hih1 |h
73cdef class Program:
74 """Represent a compilation machinery to process programs into
75 :class:`~cuda.core.ObjectCode`.
77 This object provides a unified interface to multiple underlying
78 compiler libraries. Compilation support is enabled for a wide
79 range of code types and compilation types.
81 Parameters
82 ----------
83 code : str | bytes | bytearray
84 The source code to compile. For C++ and PTX, must be a string.
85 For NVVM IR, can be str, bytes, or bytearray.
86 code_type : SourceCodeType | str
87 The type of source code. Must be one of ``"c++"``, ``"ptx"``, or ``"nvvm"``.
88 options : :class:`ProgramOptions`, optional
89 Options to customize the compilation process.
90 """
91 def __init__(self, code: str | bytes | bytearray, code_type: SourceCodeType | str, options: ProgramOptions | None = None):
92 Program_init(self, code, str(code_type), options) 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdhiFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gii}hKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gjiWe}gXe~gki2e3e{hh ) mii * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c ?hah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g nieiai@hXfcirioibili=h%hOf'hHh(h)h*h+h,h-hPf.h/h:h4 Qfehchdhfh0 hhgh_h[h]h^hjh`hih1 |h
94 def close(self) -> None:
95 """Destroy this program."""
96 if self._linker is not None: 2Bi2e3e{hh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c ?hah$h1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g ai=h(h)h*h+h,h-h.h/h:h4 Qf
97 self._linker.close() 2=h(h)h*h+h,h-h.h/h:h
98 # Reset handles - the C++ shared_ptr destructor handles cleanup
99 self._h_nvrtc.reset() 2Bi2e3e{hh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c ?hah$h1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g ai=h(h)h*h+h,h-h.h/h:h4 Qf
100 self._h_nvvm.reset() 2Bi2e3e{hh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c ?hah$h1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g ai=h(h)h*h+h,h-h.h/h:h4 Qf
101 self._cleanup_debug_source() 2Bi2e3e{hh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c ?hah$h1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g ai=h(h)h*h+h,h-h.h/h:h4 Qf
103 def __dealloc__(self):
104 self._cleanup_debug_source() 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfEjyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFjFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gGjHjKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gIjWe}gXe~gJj2e3e{hh ) mii * Rfe f lf!emfzfAf+ 2 n o Kj4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c ?hah$h1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g nieiai@hLjcirioibili=h%hOf'hHh(h)h*hMj+h,h-hPf.h/h:h4 Qfehchdhfh0 Njhhgh_h[h]h^h`h1 Oj|h
106 def _cleanup_debug_source(self):
107 # Only a temp file this Program wrote may be removed, and the name having
108 # moved off options.name is what says one was written. Without that test
109 # the caller's own file is deleted whenever options.name happens to match
110 # something on disk, since the unredirected name is just that path.
111 if self._nvrtc_name is not None and self._nvrtc_name != self._options._name: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfEjyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdBiFjFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gGjHjKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gIjWe}gXe~gJj2e3e{hh ) mii * Rfe f lf!emfzfAf+ 2 n o Kj4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c ?hah$h1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g nieiai@hLjcirioibili=h%hOf'hHh(h)h*hMj+h,h-hPf.h/h:h4 Qfehchdhfh0 Njhhgh_h[h]h^h`h1 Oj|h
112 self._unlink_debug_source(self._nvrtc_name.decode()) 1efabc
114 def _unlink_debug_source(self, path: str) -> None:
115 try: 24fe f a b c
116 os.unlink(path) 1efabc
117 except OSError: 1efabc
118 pass 1efabc
120 def _try_materialize_nvrtc_debug_source(self, code: str) -> str | None:
121 """Write *code* to a ``{caller}_{kernel}_XXXXXXXX.cu`` temp file for cuda-gdb.
123 ``caller`` is the Python file stem (no ``.py``). ``kernel`` is the first
124 ``__global__`` function name, or ``kernel`` if none is found.
126 Returns None if the filesystem is not writable, so the caller can fall back
127 to the label-only behavior instead of failing the compile.
128 """
129 frame = sys._getframe() 1efajbc
130 while frame and frame.f_globals.get("__name__", "").startswith("cuda.core"): 1efajbc
131 frame = frame.f_back
132 caller = "program" 1efajbc
133 if frame: 24fe f a j b c
134 caller = os.path.splitext(os.path.basename(frame.f_code.co_filename))[0] 1efajbc
135 match = re.search(r"__global__.*?(\w+)\s*\(", code, re.DOTALL) 1efajbc
136 prefix = re.sub(r"\W", "_", f"{caller}_{match.group(1) if match else 'kernel'}_") 1efajbc
137 try: 1efajbc
138 fd, path = tempfile.mkstemp(prefix=prefix, suffix=".cu") 1efajbc
139 except OSError: 1j
140 return None 1j
141 try: 1efabc
142 with os.fdopen(fd, "w", encoding="utf-8") as f: 1efabc
143 f.write(code) 1efabc
144 return path 1efabc
145 except OSError:
146 self._unlink_debug_source(path)
147 return None
149 @property
150 def is_closed(self) -> bool:
151 """Whether this program has been closed."""
152 if self._backend == "NVRTC": 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdBiFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~g2e3e{hh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c ah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g @hXf%hOf'hHh(h)h*h+h,h-hPf.h/h:h4 Qfehchdhfh0 hhgh_h[h]h^hjh`hih1 |h
153 return self._h_nvrtc.get() == NULL 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdBiFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~g{hh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c @hXfOfPf4 Qfehchdhfh0 hhgh_h[h]h^hjh`hih1 |h
154 if self._backend == "NVVM": 22e3eah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g %h'hHh(h)h*h+h,h-h.h/h:h
155 return self._h_nvvm.get() == NULL 22e3eah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g
156 return self._linker is None or self._linker.is_closed 2%h'hHh(h)h*h+h,h-h.h/h:h
158 def compile(
159 self,
160 target_type: ObjectCodeFormatType | str,
161 name_expressions: tuple[str, ...] | list[str] = (),
162 logs: object = None,
163 *,
164 cache: ProgramCacheResource | None = None,
165 ) -> ObjectCode:
166 """Compile the program to the specified target type.
168 Parameters
169 ----------
170 target_type : ObjectCodeFormatType | str
171 The compilation target. Must be one of ``"ptx"``, ``"cubin"``, or ``"ltoir"``.
172 name_expressions : tuple | list, optional
173 Sequence of name expressions to make accessible in the compiled code.
174 Used for template instantiation and similar cases.
175 logs : object, optional
176 Object with a ``write`` method to receive compilation logs.
177 On a cache hit no compilation runs and ``logs`` receives
178 nothing -- callers that rely on log output to confirm a
179 compile happened should compile without ``cache=``.
180 cache : :class:`~cuda.core.utils.ProgramCacheResource`, optional
181 If provided, the compiled binary is looked up in ``cache`` via a
182 key derived from the program's code, options, and ``target_type``.
183 On a hit the cached bytes are wrapped in a fresh
184 :class:`~cuda.core.ObjectCode` (with the same ``target_type``
185 and ``ProgramOptions.name``) and returned without re-compiling;
186 on a miss the compile output is stored as raw bytes (the cache
187 extracts ``bytes(object_code.code)``). Passing a non-empty
188 ``name_expressions`` together with ``cache=`` raises
189 ``ValueError``: NVRTC populates
190 ``ObjectCode.symbol_mapping`` at compile time and that mapping
191 is not carried in the binary the cache stores, so cache hits
192 would silently miss ``get_kernel(name_expression)`` lookups.
193 Options that require an ``extra_digest`` (``include_path``,
194 ``pre_include``, ``pch``, ``use_pch``, ``pch_dir``, NVVM
195 ``use_libdevice=True``, or NVRTC ``options.name`` with a
196 directory component) raise ``ValueError`` via
197 :func:`~cuda.core.utils.make_program_cache_key`; for those
198 compiles, use the manual ``make_program_cache_key(...)``
199 pattern directly.
201 ``cache=`` is independent of ``ProgramOptions.no_cache``: the
202 former controls this program-level cache (compiled-output
203 reuse across calls), while ``no_cache`` is forwarded to the
204 Linker to disable its in-process JIT cache for cuLink/nvJitLink.
205 Setting ``options.no_cache=True`` does not bypass ``cache=``,
206 and vice-versa.
208 Returns
209 -------
210 :class:`~cuda.core.ObjectCode`
211 The compiled object code.
212 """
213 Program_check_open(self) 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~g2e3e{hh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c ah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g @hXf%hOf'hHh(h)h*h+h,h-hPf.h/h:h4 Qfehchdhfh0 hhgh_h[h]h^hjh`hih1 |h
214 # Mirror Program_init's code_type normalization so callers can pass
215 # ``ObjectCodeFormatType.PTX`` or ``"PTX"`` and get the same routing
216 # / cache key as the lowercase string. ``Program_compile_nvrtc``
217 # keys on lowercase ``target_type`` and ``make_program_cache_key``
218 # lowercases too.
219 target_type = str(target_type).lower() 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~g2e3eh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c ah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g @hXf%hOf'hHh(h)h*h+h,h-hPf.h/h:h4 Qfehchdhfh0 hhgh_h[h]h^hjh`hih1 |h
221 if cache is None: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~g2e3eh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c ah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g @hXf%hOf'hHh(h)h*h+h,h-hPf.h/h:h4 Qfehchdhfh0 hhgh_h[h]h^hjh`hih1 |h
222 return _program_compile_uncached(self, target_type, name_expressions, logs) 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~g2e3eh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c ah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g @hXf%hOf'hHh(h)h*h+h,h-hPf.h/h:h4 Qf|h
224 # Deferred import to avoid a circular import between _program and
225 # cuda.core.utils._program_cache (the cache module already imports
226 # ProgramOptions from this module). Import from the leaf module so
227 # tests that monkeypatch make_program_cache_key via that path
228 # intercept reliably.
229 from cuda.core.utils._program_cache import ( 2ehchdhfh0 hhgh_h[h]h^hjh`hih1
230 ProgramCacheResource,
231 make_program_cache_key,
232 )
234 if not isinstance(cache, ProgramCacheResource): 2ehchdhfh0 hhgh_h[h]h^hjh`hih1
235 raise TypeError( 2_h
236 "cache must be an instance of " 2_h
237 "cuda.core.utils.ProgramCacheResource; got "
238 f"{type(cache).__name__}" 2_h
239 )
241 # ``name_expressions`` is incompatible with the cache: NVRTC
242 # populates ``ObjectCode.symbol_mapping`` from name-expression
243 # mangling at compile time, and that mapping isn't carried in
244 # the binary bytes the cache stores. Without this guard the
245 # first call (cache miss) would return an ObjectCode with
246 # symbol_mapping populated, while every subsequent call (hit)
247 # would return one without -- silently breaking later
248 # ``get_kernel(name_expression)`` lookups that work on the
249 # uncached path. Fail loud here instead.
250 if name_expressions: 2ehchdhfh0 hhgh[h]h^hjh`hih1
251 raise ValueError( 2`h
252 "Program.compile(cache=...) does not support name_expressions: "
253 "ObjectCode.symbol_mapping is populated by NVRTC at compile "
254 "time and is not preserved across a cache round-trip, so cache "
255 "hits would silently break get_kernel(name_expression) lookups "
256 "that the uncached path supports. Compile without cache= when "
257 "name_expressions are needed, or look up mangled symbols by "
258 "hand from the cached ObjectCode."
259 )
261 # ``self._code`` is always stored as bytes (see ``Program_init``),
262 # but ``make_program_cache_key`` only accepts bytes when
263 # ``code_type == "nvvm"`` -- c++/ptx must be ``str``. The bytes
264 # came from ``code.encode()`` on a ``str`` Program_init validated
265 # via ``assert_type(code, str)``, so this round-trip is always
266 # safe; no try/except needed.
267 code_for_key = self._code if self._code_type == "nvvm" else self._code.decode("utf-8") 2ehchdhfh0 hhgh[h]h^hjhih1
269 key = make_program_cache_key( 2ehchdhfh0 hhgh[h]h^hjhih1
270 code=code_for_key,
271 code_type=self._code_type,
272 options=self._options,
273 target_type=target_type, 2ehchdhfh0 hhgh[h]h^hjhih1
274 )
275 hit_bytes = cache.get(key) 2ehchdhfh0 hhghjhih1
276 if hit_bytes is not None: 2ehchdhfh0 hhghih1
277 # The uncached NVRTC path warns when the active driver can't
278 # load freshly-generated PTX; that loadability is a property
279 # of the driver, not of how the bytes were produced, so the
280 # warning applies equally to cached PTX. Mirror it here so a
281 # cache hit doesn't silently hide an incompatibility that the
282 # uncached call would have surfaced.
283 if ( 2ehchdhfh0 1
284 self._backend == "NVRTC" 2ehchdhfh0 1
285 and target_type == "ptx" 2ehchdhfh0 1
286 and not _can_load_generated_ptx() 2chdh
287 ):
288 warn( 2ch
289 "The CUDA driver version is older than the backend version. "
290 "The generated ptx will not be loadable by the current driver.",
291 stacklevel=2,
292 category=RuntimeWarning, 2ch
293 )
294 return ObjectCode._init(hit_bytes, target_type, name=self._nvrtc_name.decode()) 2ehchdhfh0 1
295 compiled = _program_compile_uncached(self, target_type, name_expressions, logs) 2eh0 hhghih1
296 cache[key] = compiled 2eh0 ghih1
297 return compiled 2eh0 gh1
299 @property
300 def pch_status(self) -> PCHStatusType | None:
301 """PCH creation outcome from the most recent :meth:`compile` call.
303 Possible values:
305 * ``"created"`` — PCH file was written successfully.
306 * ``"not_attempted"`` — PCH creation was not attempted (e.g. the
307 compiler decided not to, or automatic PCH processing skipped it).
308 * ``"failed"`` — an error prevented PCH creation.
309 * ``None`` — PCH was not requested, the program has not been
310 compiled yet, the backend is not NVRTC (e.g. PTX or NVVM),
311 or the NVRTC bindings are too old to report status.
313 When ``create_pch`` is set in :class:`ProgramOptions` and the PCH
314 heap is too small, :meth:`compile` automatically resizes the heap
315 and retries, so ``"created"`` should be the common outcome.
317 .. note::
319 PCH is only supported for ``code_type="c++"`` programs that
320 use the NVRTC backend. For PTX and NVVM programs this property
321 always returns ``None``.
322 """
323 if self._pch_status is None: 1h)
324 return None 1h)
325 return PCHStatusType(self._pch_status) 1h
327 @property
328 def backend(self) -> CompilerBackendType:
329 """Return this Program instance's underlying :class:`CompilerBackendType`."""
330 return CompilerBackendType(self._backend) 22e3ei * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrf?hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g eibi(h)h*h+h,h-h.h/h:h
332 @property
333 def handle(self) -> ProgramHandleT:
334 """Return the underlying handle object.
336 .. note::
338 The type of the returned object depends on the backend.
340 .. caution::
342 This handle is a Python object. To get the memory address of the underlying C
343 handle, call ``int(Program.handle)``.
344 """
345 if self._backend == "NVRTC": 2Bi?hsfcibi=h
346 return as_py(self._h_nvrtc) 2Bicibi
347 elif self._backend == "NVVM": 2?hsf=h
348 return as_py(self._h_nvvm) # returns int (NVVM uses raw integers) 2?hsf
349 else:
350 return self._linker.handle 2=h
352 def __repr__(self) -> str:
353 return f"<Program backend='{self._backend}'>" 2BiTjUjsf
356# =============================================================================
357# Other Public Classes
358# =============================================================================
361@dataclass
362class ProgramOptions:
363 """Customizable options for configuring :class:`Program`.
365 Attributes
366 ----------
367 name : str, optional
368 Name of the program. If the compilation succeeds, the name is passed down to the generated :class:`ObjectCode`.
369 When set to `None`, ``"default_program"`` is used.
370 arch : str, optional
371 Pass the SM architecture value, such as ``sm_<CC>`` (for generating CUBIN) or
372 ``compute_<CC>`` (for generating PTX). If not provided, the current device's architecture
373 will be used.
374 relocatable_device_code : bool, optional
375 Enable (disable) the generation of relocatable device code.
376 Default: False
377 extensible_whole_program : bool, optional
378 Do extensible whole program compilation of device code.
379 Default: False
380 debug : bool, optional
381 Generate debug information. If --dopt is not specified, then turns off all optimizations.
382 Default: False
383 lineinfo: bool, optional
384 Generate line-number information.
385 Default: False
386 device_code_optimize : bool, optional
387 Enable device code optimization. When specified along with '-G', enables limited debug information generation
388 for optimized device code.
389 Default: None
390 ptxas_options : str | list[str], optional
391 Specify one or more options directly to ptxas, the PTX optimizing assembler. Options should be strings.
392 For example ["-v", "-O2"].
393 Default: None
394 max_register_count : int, optional
395 Specify the maximum amount of registers that GPU functions can use.
396 Default: None
397 ftz : bool, optional
398 When performing single-precision floating-point operations, flush denormal values to zero or preserve denormal
399 values.
400 Default: False
401 prec_sqrt : bool, optional
402 For single-precision floating-point square root, use IEEE round-to-nearest mode or use a faster approximation.
403 Default: True
404 prec_div : bool, optional
405 For single-precision floating-point division and reciprocals, use IEEE round-to-nearest mode or use a faster
406 approximation.
407 Default: True
408 fma : bool, optional
409 Enables (disables) the contraction of floating-point multiplies and adds/subtracts into floating-point
410 multiply-add operations.
411 Default: True
412 use_fast_math : bool, optional
413 Make use of fast math operations.
414 Default: False
415 extra_device_vectorization : bool, optional
416 Enables more aggressive device code vectorization in the NVVM optimizer.
417 Default: False
418 link_time_optimization : bool, optional
419 Generate intermediate code for later link-time optimization.
420 Default: False
421 gen_opt_lto : bool, optional
422 Run the optimizer passes before generating the LTO IR.
423 Default: False
424 define_macro : str | tuple[str, str] | list[str | tuple[str, str]], optional
425 Predefine a macro. Can be either a string, in which case that macro will be set to 1, a 2 element tuple of
426 strings, in which case the first element is defined as the second, or a list of strings or tuples.
427 Default: None
428 undefine_macro : str | list[str], optional
429 Cancel any previous definition of a macro, or list of macros.
430 Default: None
431 include_path : str | list[str], optional
432 Add the directory or directories to the list of directories to be searched for headers.
433 Default: None
434 use_bundled_headers : bool, optional
435 Use the CUDA and CCCL headers bundled with NVRTC, installed into a per-user cache
436 directory, instead of requiring a full CUDA Toolkit installation. Implemented via NVRTC's
437 ``--use-bundled-headers=<dir>`` compiler option, which installs the headers into the cache
438 directory (skipping installation if already present and up to date) and adds that
439 directory to the include search path. NVRTC only.
440 Default: False
441 pre_include : str | list[str], optional
442 Preinclude one or more headers during preprocessing. Can be either a string or a list of strings.
443 Default: None
444 no_source_include : bool, optional
445 Disable the default behavior of adding the directory of each input source to the include path.
446 Default: False
447 std : str, optional
448 Set language dialect to C++03, C++11, C++14, C++17 or C++20.
449 Default: c++17
450 builtin_move_forward : bool, optional
451 Provide builtin definitions of std::move and std::forward.
452 Default: True
453 builtin_initializer_list : bool, optional
454 Provide builtin definitions of std::initializer_list class and member functions.
455 Default: True
456 disable_warnings : bool, optional
457 Inhibit all warning messages.
458 Default: False
459 restrict : bool, optional
460 Programmer assertion that all kernel pointer parameters are restrict pointers.
461 Default: False
462 device_as_default_execution_space : bool, optional
463 Treat entities with no execution space annotation as __device__ entities.
464 Default: False
465 device_int128 : bool, optional
466 Allow the __int128 type in device code.
467 Default: False
468 optimization_info : str, optional
469 Provide optimization reports for the specified kind of optimization.
470 Default: None
471 no_display_error_number : bool, optional
472 Disable the display of a diagnostic number for warning messages.
473 Default: False
474 diag_error : int | list[int], optional
475 Emit error for a specified diagnostic message number or comma-separated list of numbers.
476 Default: None
477 diag_suppress : int | list[int], optional
478 Suppress a specified diagnostic message number or comma-separated list of numbers.
479 Default: None
480 diag_warn : int | list[int], optional
481 Emit warning for a specified diagnostic message number or comma-separated list of numbers.
482 Default: None
483 brief_diagnostics : bool, optional
484 Disable or enable showing source line and column info in a diagnostic.
485 Default: False
486 time : str, optional
487 Generate a CSV table with the time taken by each compilation phase.
488 Default: None
489 split_compile : int, optional
490 Perform compiler optimizations in parallel.
491 Default: 1
492 fdevice_syntax_only : bool, optional
493 Ends device compilation after front-end syntax checking.
494 Default: False
495 minimal : bool, optional
496 Omit certain language features to reduce compile time for small programs.
497 Default: False
498 no_cache : bool, optional
499 Disable compiler caching.
500 Default: False
501 fdevice_time_trace : str, optional
502 Generate time trace JSON for profiling compilation (NVRTC only).
503 Default: None
504 device_float128 : bool, optional
505 Allow __float128 type in device code (NVRTC only).
506 Default: False
507 frandom_seed : str, optional
508 Set random seed for randomized optimizations (NVRTC only).
509 Default: None
510 ofast_compile : str, optional
511 Fast compilation mode: "0", "min", "mid", or "max" (NVRTC only).
512 Default: None
513 pch : bool, optional
514 Use default precompiled header (NVRTC only, CUDA 12.8+).
515 Default: False
516 create_pch : str, optional
517 Create precompiled header file (NVRTC only, CUDA 12.8+).
518 Default: None
519 use_pch : str, optional
520 Use specific precompiled header file (NVRTC only, CUDA 12.8+).
521 Default: None
522 pch_dir : str, optional
523 PCH directory location (NVRTC only, CUDA 12.8+).
524 Default: None
525 pch_verbose : bool, optional
526 Verbose PCH output (NVRTC only, CUDA 12.8+).
527 Default: False
528 pch_messages : bool, optional
529 Control PCH diagnostic messages (NVRTC only, CUDA 12.8+).
530 Default: False
531 instantiate_templates_in_pch : bool, optional
532 Control template instantiation in PCH (NVRTC only, CUDA 12.8+).
533 Default: False
534 extra_sources : list of 2-tuples or tuple of 2-tuples, optional
535 Additional NVVM IR modules to compile together with the main program, specified as
536 ``((name1, source1), (name2, source2), ...)``. Each name is a string identifier used
537 in diagnostic messages. Each source can be a string (textual LLVM IR) or bytes/bytearray
538 (LLVM bitcode). Only supported for the NVVM backend.
539 Default: None
540 use_libdevice : bool, optional
541 Load NVIDIA's `libdevice <https://docs.nvidia.com/cuda/libdevice-users-guide/>`_
542 math builtins library. Only supported for the NVVM backend.
543 Default: False
544 numba_debug : bool, optional
545 Emit the debug information layout expected by Numba. Recognized only by
546 newer toolkits; compilers that do not support it reject the option with
547 an error. Applies only to the NVVM and NVRTC compilation backends --
548 ``code_type="ptx"`` is processed by the linker, which cannot honor it,
549 so enabling this option there emits a :class:`UserWarning` and the
550 option is ignored.
551 Default: None
552 """
554 name: str | None = "default_program"
555 arch: str | None = None
556 relocatable_device_code: bool | None = None
557 extensible_whole_program: bool | None = None
558 debug: bool | None = None
559 lineinfo: bool | None = None
560 device_code_optimize: bool | None = None
561 ptxas_options: str | list[str] | tuple[str] | None = None
562 max_register_count: int | None = None
563 ftz: bool | None = None
564 prec_sqrt: bool | None = None
565 prec_div: bool | None = None
566 fma: bool | None = None
567 use_fast_math: bool | None = None
568 extra_device_vectorization: bool | None = None
569 link_time_optimization: bool | None = None
570 gen_opt_lto: bool | None = None
571 define_macro: str | tuple[str, str] | list[str | tuple[str, str]] | tuple[str | tuple[str, str], ...] | None = None
572 undefine_macro: str | list[str] | tuple[str] | None = None
573 include_path: str | list[str] | tuple[str] | None = None
574 use_bundled_headers: bool | None = None
575 pre_include: str | list[str] | tuple[str] | None = None
576 no_source_include: bool | None = None
577 std: str | None = None
578 builtin_move_forward: bool | None = None
579 builtin_initializer_list: bool | None = None
580 disable_warnings: bool | None = None
581 restrict: bool | None = None
582 device_as_default_execution_space: bool | None = None
583 device_int128: bool | None = None
584 optimization_info: str | None = None
585 no_display_error_number: bool | None = None
586 diag_error: int | list[int] | tuple[int] | None = None
587 diag_suppress: int | list[int] | tuple[int] | None = None
588 diag_warn: int | list[int] | tuple[int] | None = None
589 brief_diagnostics: bool | None = None
590 time: str | None = None
591 split_compile: int | None = None
592 fdevice_syntax_only: bool | None = None
593 minimal: bool | None = None
594 no_cache: bool | None = None
595 fdevice_time_trace: str | None = None
596 device_float128: bool | None = None
597 frandom_seed: str | None = None
598 ofast_compile: str | None = None
599 pch: bool | None = None
600 create_pch: str | None = None
601 use_pch: str | None = None
602 pch_dir: str | None = None
603 pch_verbose: bool | None = None
604 pch_messages: bool | None = None
605 instantiate_templates_in_pch: bool | None = None
606 extra_sources: list[tuple[str, str | bytes | bytearray]] | tuple[tuple[str, str | bytes | bytearray], ...] | None = None
607 use_libdevice: bool | None = None # For libdevice execution
608 numba_debug: bool | None = None # Custom option for Numba debugging
610 def __post_init__(self) -> None:
611 # Set name to default if not provided
612 if self.name is None: 24f, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdhiFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gii}hKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gjiWe}gXe~gki2e3e{hh ) mii * ziAitiuiEibhp a j 7e0eb c ?hah$hsf1ekhmhd g nipiqiFisieiai@hXfcirioibiCivh;hlh~hdifigiGiIiHili=h%hOf'hHhPf4 QfnhwhxhyhAhzhBhJiKiLiMiNiChIhJhKhLhOiPiMhNhOhPhQhGhRhShThohQiRiSiUhphTiqhUiViWiVhXiWhXhYhrhYiZiZh0h1h2h3hDhEhFhshth0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i4h}i~iajbjcjdjejfjgjhjijjjxiyi5h6h7h8hkjljmjnjojpjqjrjsjtjujvj9hwj!huh#hxjehchdhfh0 hhgh_h[h]h^hjh`hih1 |h
613 self.name = "default_program" 2Gi
614 self._name = self.name.encode() 24f, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdhiFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gii}hKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gjiWe}gXe~gki2e3e{hh ) mii * ziAitiuiEibhp a j 7e0eb c ?hah$hsf1ekhmhd g nipiqiFisieiai@hXfcirioibiCivh;hlh~hdifigiGiIiHili=h%hOf'hHhPf4 QfnhwhxhyhAhzhBhJiKiLiMiNiChIhJhKhLhOiPiMhNhOhPhQhGhRhShThohQiRiSiUhphTiqhUiViWiVhXiWhXhYhrhYiZiZh0h1h2h3hDhEhFhshth0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i4h}i~iajbjcjdjejfjgjhjijjjxiyi5h6h7h8hkjljmjnjojpjqjrjsjtjujvj9hwj!huh#hxjehchdhfh0 hhgh_h[h]h^hjh`hih1 |h
615 # Set arch to default if not provided
616 if self.arch is None: 24f, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdhiFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gii}hKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gjiWe}gXe~gki2e3e{hh ) mii * ziAitiuiEibhp a j 7e0eb c ?hah$hsf1ekhmhd g nipiqiFisieiai@hXfcirioibiCivh;hlh~hdifigiGiIiHili=h%hOf'hHhPf4 QfnhwhxhyhAhzhBhJiKiLiMiNiChIhJhKhLhOiPiMhNhOhPhQhGhRhShThohQiRiSiUhphTiqhUiViWiVhXiWhXhYhrhYiZiZh0h1h2h3hDhEhFhshth0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i4h}i~iajbjcjdjejfjgjhjijjjxiyi5h6h7h8hkjljmjnjojpjqjrjsjtjujvj9hwj!huh#hxjehchdhfh0 hhgh_h[h]h^hjh`hih1 |h
617 self.arch = f"sm_{Device().arch}" 24f9f%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2c5 6 7 X Y Z 3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdhi'f(f)f*f+f,f-f.f/f:f;f=f?f@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgegfggghg! igjgkglgmgngogpgqgrg# sgtgugvgwgxgygzgAgBgCgDgEgFgGgHgIgJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgYgZg0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(g)g*g+g,g-g.g/gii}h:g;g=g?g@g[g]g^g_g`g{g|gji}g~gki{hh ) mii * bhp ?hah$hsfd g nieiai@hXfcirioibili=h%hOf'hHhPf4 Qf
618 if self.use_bundled_headers: 24f, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdhiFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gii}hKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gjiWe}gXe~gki2e3e{hh ) mii * ziAitiuiEibhp a j 7e0eb c ?hah$hsf1ekhmhd g nipiqiFisieiai@hXfcirioibiCivh;hlh~hdifigiGiIiHili=h%hOf'hHhPf4 QfnhwhxhyhAhzhBhJiKiLiMiNiChIhJhKhLhOiPiMhNhOhPhQhGhRhShThohQiRiSiUhphTiqhUiViWiVhXiWhXhYhrhYiZiZh0h1h2h3hDhEhFhshth0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i4h}i~iajbjcjdjejfjgjhjijjjxiyi5h6h7h8hkjljmjnjojpjqjrjsjtjujvj9hwj!huh#hxjehchdhfh0 hhgh_h[h]h^hjh`hih1 |h
619 # --use-bundled-headers (and the bundled CUDA/CCCL headers themselves) were
620 # introduced in NVRTC 13.3.
621 nvrtc_major, nvrtc_minor = handle_return(nvrtc.nvrtcVersion()) 14
622 if (nvrtc_major, nvrtc_minor) < (13, 3): 14
623 raise RuntimeError(
624 "use_bundled_headers requires NVRTC >= 13.3, but found "
625 f"{nvrtc_major}.{nvrtc_minor}. Upgrade the CUDA Toolkit / driver providing "
626 "libnvrtc, or set use_bundled_headers=False and supply include_path manually."
627 )
628 if self.extra_sources is not None: 24f, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdhiFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gii}hKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gjiWe}gXe~gki2e3e{hh ) mii * ziAitiuiEibhp a j 7e0eb c ?hah$hsf1ekhmhd g nipiqiFisieiai@hXfcirioibiCivh;hlh~hdifigiGiIiHili=h%hOf'hHhPf4 QfnhwhxhyhAhzhBhJiKiLiMiNiChIhJhKhLhOiPiMhNhOhPhQhGhRhShThohQiRiSiUhphTiqhUiViWiVhXiWhXhYhrhYiZiZh0h1h2h3hDhEhFhshth0i1i2i3i4i5i6i7i8i9i!i#i$i%i'i(i)i*i+i,i-i.i/i:i;i=i?i@i[i]i^i_i`i{i|i4h}i~iajbjcjdjejfjgjhjijjjxiyi5h6h7h8hkjljmjnjojpjqjrjsjtjujvj9hwj!huh#hxjehchdhfh0 hhgh_h[h]h^hjh`hih1 |h
629 if not is_sequence(self.extra_sources): 2miziAitiuiEid g piqisilixiyi
630 raise TypeError( 2Ei
631 "extra_sources must be a sequence of 2-tuples: ((name1, source1), (name2, source2), ...)"
632 )
633 for i, module in enumerate(self.extra_sources): 2miziAitiuid g piqisilixiyi
634 if not isinstance(module, tuple) or len(module) != 2: 2miziAitiuid g piqisilixiyi
635 raise TypeError( 2Ai
636 f"Each extra module must be a 2-tuple (name, source)" 2Ai
637 f", got {type(module).__name__} at index {i}" 2Ai
638 )
640 module_name, module_source = module 2mizitiuid g piqisilixiyi
642 if not isinstance(module_name, str): 2mizitiuid g piqisilixiyi
643 raise TypeError(f"Module name at index {i} must be a string, got {type(module_name).__name__}") 2zi
645 if not isinstance(module_source, (str, bytes, bytearray)): 2mitiuid g piqisilixiyi
646 raise TypeError( 2ti
647 f"Module source at index {i} must be str (textual LLVM IR), bytes (textual LLVM IR or bitcode), " 2ti
648 f"or bytearray, got {type(module_source).__name__}" 2ti
649 )
651 if len(module_source) == 0: 2miuid g piqisilixiyi
652 raise ValueError(f"Module source for '{module_name}' (index {i}) cannot be empty") 2ui
654 def _prepare_nvrtc_options(self) -> list[bytes]:
655 return _prepare_nvrtc_options_impl(self) 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c Xfvh~hdifigiOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
657 def _prepare_nvvm_options(self, as_bytes: bool = True) -> list[bytes] | list[str]:
658 return _prepare_nvvm_options_impl(self, as_bytes) 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
660 def as_bytes(self, backend: CompilerBackendType | str, target_type: ObjectCodeFormatType | str | None = None) -> list[bytes]:
661 """Convert program options to bytes format for the specified backend.
663 This method transforms the program options into a format suitable for the
664 specified compiler backend. Different backends may use different option names
665 and formats even for the same conceptual options.
667 Parameters
668 ----------
669 backend : CompilerBackendType | str
670 The compiler backend to prepare options for. Must be either "nvrtc" or "nvvm".
671 target_type : ObjectCodeFormatType | str, optional
672 The compilation target type (e.g., "ptx", "cubin", "ltoir"). Some backends
673 require additional options based on the target type.
675 Returns
676 -------
677 list[bytes]
678 List of option strings encoded as bytes.
680 Raises
681 ------
682 ValueError
683 If an unknown backend is specified.
684 CUDAError
685 If an option incompatible with the specified backend is set.
687 Examples
688 --------
689 >>> options = ProgramOptions(arch="sm_80", debug=True)
690 >>> nvrtc_options = options.as_bytes("nvrtc")
691 """
692 backend = str(backend).lower() 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~g2e3eh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c ahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g XfCivh;hlh~hdifigiOfPf4 QfnhwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThohUhphqhVhWhXhYhrhZh0h1h2h3hDhEhFhshth4h5h6h7h8h9h!huh#hehchdhfh0 hhghjhih1
693 if backend == "nvrtc": 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~g2e3eh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c ahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g XfCivh;hlh~hdifigiOfPf4 QfnhwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThohUhphqhVhWhXhYhrhZh0h1h2h3hDhEhFhshth4h5h6h7h8h9h!huh#hehchdhfh0 hhghjhih1
694 return self._prepare_nvrtc_options() 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c Xfvh~hdifigiOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
695 elif backend == "nvvm": 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g Ci;hlhnhohphqhrhDhEhFhshthuh
696 options = self._prepare_nvvm_options(as_bytes=True) 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
697 if target_type == "ltoir" and b"-gen-lto" not in options: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g lhnhohphqhrhDhEhFhshthuh
698 options.append(b"-gen-lto") 22e3eSfTfUf8eVf9eWfd
699 return options 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g lhnhohphqhrhDhEhFhshthuh
700 else:
701 raise ValueError(f"Unknown backend '{backend}'. Must be one of: 'nvrtc', 'nvvm'") 2Ci
703 def __repr__(self) -> str:
704 return f"ProgramOptions(name={self.name!r}, arch={self.arch!r})" 2Hi
706 def _prepare_extra_sources_bytes(self) -> list[tuple[bytes, bytes]] | None:
707 """Convert extra_sources to bytes format for NVVM."""
708 if self.extra_sources is None: 2d g piqiFisi
709 return None 2Fi
711 result = [] 2d g piqisi
712 for module_name, module_source in self.extra_sources: 2d g piqisi
713 name_bytes = module_name.encode("utf-8") 2d g piqisi
714 if isinstance(module_source, str): 2d g piqisi
715 source_bytes = module_source.encode("utf-8") 2d g si
716 elif isinstance(module_source, bytearray): 2piqi
717 source_bytes = bytes(module_source) 2pi
718 else:
719 source_bytes = module_source 2qi
720 result.append((name_bytes, source_bytes)) 2d g piqisi
721 return result 2d g piqisi
724# =============================================================================
725# Private Classes and Helper Functions
726# =============================================================================
729def _program_compile_uncached(program, target_type, name_expressions, logs):
730 """Run ``Program_compile`` without the cache wrapper.
732 Module-level Python function so tests can monkeypatch it from
733 ``cuda.core._program`` to avoid invoking NVRTC when exercising the cache
734 wrapper in :meth:`Program.compile`. ``Program`` itself is a ``cdef class``
735 and its methods cannot be reassigned from Python, so the seam must live
736 outside the class.
737 """
738 return Program_compile(program, target_type, name_expressions, logs) 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~g2e3eh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c ah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g @hXf%hOf'hHh(h)h*h+h,h-hPf.h/h:h4 Qf0 1
741# Module-level state for NVVM lazy loading
742_nvvm_module = None
743_nvvm_import_attempted = False
746def _get_nvvm_module() -> object:
747 """Get the NVVM module, importing it lazily with availability checks."""
748 global _nvvm_module, _nvvm_import_attempted
750 if _nvvm_module is not None: 24f}hviwiDi2e3e?hah$hPjsfQj1eSfZfTf0fUfRj1f8e#eVf2f9e$eWf3fd g ninhohphqhrhshthuh
751 return _nvvm_module 2}h2e3e?hah$hPjsfQj1eSfZfTf0fUfRj1f8e#eVf2f9e$eWf3fd g ninhohphqhrhshthuh
752 if _nvvm_import_attempted: 24fviwiDi
753 raise RuntimeError("NVVM module is not available (previous import attempt failed)")
755 try: 24fviwiDi
756 version = binding_version() 24fviwiDi
757 if version < (12, 9, 0): 24fviwiDi
758 raise RuntimeError(
759 f"NVVM bindings require cuda-bindings >= 12.9.0, but found {'.'.join(map(str, version))}. "
760 "Please update cuda-bindings to use NVVM features."
761 )
763 nvvm = _optional_cuda_import( 24fviwiDi
764 "cuda.bindings.nvvm",
765 probe_function=lambda module: module.version(), # probe triggers libnvvm load 24fviwiDi
766 )
767 if nvvm is None: 24fviwi
768 raise RuntimeError( 2viwi
769 "NVVM support is unavailable: cuda.bindings.nvvm is missing or libnvvm cannot be loaded."
770 )
772 _nvvm_module = nvvm
773 return _nvvm_module
775 except RuntimeError: 2viwiDi
776 _nvvm_module = None 2viwi
777 _nvvm_import_attempted = True 2viwi
778 raise 2viwi
781def _find_libdevice_path() -> object:
782 """Find libdevice*.bc for NVVM compilation using cuda.pathfinder."""
783 from cuda.pathfinder import find_bitcode_lib 2Sj
784 return find_bitcode_lib("device") 2Sj
787cdef inline bint _process_define_macro_inner(list options, object macro) except? -1:
788 """Process a single define macro, returning True if successful."""
789 if isinstance(macro, str): 2+ 2 n o ~hdifigi
790 options.append(f"--define-macro={macro}") 1+
791 return True 1+
792 if isinstance(macro, tuple): 22 n o ~hdifigi
793 if len(macro) != 2 or any(not isinstance(val, str) for val in macro): 22 n o ~hfigi
794 raise RuntimeError(f"Expected define_macro tuple[str, str], got {macro}") 2~hfigi
795 options.append(f"--define-macro={macro[0]}={macro[1]}") 12no
796 return True 12no
797 return False 2n o ~hdi
800cdef inline void _process_define_macro(list options, object macro) except *:
801 """Process define_macro option which can be str, tuple, or list thereof."""
802 union_type = "Union[str, tuple[str, str]]" 2+ 2 n o ~hdifigi
803 if _process_define_macro_inner(options, macro): 2+ 2 n o ~hdifigi
804 return 1+2
805 if is_nested_sequence(macro): 2n o ~hdi
806 for seq_macro in macro: 2n o ~h
807 if not _process_define_macro_inner(options, seq_macro): 2n o ~h
808 raise RuntimeError(f"Expected define_macro {union_type}, got {seq_macro}")
809 return 1no
810 raise RuntimeError(f"Expected define_macro {union_type}, list[{union_type}], got {macro}") 2di
813cpdef bint _can_load_generated_ptx() except? -1:
814 """Check if the driver can load PTX generated by the current NVRTC version."""
815 drv = driver_version() 2%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifjfkfk l m zjX AjY BjZ CjDjh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfOfPf4 chdh
816 nvrtc_major, nvrtc_minor = handle_return(nvrtc.nvrtcVersion()) 2%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifjfkfk l m zjX AjY BjZ CjDjh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfOfPf4 chdh
817 return (nvrtc_major, nvrtc_minor, 0) <= drv 2%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifjfkfk l m zjX AjY BjZ CjDjh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfOfPf4 chdh
820cdef inline object _translate_program_options(object options):
821 """Translate ProgramOptions to LinkerOptions for PTX compilation."""
822 # ``numba_debug`` is an NVVM/NVRTC compiler option that no linking backend can
823 # honor. It used to be forwarded into ``LinkerOptions`` and dropped without a
824 # word; warn instead, and do not forward -- forwarding would only trigger the
825 # deprecation warning on a field the user never touched. ``UserWarning``, not
826 # ``DeprecationWarning``: ``ProgramOptions.numba_debug`` is not deprecated, it
827 # is fully supported on NVVM and NVRTC and merely inapplicable here. The gate
828 # is truthiness, matching ``_prepare_nvvm_options_impl``: only an enabled
829 # ``numba_debug`` asks for something this path cannot deliver.
830 if options.numba_debug: 2=h%h'hHh(h)h*h+h,h-h.h/h:h
831 warn( 2Hh
832 "numba_debug is ignored for code_type='ptx', which is processed by the linker; "
833 "it applies only to the NVVM and NVRTC compilation backends.",
834 UserWarning, 2Hh
835 stacklevel=4,
836 )
837 return LinkerOptions( 2=h%h'hHh(h)h*h+h,h-h.h/h:h
838 name=options.name, 2=h%h'hHh(h)h*h+h,h-h.h/h:h
839 arch=options.arch, 2=h%h'hHh(h)h*h+h,h-h.h/h:h
840 max_register_count=options.max_register_count, 2=h%h'hHh(h)h*h+h,h-h.h/h:h
841 time=options.time, 2=h%h'hHh(h)h*h+h,h-h.h/h:h
842 link_time_optimization=options.link_time_optimization, 2=h%h'hHh(h)h*h+h,h-h.h/h:h
843 debug=options.debug, 2=h%h'hHh(h)h*h+h,h-h.h/h:h
844 lineinfo=options.lineinfo, 2=h%h'hHh(h)h*h+h,h-h.h/h:h
845 ftz=options.ftz, 2=h%h'hHh(h)h*h+h,h-h.h/h:h
846 prec_div=options.prec_div, 2=h%h'hHh(h)h*h+h,h-h.h/h:h
847 prec_sqrt=options.prec_sqrt, 2=h%h'hHh(h)h*h+h,h-h.h/h:h
848 fma=options.fma, 2=h%h'hHh(h)h*h+h,h-h.h/h:h
849 split_compile=options.split_compile, 2=h%h'hHh(h)h*h+h,h-h.h/h:h
850 ptxas_options=options.ptxas_options, 2=h%h'hHh(h)h*h+h,h-h.h/h:h
851 no_cache=options.no_cache, 2=h%h'hHh(h)h*h+h,h-h.h/h:h
852 )
855cdef inline int Program_init(Program self, object code, str code_type, object options) except -1:
856 """Initialize a Program instance."""
857 cdef cynvrtc.nvrtcProgram nvrtc_prog
858 cdef cynvvm.nvvmProgram nvvm_prog
859 cdef bytes code_bytes
860 cdef const char* code_ptr
861 cdef const char* name_ptr
862 cdef size_t code_len
863 cdef bytes module_bytes
864 cdef const char* module_ptr
865 cdef size_t module_len
867 self._options = options = check_or_create_options(ProgramOptions, options, "Program options") 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdhiFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gii}hKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gjiWe}gXe~gki2e3e{hh ) mii * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c ?hah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g nieiai@hXfcirioibili=h%hOf'hHh(h)h*h+h,h-hPf.h/h:h4 Qfehchdhfh0 hhgh_h[h]h^hjh`hih1 |h
868 code_type = code_type.lower() 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdhiFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gii}hKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gjiWe}gXe~gki2e3e{hh ) mii * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c ?hah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g nieiai@hXfcirioibili=h%hOf'hHh(h)h*h+h,h-hPf.h/h:h4 Qfehchdhfh0 hhgh_h[h]h^hjh`hih1 |h
869 self._code_type = code_type 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdhiFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gii}hKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gjiWe}gXe~gki2e3e{hh ) mii * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c ?hah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g nieiai@hXfcirioibili=h%hOf'hHh(h)h*h+h,h-hPf.h/h:h4 Qfehchdhfh0 hhgh_h[h]h^hjh`hih1 |h
870 self._compile_lock = threading.Lock() 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdhiFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gii}hKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gjiWe}gXe~gki2e3e{hh ) mii * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c ?hah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g nieiai@hXfcirioibili=h%hOf'hHh(h)h*h+h,h-hPf.h/h:h4 Qfehchdhfh0 hhgh_h[h]h^hjh`hih1 |h
871 self._use_libdevice = False 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdhiFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gii}hKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gjiWe}gXe~gki2e3e{hh ) mii * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c ?hah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g nieiai@hXfcirioibili=h%hOf'hHh(h)h*h+h,h-hPf.h/h:h4 Qfehchdhfh0 hhgh_h[h]h^hjh`hih1 |h
872 self._libdevice_added = False 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdhiFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gii}hKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gjiWe}gXe~gki2e3e{hh ) mii * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c ?hah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g nieiai@hXfcirioibili=h%hOf'hHh(h)h*h+h,h-hPf.h/h:h4 Qfehchdhfh0 hhgh_h[h]h^hjh`hih1 |h
874 self._pch_status = None 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdhiFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gii}hKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gjiWe}gXe~gki2e3e{hh ) mii * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c ?hah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g nieiai@hXfcirioibili=h%hOf'hHh(h)h*h+h,h-hPf.h/h:h4 Qfehchdhfh0 hhgh_h[h]h^hjh`hih1 |h
875 self._nvrtc_name = options._name 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdhiFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gii}hKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gjiWe}gXe~gki2e3e{hh ) mii * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c ?hah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g nieiai@hXfcirioibili=h%hOf'hHh(h)h*h+h,h-hPf.h/h:h4 Qfehchdhfh0 hhgh_h[h]h^hjh`hih1 |h
876 self._extra_options = [] 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdhiFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gii}hKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gjiWe}gXe~gki2e3e{hh ) mii * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c ?hah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g nieiai@hXfcirioibili=h%hOf'hHh(h)h*h+h,h-hPf.h/h:h4 Qfehchdhfh0 hhgh_h[h]h^hjh`hih1 |h
878 if code_type == "c++": 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdhiFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gii}hKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gjiWe}gXe~gki2e3e{hh ) mii * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c ?hah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g nieiai@hXfcirioibili=h%hOf'hHh(h)h*h+h,h-hPf.h/h:h4 Qfehchdhfh0 hhgh_h[h]h^hjh`hih1 |h
879 assert_type(code, str) 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdhiFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/giiKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gjiWe}gXe~gki{hh ) mii * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c eiai@hXfciribiOfPf4 Qfehchdhfh0 hhgh_h[h]h^hjh`hih1 |h
880 if options.extra_sources is not None: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdhiFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/giiKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gjiWe}gXe~gki{hh ) mii * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c eiai@hXfcibiOfPf4 Qfehchdhfh0 hhgh_h[h]h^hjh`hih1 |h
881 raise ValueError("extra_sources is not supported by the NVRTC backend (C++ code_type)") 2mi
883 if (options.debug or options.lineinfo) and options.name == "default_program": 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdhiFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/giiKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gjiWe}gXe~gki{hh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c eiai@hXfcibiOfPf4 Qfehchdhfh0 hhgh_h[h]h^hjh`hih1 |h
884 debug_path = self._try_materialize_nvrtc_debug_source(code) 1efajbc
885 if debug_path is not None: 1efajbc
886 self._nvrtc_name = debug_path.encode() 1efabc
887 # NVRTC resolves #include "..." against the directory of the name it
888 # is given, so moving the name into the temp dir would otherwise stop
889 # every quoted include from resolving where it did before.
890 try: 1efabc
891 include_dir = os.path.dirname(os.path.abspath(options.name)) 1efabc
892 except OSError:
893 # abspath needs a cwd; with none there is no directory to restore.
894 pass
895 else:
896 self._extra_options = [b"--include-path=" + include_dir.encode()] 1efabc
898 # TODO: support pre-loaded headers & include names
899 code_bytes = code.encode() 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdhiFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/giiKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gjiWe}gXe~gki{hh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c eiai@hXfcibiOfPf4 Qfehchdhfh0 hhgh_h[h]h^hjh`hih1 |h
900 code_ptr = <const char*>code_bytes 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdhiFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/giiKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gjiWe}gXe~gki{hh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c eiai@hXfcibiOfPf4 Qfehchdhfh0 hhgh_h[h]h^hjh`hih1 |h
901 name_ptr = <const char*>self._nvrtc_name 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdhiFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/giiKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gjiWe}gXe~gki{hh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c eiai@hXfcibiOfPf4 Qfehchdhfh0 hhgh_h[h]h^hjh`hih1 |h
903 with nogil: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdhiFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/giiKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gjiWe}gXe~gki{hh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c eiai@hXfcibiOfPf4 Qfehchdhfh0 hhgh_h[h]h^hjh`hih1 |h
904 HANDLE_RETURN_NVRTC(NULL, cynvrtc.nvrtcCreateProgram( 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdhiFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/giiKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gjiWe}gXe~gki{hh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c eiai@hXfcibiOfPf4 Qfehchdhfh0 hhgh_h[h]h^hjh`hih1 |h
905 &nvrtc_prog, code_ptr, name_ptr, 0, NULL, NULL))
906 self._h_nvrtc = create_nvrtc_program_handle(nvrtc_prog) 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdhiFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/giiKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gjiWe}gXe~gki{hh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c eiai@hXfcibiOfPf4 Qfehchdhfh0 hhgh_h[h]h^hjh`hih1 |h
907 self._code = code_bytes 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdhiFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/giiKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gjiWe}gXe~gki{hh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c eiai@hXfcibiOfPf4 Qfehchdhfh0 hhgh_h[h]h^hjh`hih1 |h
908 self._backend = str(CompilerBackendType.NVRTC) 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdhiFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/giiKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gjiWe}gXe~gki{hh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c eiai@hXfcibiOfPf4 Qfehchdhfh0 hhgh_h[h]h^hjh`hih1 |h
909 self._linker = None 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdhiFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/giiKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gjiWe}gXe~gki{hh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c eiai@hXfcibiOfPf4 Qfehchdhfh0 hhgh_h[h]h^hjh`hih1 |h
911 elif code_type == "ptx": 2}h2e3e?hah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g nioili=h%h'hHh(h)h*h+h,h-h.h/h:h
912 assert_type(code, str) 2li=h%h'hHh(h)h*h+h,h-h.h/h:h
913 if options.extra_sources is not None: 2li=h%h'hHh(h)h*h+h,h-h.h/h:h
914 raise ValueError("extra_sources is not supported by the PTX backend.") 2li
915 code_bytes = code.encode() 2=h%h'hHh(h)h*h+h,h-h.h/h:h
916 self._code = code_bytes 2=h%h'hHh(h)h*h+h,h-h.h/h:h
917 self._linker = Linker( 2=h%h'hHh(h)h*h+h,h-h.h/h:h
918 ObjectCode._init(code_bytes, code_type), options=_translate_program_options(options) 2=h%h'hHh(h)h*h+h,h-h.h/h:h
919 )
920 self._backend = str(Linker.which_backend()) 2=h%h'hHh(h)h*h+h,h-h.h/h:h
922 elif code_type == "nvvm": 2}h2e3e?hah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g nioi
923 _get_nvvm_module() # Validate NVVM availability 2}h2e3e?hah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g ni
924 if isinstance(code, str): 2}h2e3e?hah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g ni
925 code = code.encode("utf-8") 2}hah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g
926 elif not isinstance(code, (bytes, bytearray)): 22e3e?hni
927 raise TypeError("NVVM IR code must be provided as str, bytes, or bytearray") 2ni
928 self._code = bytes(code) # Coerce bytearray -> bytes so retention type is stable 2}h2e3e?hah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g
930 # Use self._code (strictly bytes) for the C pointer so a bytearray
931 # input doesn't trip the `<bytes>code` cast at runtime.
932 code_ptr = <const char*>self._code 2}h2e3e?hah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g
933 name_ptr = <const char*>options._name 2}h2e3e?hah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g
934 code_len = len(self._code) 2}h2e3e?hah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g
936 with nogil: 2}h2e3e?hah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g
937 HANDLE_RETURN_NVVM(NULL, cynvvm.nvvmCreateProgram(&nvvm_prog)) 2}h2e3e?hah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g
938 self._h_nvvm = create_nvvm_program_handle(nvvm_prog) # RAII from here 2}h2e3e?hah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g
939 with nogil: 2}h2e3e?hah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g
940 HANDLE_RETURN_NVVM(nvvm_prog, cynvvm.nvvmAddModuleToProgram(nvvm_prog, code_ptr, code_len, name_ptr)) 2}h2e3e?hah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g
942 # Add extra modules if provided
943 if options.extra_sources is not None: 2}h2e3e?hah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g
944 extra_sources_bytes = options._prepare_extra_sources_bytes() 1dg
945 for module_name_bytes, module_bytes in extra_sources_bytes: 1dg
946 module_ptr = <const char*>module_bytes 1dg
947 module_len = len(module_bytes) 1dg
948 module_name_ptr = <const char*>module_name_bytes 1dg
949 with nogil: 1dg
950 HANDLE_RETURN_NVVM(nvvm_prog, cynvvm.nvvmAddModuleToProgram( 1dg
951 nvvm_prog, module_ptr, module_len, module_name_ptr))
953 # Store use_libdevice flag
954 if options.use_libdevice: 2}h2e3e?hah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g
955 self._use_libdevice = True
957 self._backend = str(CompilerBackendType.NVVM) 2}h2e3e?hah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g
958 self._linker = None 2}h2e3e?hah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g
960 else:
961 supported_code_types = tuple(x.value for x in SourceCodeType) 2oi
962 if options.use_libdevice: 2oi
963 raise ValueError("use_libdevice is only supported by the NVVM backend")
964 raise RuntimeError(f"Unsupported {code_type=} ({supported_code_types=})") 2oi
966 return 0 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdhiFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gii}hKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gjiWe}gXe~gki2e3e{hh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c ?hah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g eiai@hXfcibi=h%hOf'hHh(h)h*h+h,h-hPf.h/h:h4 Qfehchdhfh0 hhgh_h[h]h^hjh`hih1 |h
969cdef object _nvrtc_compile_and_extract(
970 cynvrtc.nvrtcProgram prog, str target_type, object name_expressions,
971 object logs, list options_list, str name,
972):
973 """Run nvrtcCompileProgram on *prog* and extract the output.
975 This is the inner compile+extract loop, factored out so the PCH
976 auto-retry path can call it on a fresh program handle.
977 """
978 cdef size_t output_size = 0 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfOfPf4 Qf0 1
979 cdef size_t logsize = 0 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfOfPf4 Qf0 1
980 cdef vector[const char*] options_vec
981 cdef char* data_ptr = NULL 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfOfPf4 Qf0 1
982 cdef bytes name_bytes
983 cdef const char* name_ptr = NULL 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfOfPf4 Qf0 1
984 cdef const char* lowered_name = NULL 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfOfPf4 Qf0 1
985 cdef dict symbol_mapping = {} 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfOfPf4 Qf0 1
987 # Add name expressions before compilation
988 if name_expressions: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfOfPf4 Qf0 1
989 for n in name_expressions: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcscr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2ck l m 5 6 7 X Y Z 3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d8 9 7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d! # /d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe$ % peqereseteuevewexeyezeAeBeCeDe' ( EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXe
990 name_bytes = n.encode() if isinstance(n, str) else n 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcscr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2ck l m 5 6 7 X Y Z 3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d8 9 7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d! # /d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe$ % peqereseteuevewexeyezeAeBeCeDe' ( EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXe
991 name_ptr = <const char*>name_bytes 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcscr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2ck l m 5 6 7 X Y Z 3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d8 9 7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d! # /d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe$ % peqereseteuevewexeyezeAeBeCeDe' ( EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXe
992 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcAddNameExpression(prog, name_ptr)) 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcscr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2ck l m 5 6 7 X Y Z 3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d8 9 7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d! # /d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe$ % peqereseteuevewexeyezeAeBeCeDe' ( EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXe
994 # Build options array
995 options_vec.resize(len(options_list)) 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfOfPf4 Qf0 1
996 for i in range(len(options_list)): 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfOfPf4 Qf0 1
997 options_vec[i] = <const char*>(<bytes>options_list[i]) 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfOfPf4 Qf0 1
999 # Compile
1000 with nogil: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfOfPf4 Qf0 1
1001 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcCompileProgram(prog, <int>options_vec.size(), options_vec.data())) 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfOfPf4 Qf0 1
1003 # Get compiled output based on target type
1004 if target_type == "ptx": 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfp a j 7e0eb c XfOfPf4 Qf0 1
1005 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetPTXSize(prog, &output_size)) 2%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifjfkfk l m X Y Z h ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfp a j 7e0eb c XfOfPf4
1006 data = bytearray(output_size) 2%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifjfkfk l m X Y Z h ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfp a j 7e0eb c XfOfPf4
1007 data_ptr = <char*>(<bytearray>data) 2%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifjfkfk l m X Y Z h ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfp a j 7e0eb c XfOfPf4
1008 with nogil: 2%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifjfkfk l m X Y Z h ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfp a j 7e0eb c XfOfPf4
1009 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetPTX(prog, data_ptr)) 2%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifjfkfk l m X Y Z h ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfp a j 7e0eb c XfOfPf4
1010 elif target_type == "cubin": 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEcYfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gQf0 1
1011 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetCUBINSize(prog, &output_size)) 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gQf0 1
1012 data = bytearray(output_size) 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gQf0 1
1013 data_ptr = <char*>(<bytearray>data) 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gQf0 1
1014 with nogil: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gQf0 1
1015 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetCUBIN(prog, data_ptr)) 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gQf0 1
1016 else: # ltoir
1017 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetLTOIRSize(prog, &output_size)) 2Yf5 6 7 /g
1018 data = bytearray(output_size) 2Yf5 6 7 /g
1019 data_ptr = <char*>(<bytearray>data) 2Yf5 6 7 /g
1020 with nogil: 2Yf5 6 7 /g
1021 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetLTOIR(prog, data_ptr)) 2Yf5 6 7 /g
1023 # Get lowered names after compilation
1024 if name_expressions: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfp a j 7e0eb c XfOfPf4 Qf0 1
1025 for n in name_expressions: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcscr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2ck l m 5 6 7 X Y Z 3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d8 9 7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d! # /d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe$ % peqereseteuevewexeyezeAeBeCeDe' ( EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXe
1026 name_bytes = n.encode() if isinstance(n, str) else n 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcscr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2ck l m 5 6 7 X Y Z 3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d8 9 7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d! # /d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe$ % peqereseteuevewexeyezeAeBeCeDe' ( EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXe
1027 name_ptr = <const char*>name_bytes 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcscr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2ck l m 5 6 7 X Y Z 3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d8 9 7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d! # /d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe$ % peqereseteuevewexeyezeAeBeCeDe' ( EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXe
1028 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetLoweredName(prog, name_ptr, &lowered_name)) 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcscr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2ck l m 5 6 7 X Y Z 3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d8 9 7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d! # /d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe$ % peqereseteuevewexeyezeAeBeCeDe' ( EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXe
1029 symbol_mapping[n] = lowered_name if lowered_name != NULL else None 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcscr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEcFcGcHcIcJcKcLcMcNcOcPcQcRcScTcUcVcWcXcYcZc0c1c2ck l m 5 6 7 X Y Z 3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d8 9 7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d! # /d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe$ % peqereseteuevewexeyezeAeBeCeDe' ( EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXe
1031 # Get compilation log if requested
1032 if logs is not None: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfp a j 7e0eb c XfOfPf4 Qf0 1
1033 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetProgramLogSize(prog, &logsize)) 1p
1034 if logsize > 1: 1p
1035 log = bytearray(logsize) 1p
1036 data_ptr = <char*>(<bytearray>log) 1p
1037 with nogil: 1p
1038 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetProgramLog(prog, data_ptr)) 1p
1039 logs.write(log.decode("utf-8", errors="backslashreplace")) 1p
1041 return ObjectCode._init(bytes(data), target_type, symbol_mapping=symbol_mapping, name=name) 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfp a j 7e0eb c XfOfPf4 Qf0 1
1044cdef int _nvrtc_pch_apis_cached = -1 # -1 = unchecked
1046cdef bint _has_nvrtc_pch_apis():
1047 global _nvrtc_pch_apis_cached
1048 if _nvrtc_pch_apis_cached < 0: 1hiq
1049 _nvrtc_pch_apis_cached = hasattr(nvrtc, "nvrtcGetPCHCreateStatus") 1hq
1050 return _nvrtc_pch_apis_cached 1hiq
1053cdef object _read_pch_status(cynvrtc.nvrtcProgram prog):
1054 """Query nvrtcGetPCHCreateStatus and translate to a high-level string."""
1055 cdef cynvrtc.nvrtcResult err
1056 with nogil: 1hiq
1057 err = cynvrtc.nvrtcGetPCHCreateStatus(prog) 1hiq
1058 if err == cynvrtc.nvrtcResult.NVRTC_SUCCESS: 1hiq
1059 return PCHStatusType.CREATED 1hiq
1060 if err == cynvrtc.nvrtcResult.NVRTC_ERROR_PCH_CREATE_HEAP_EXHAUSTED:
1061 return None # sentinel: caller should auto-retry
1062 if err == cynvrtc.nvrtcResult.NVRTC_ERROR_NO_PCH_CREATE_ATTEMPTED:
1063 return PCHStatusType.NOT_ATTEMPTED
1064 return PCHStatusType.FAILED
1067cdef object Program_compile_nvrtc(Program self, str target_type, object name_expressions, object logs):
1068 """Compile using NVRTC backend and return ObjectCode."""
1069 cdef cynvrtc.nvrtcProgram prog = as_cu(self._h_nvrtc) 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfOfPf4 Qf0 1
1070 cdef list options_list = self._options.as_bytes("nvrtc", target_type) + self._extra_options 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfOfPf4 Qf0 1
1072 result = _nvrtc_compile_and_extract( 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfOfPf4 Qf0 1
1073 prog, target_type, name_expressions, logs, options_list, self._nvrtc_name.decode(), 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfOfPf4 Qf0 1
1074 )
1076 cdef bint pch_creation_possible = self._options.create_pch or self._options.pch 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfp a j 7e0eb c XfOfPf4 Qf0 1
1077 if not pch_creation_possible or not _has_nvrtc_pch_apis(): 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfp a j 7e0eb c XfOfPf4 Qf0 1
1078 self._pch_status = None 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~g) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfMfNfrfp a j 7e0eb c XfOfPf4 Qf0 1
1079 return result 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~g) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfMfNfrfp a j 7e0eb c XfOfPf4 Qf0 1
1081 try: 1hiq
1082 status = _read_pch_status(prog) 1hiq
1083 except RuntimeError as e:
1084 raise RuntimeError(
1085 "PCH was requested but the runtime libnvrtc does not support "
1086 "PCH APIs. Update to CUDA toolkit 12.8 or newer."
1087 ) from e
1089 if status is not None: 1hiq
1090 self._pch_status = str(status) 1hiq
1091 return result 1hiq
1093 # Heap exhausted — auto-resize and retry with a fresh program
1094 cdef size_t required = 0
1095 with nogil:
1096 HANDLE_RETURN_NVRTC(prog, cynvrtc.nvrtcGetPCHHeapSizeRequired(prog, &required))
1097 HANDLE_RETURN_NVRTC(NULL, cynvrtc.nvrtcSetPCHHeapSize(required))
1099 cdef cynvrtc.nvrtcProgram retry_prog
1100 cdef const char* code_ptr = <const char*>self._code
1101 cdef const char* name_ptr = <const char*>self._nvrtc_name
1102 with nogil:
1103 HANDLE_RETURN_NVRTC(NULL, cynvrtc.nvrtcCreateProgram(
1104 &retry_prog, code_ptr, name_ptr, 0, NULL, NULL))
1105 self._h_nvrtc = create_nvrtc_program_handle(retry_prog)
1107 result = _nvrtc_compile_and_extract(
1108 retry_prog, target_type, name_expressions, logs, options_list, self._nvrtc_name.decode(),
1109 )
1111 status = _read_pch_status(retry_prog)
1112 self._pch_status = status if status is not None else str(PCHStatusType.FAILED)
1113 return result
1116cdef object Program_compile_nvvm(Program self, str target_type, object logs):
1117 """Compile using NVVM backend and return ObjectCode."""
1118 cdef cynvvm.nvvmProgram prog = as_cu(self._h_nvvm) 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g
1119 cdef size_t output_size = 0 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g
1120 cdef size_t logsize = 0 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g
1121 cdef vector[const char*] options_vec
1122 cdef char* data_ptr = NULL 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g
1123 cdef bytes libdevice_bytes
1124 cdef const char* libdevice_ptr
1125 cdef size_t libdevice_len
1126 # Build options array
1127 options_list = self._options.as_bytes("nvvm", target_type) 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g
1128 options_vec.resize(len(options_list)) 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g
1129 for i in range(len(options_list)): 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g
1130 options_vec[i] = <const char*>(<bytes>options_list[i]) 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g
1132 # Serialize NVVM program mutation/use per Program instance.
1133 with self._compile_lock: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g
1134 with nogil: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g
1135 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmVerifyProgram(prog, <int>options_vec.size(), options_vec.data())) 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g
1137 # Load libdevice if requested - following numba-cuda.
1138 if self._use_libdevice and not self._libdevice_added: 22e3esf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g
1139 libdevice_path = _find_libdevice_path()
1140 with open(libdevice_path, "rb") as f:
1141 libdevice_bytes = f.read()
1142 libdevice_ptr = <const char*>libdevice_bytes
1143 libdevice_len = len(libdevice_bytes)
1144 with nogil:
1145 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmLazyAddModuleToProgram(
1146 prog, libdevice_ptr, libdevice_len, NULL))
1147 self._libdevice_added = True
1149 with nogil: 22e3esf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g
1150 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmCompileProgram(prog, <int>options_vec.size(), options_vec.data())) 22e3esf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g
1152 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmGetCompiledResultSize(prog, &output_size)) 22e3esf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g
1153 data = bytearray(output_size) 22e3esf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g
1154 data_ptr = <char*>(<bytearray>data) 22e3esf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g
1155 with nogil: 22e3esf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g
1156 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmGetCompiledResult(prog, data_ptr)) 22e3esf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g
1158 # Get compilation log if requested
1159 if logs is not None: 22e3esf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g
1160 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmGetProgramLogSize(prog, &logsize))
1161 if logsize > 1:
1162 log = bytearray(logsize)
1163 data_ptr = <char*>(<bytearray>log)
1164 with nogil:
1165 HANDLE_RETURN_NVVM(prog, cynvvm.nvvmGetProgramLog(prog, data_ptr))
1166 logs.write(log.decode("utf-8", errors="backslashreplace"))
1168 return ObjectCode._init(bytes(data), target_type, name=self._options.name) 22e3esf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g
1170# Supported target types per backend
1171cdef dict SUPPORTED_TARGETS = {
1172 CompilerBackendType.NVRTC: (ObjectCodeFormatType.PTX, ObjectCodeFormatType.CUBIN, ObjectCodeFormatType.LTOIR),
1173 CompilerBackendType.NVVM: (ObjectCodeFormatType.PTX, ObjectCodeFormatType.LTOIR),
1174 CompilerBackendType.NVJITLINK: (ObjectCodeFormatType.CUBIN, ObjectCodeFormatType.PTX),
1175 CompilerBackendType.DRIVER: (ObjectCodeFormatType.CUBIN, ObjectCodeFormatType.PTX),
1176}
1179cdef object Program_compile(Program self, str target_type, object name_expressions, object logs):
1180 """Compile the program to the specified target type."""
1181 # Validate target_type for this backend
1182 supported = SUPPORTED_TARGETS.get(self._backend) 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~g2e3eh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c ah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g @hXf%hOf'hHh(h)h*h+h,h-hPf.h/h:h4 Qf0 1
1183 if supported is None: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~g2e3eh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c ah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g @hXf%hOf'hHh(h)h*h+h,h-hPf.h/h:h4 Qf0 1
1184 raise ValueError(f'Unknown backend="{self._backend}"')
1185 if target_type not in supported: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~g2e3eh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c ah$hsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g @hXf%hOf'hHh(h)h*h+h,h-hPf.h/h:h4 Qf0 1
1186 raise ValueError( 2$h@h
1187 f'Unsupported target_type="{target_type}" for {self._backend} ' 2$h@h
1188 f'(supported: {", ".join(repr(t) for t in supported)})' 2$h@h
1189 )
1191 if self._backend == "NVRTC": 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~g2e3eh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c ahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g Xf%hOf'hHh(h)h*h+h,h-hPf.h/h:h4 Qf0 1
1192 if target_type == "ptx" and not _can_load_generated_ptx(): 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfOfPf4 Qf0 1
1193 warn( 2%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifjfkfk l m X Y Z h ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfOfPf4
1194 "The CUDA driver version is older than the backend version. "
1195 "The generated ptx will not be loadable by the current driver.",
1196 stacklevel=2,
1197 category=RuntimeWarning, 2%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifjfkfk l m X Y Z h ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfOfPf4
1198 )
1199 return Program_compile_nvrtc(self, target_type, name_expressions, logs) 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfOfPf4 Qf0 1
1201 elif self._backend == "NVVM": 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g %h'hHh(h)h*h+h,h-h.h/h:h
1202 return Program_compile_nvvm(self, target_type, logs) 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fd g
1204 else:
1205 return self._linker.link(target_type) 2%h'hHh(h)h*h+h,h-h.h/h:h
1208cdef inline list _prepare_nvrtc_options_impl(object opts):
1209 """Build NVRTC-specific compiler options."""
1210 options = [f"-arch={opts.arch}"] 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c Xfvh~hdifigiOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1211 if opts.relocatable_device_code is not None: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c Xfvh~hdifigiOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1212 options.append(f"--relocatable-device-code={_handle_boolean_option(opts.relocatable_device_code)}") 2%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifjfkf$f%flf
1213 if opts.extensible_whole_program is not None and opts.extensible_whole_program: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c Xfvh~hdifigiOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1214 options.append("--extensible-whole-program") 2Ef
1215 if opts.debug is not None and opts.debug: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c Xfvh~hdifigiOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1216 options.append("--device-debug") 2e f a j 0eb c vh
1217 if opts.lineinfo is not None and opts.lineinfo: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c Xfvh~hdifigiOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1218 options.append("--generate-line-info") 2vh
1219 if opts.device_code_optimize is not None and opts.device_code_optimize: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c Xfvh~hdifigiOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1220 options.append("--dopt=on") 1e
1221 if opts.ptxas_options is not None: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c Xfvh~hdifigiOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1222 opt_name = "--ptxas-options" 2YeZe
1223 if isinstance(opts.ptxas_options, str): 2YeZe
1224 options.append(f"{opt_name}={opts.ptxas_options}")
1225 elif is_sequence(opts.ptxas_options): 2YeZe
1226 for opt_value in opts.ptxas_options: 2YeZe
1227 options.append(f"{opt_name}={opt_value}") 2YeZe
1228 if opts.max_register_count is not None: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c Xfvh~hdifigiOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1229 options.append(f"--maxrregcount={opts.max_register_count}") 2lf
1230 if opts.ftz is not None: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c Xfvh~hdifigiOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1231 options.append(f"--ftz={_handle_boolean_option(opts.ftz)}") 2!evh
1232 if opts.prec_sqrt is not None: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c Xfvh~hdifigiOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1233 options.append(f"--prec-sqrt={_handle_boolean_option(opts.prec_sqrt)}") 2!e
1234 if opts.prec_div is not None: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c Xfvh~hdifigiOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1235 options.append(f"--prec-div={_handle_boolean_option(opts.prec_div)}") 2!e
1236 if opts.fma is not None: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c Xfvh~hdifigiOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1237 options.append(f"--fmad={_handle_boolean_option(opts.fma)}") 2mf
1238 if opts.use_fast_math is not None and opts.use_fast_math: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c Xfvh~hdifigiOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1239 options.append("--use_fast_math") 2mfGh
1240 if opts.extra_device_vectorization is not None and opts.extra_device_vectorization: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c Xfvh~hdifigiOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1241 options.append("--extra-device-vectorization") 2zf
1242 if opts.link_time_optimization is not None and opts.link_time_optimization: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c Xfvh~hdifigiOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1243 options.append("--dlink-time-opt") 2Yf5 6 7 Af
1244 if opts.gen_opt_lto is not None and opts.gen_opt_lto: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c Xfvh~hdifigiOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1245 options.append("--gen-opt-lto") 2Gf
1246 if opts.define_macro is not None: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c Xfvh~hdifigiOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1247 _process_define_macro(options, opts.define_macro) 2+ 2 n o ~hdifigi
1248 if opts.undefine_macro is not None: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfvhOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1249 if isinstance(opts.undefine_macro, str): 24e5e
1250 options.append(f"--undefine-macro={opts.undefine_macro}") 25e
1251 elif is_sequence(opts.undefine_macro): 24e
1252 for macro in opts.undefine_macro: 24e
1253 options.append(f"--undefine-macro={macro}") 24e
1254 if opts.use_bundled_headers: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfvhOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1255 options.append(f"--use-bundled-headers={_default_cache_dir() / 'nvrtc-bundled-headers'}") 14
1256 if opts.include_path is not None: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfvhOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1257 if isinstance(opts.include_path, str): 2tfufvfwfxfyfr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W 5ewhxhyhAhCh
1258 options.append(f"--include-path={opts.include_path}") 25eCh
1259 elif is_sequence(opts.include_path): 2tfufvfwfxfyfr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W whxhyhAh
1260 for path in opts.include_path: 2tfufvfwfxfyfr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W whxhyh
1261 options.append(f"--include-path={path}") 2tfufvfwfxfyfr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W
1262 if opts.pre_include is not None: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfvhOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1263 if isinstance(opts.pre_include, str): 2zhBh
1264 options.append(f"--pre-include={opts.pre_include}")
1265 elif is_sequence(opts.pre_include): 2zhBh
1266 for header in opts.pre_include: 2zh
1267 options.append(f"--pre-include={header}")
1268 if opts.no_source_include is not None and opts.no_source_include: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfvhOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1269 options.append("--no-source-include") 2If
1270 if opts.std is not None: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfvhOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1271 options.append(f"--std={opts.std}") 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyfr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEcFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd0d1d2d3d4d5d6d8 9 7d8d9d!d#d$d%d'd(d)d*d+d,d-d.d! # /d:d;d=d?d@d[d]d^d_d`d{d|d}d~daebecedeeefegeheiejekelemeneoe$ % peqereseteuevewexeyezeAeBeCeDe' ( EeFeGeHeIeJeKeLeMeNeOePeQeReSeTeUeVeWeXeYeZe
1272 if opts.builtin_move_forward is not None: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfvhOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1273 options.append(f"--builtin-move-forward={_handle_boolean_option(opts.builtin_move_forward)}") 2Df
1274 if opts.builtin_initializer_list is not None: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfvhOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1275 options.append(f"--builtin-initializer-list={_handle_boolean_option(opts.builtin_initializer_list)}") 2nf
1276 if opts.disable_warnings is not None and opts.disable_warnings: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfvhOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1277 options.append("--disable-warnings") 2nf
1278 if opts.restrict is not None and opts.restrict: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfvhOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1279 options.append("--restrict") 2of
1280 if opts.device_as_default_execution_space is not None and opts.device_as_default_execution_space: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfvhOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1281 options.append("--device-as-default-execution-space") 2of
1282 if opts.device_int128 is not None and opts.device_int128: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfvhOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1283 options.append("--device-int128") 2pf
1284 if opts.device_float128 is not None and opts.device_float128: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfvhOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1285 options.append("--device-float128")
1286 if opts.optimization_info is not None: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfvhOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1287 options.append(f"--optimization-info={opts.optimization_info}") 2pf
1288 if opts.no_display_error_number is not None and opts.no_display_error_number: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfvhOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1289 options.append("--no-display-error-number") 2Bf
1290 if opts.diag_error is not None: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfvhOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1291 if isinstance(opts.diag_error, int): 26e3
1292 options.append(f"--diag-error={opts.diag_error}") 26e
1293 elif is_sequence(opts.diag_error): 13
1294 for error in opts.diag_error: 13
1295 options.append(f"--diag-error={error}") 13
1296 if opts.diag_suppress is not None: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfvhOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1297 if isinstance(opts.diag_suppress, int): 26e3
1298 options.append(f"--diag-suppress={opts.diag_suppress}") 26e
1299 elif is_sequence(opts.diag_suppress): 13
1300 for suppress in opts.diag_suppress: 13
1301 options.append(f"--diag-suppress={suppress}") 13
1302 if opts.diag_warn is not None: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfvhOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1303 if isinstance(opts.diag_warn, int): 2qf
1304 options.append(f"--diag-warn={opts.diag_warn}") 2qf
1305 elif is_sequence(opts.diag_warn):
1306 for w in opts.diag_warn:
1307 options.append(f"--diag-warn={w}")
1308 if opts.brief_diagnostics is not None: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfvhOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1309 options.append(f"--brief-diagnostics={_handle_boolean_option(opts.brief_diagnostics)}") 2Cf
1310 if opts.time is not None: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfvhOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1311 options.append(f"--time={opts.time}")
1312 if opts.split_compile is not None: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfvhOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1313 options.append(f"--split-compile={opts.split_compile}")
1314 if opts.fdevice_syntax_only is not None and opts.fdevice_syntax_only: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfvhOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1315 options.append("--fdevice-syntax-only") 2Ff
1316 if opts.minimal is not None and opts.minimal: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfvhOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1317 options.append("--minimal") 2Hf
1318 if opts.no_cache is not None and opts.no_cache: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfvhOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1319 options.append("--no-cache") 2Jf
1320 if opts.fdevice_time_trace is not None: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfvhOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1321 options.append(f"--fdevice-time-trace={opts.fdevice_time_trace}") 1*
1322 if opts.frandom_seed is not None: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfvhOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1323 options.append(f"--frandom-seed={opts.frandom_seed}") 2Kf
1324 if opts.ofast_compile is not None: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfvhOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1325 options.append(f"--Ofast-compile={opts.ofast_compile}") 2Lf
1326 # PCH options (CUDA 12.8+)
1327 if opts.pch is not None and opts.pch: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfvhOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1328 options.append("--pch") 1q
1329 if opts.create_pch is not None: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfvhOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1330 options.append(f"--create-pch={opts.create_pch}") 1hi
1331 if opts.use_pch is not None: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfvhOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1332 options.append(f"--use-pch={opts.use_pch}") 1i
1333 if opts.pch_dir is not None: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfvhOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1334 options.append(f"--pch-dir={opts.pch_dir}")
1335 if opts.pch_verbose is not None: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfvhOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1336 options.append(f"--pch-verbose={_handle_boolean_option(opts.pch_verbose)}") 2Mf
1337 if opts.pch_messages is not None: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfvhOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1338 options.append(f"--pch-messages={_handle_boolean_option(opts.pch_messages)}") 2Nf
1339 if opts.instantiate_templates_in_pch is not None: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfvhOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1340 options.append( 2rf
1341 f"--instantiate-templates-in-pch={_handle_boolean_option(opts.instantiate_templates_in_pch)}" 2rf
1342 )
1343 if opts.numba_debug: 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfvhOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1344 options.append("--numba-debug") 1f
1345 return [o.encode() for o in options] 2, - . / : ; = ? @ [ ] ^ _ ` { | } ~ abbbcbdbebfbgbhbibjbkblbmbnbobpbqbrbsbtbubvbwbxbybzbAbBbCbDbEbFbGbHbIbJbKbLbMbNbObPbQbRbSbTbUbVbWbXbYbZb0b1b2b3b4b5b6b7b8b9b!b#b$b%b'b(b)b*b+b,b-b.b/b:b;b=b?b@b[b]b^b_b`b{b|b}b~bacbcccdcecfcgchcicjckclcmcncocpcqcrcsctfufvfwf5f6f7f8fxfyf9fr s t u v w x y z A B C D E F G H I J K L M N O P Q R S T U V W tcucvcwcxcyczcAcBcCcDcEc%e'e(e)e*e+e,e-e.e/e:e;e=e?e@e[e]e^e_e`e{e|e}e~eafbfcfdfefffgfhfifYfjfkfFcGcHcIcJcKcLcMc!fNcOcPcQcRcScTcUcVcWcXcYc#fZc0c1c2ck l m 5 6 7 X Y Z $f%f3c4c5c6c7c8c9c!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~cadbdcdddedfdgdhdidjdkdldmdndodpdqdrdsdtdudvdwdxdydzdAdBdCdDdEdFd'fGd(f)fHd*fId+fJdKdLd,fMd-fNdOdPdQdRdSdTdUdVdWd.fXd/fYd:fZd;f0d1d2d=f3d?f4d5d6d@f8 [f]f^f_f`f{f|f}f~f9 agbgcgdgeg7d8d9d!d#d$d%d'd(d)d*d+dfg,dgg-d.dhg! igjgkglgmgngogpgqgrg# sgtgugvgwg/d:d;dxg=dyg?dzg@dAg[d]d^dBg_dCg`d{d|d}d~daebecedeeeDgfeEggeFgheGgiejekeHgleIgmeneoeJg$ KgLgMgNgOgPgQgRgSg% TgUgVgWgXgpeqereseteuevewexeyezeAeYgBeZgCeDe0g' 1g2g3g4g5g6g7g8g9g!g( #g$g%g'g(gEeFeGe)gHe*g+g,gIe-gJe.g/gKe:gLe;gMe=gNe?gOe@gPe[gQe]gRe^gSe_gTe`gUe{gVe|gWe}gXe~gh ) i * Rfe f lf!emfzfAf+ 2 n o 4e5enfofpfBf6e3 qfYeZeCfDfEfFfGfHfIfJfKfLfq MfNfrfbhp a j 7e0eb c XfvhOfPf4 QfwhxhyhAhzhBhChIhJhKhLhMhNhOhPhQhGhRhShThUhVhWhXhYhZh0h1h2h3h4h5h6h7h8h9h!h#hehchdhfh0 hhghjhih1
1348cpdef void _assert_single_dashed_nvvm_options(options: list[str]) except *:
1349 """Guard against emitting a double-dashed option to libNVVM.
1351 libNVVM's parser accepts only single-dashed options and rejects the
1352 double-dashed spelling of every option with NVVM_ERROR_INVALID_OPTION
1353 (see #2570). Every option on this path is generated from typed fields, so
1354 a double dash can only mean a bug in ``cuda.core`` rather than bad user
1355 input. Fail here, naming the option, instead of leaving the user with
1356 libNVVM's opaque error.
1357 """
1358 for option in options: 22e3eahyjsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g lhnhohphqhrhDhEhFhshthuh
1359 if option.startswith("--"): 22e3eahyjsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g lhnhohphqhrhDhEhFhshthuh
1360 raise RuntimeError( 2yj
1361 f"Internal error: NVVM option {option!r} is double-dashed. libNVVM accepts " 2yj
1362 f"only single-dashed options; emit {option[1:]!r} instead." 2yj
1363 )
1366cdef inline object _prepare_nvvm_options_impl(object opts, bint as_bytes):
1367 """Build NVVM-specific compiler options."""
1368 options = [] 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1370 # Options supported by NVVM
1371 assert opts.arch is not None 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1372 arch = opts.arch 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1373 if arch.startswith("sm_"): 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1374 arch = f"compute_{arch[3:]}" 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1375 options.append(f"-arch={arch}") 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1376 if opts.debug is not None and opts.debug: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1377 options.append("-g") 21ekhmhlh
1378 # libNVVM only accepts single-dashed options; the double-dashed spelling
1379 # accepted by NVRTC is rejected with NVVM_ERROR_INVALID_OPTION.
1380 if opts.numba_debug: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1381 options.append("-numba-debug") 21ekhmh
1382 if opts.device_code_optimize is False: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1383 options.append("-opt=0") 2SfZfTf0fVf2f
1384 elif opts.device_code_optimize is True: 22e3eahsf1eUf1f8e#e9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1385 options.append("-opt=3") 28e#e9e$ekhlh
1386 # NVVM uses 0/1 instead of true/false for boolean options
1387 if opts.ftz is not None: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1388 options.append(f"-ftz={'1' if opts.ftz else '0'}") 28e#e9e$ekhlh
1389 if opts.prec_sqrt is not None: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1390 options.append(f"-prec-sqrt={'1' if opts.prec_sqrt else '0'}") 28e#e9e$ekh
1391 if opts.prec_div is not None: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1392 options.append(f"-prec-div={'1' if opts.prec_div else '0'}") 28e#e9e$ekh
1393 if opts.fma is not None: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1394 options.append(f"-fma={'1' if opts.fma else '0'}") 28e#e9e$ekh
1396 # Check for unsupported options and raise error if they are set
1397 unsupported = [] 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1398 if opts.relocatable_device_code is not None: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1399 unsupported.append("relocatable_device_code")
1400 if opts.extensible_whole_program is not None and opts.extensible_whole_program: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1401 unsupported.append("extensible_whole_program")
1402 if opts.lineinfo is not None and opts.lineinfo: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1403 unsupported.append("lineinfo") 2;h
1404 if opts.ptxas_options is not None: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1405 unsupported.append("ptxas_options")
1406 if opts.max_register_count is not None: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1407 unsupported.append("max_register_count")
1408 if opts.use_fast_math is not None and opts.use_fast_math: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1409 unsupported.append("use_fast_math")
1410 if opts.extra_device_vectorization is not None and opts.extra_device_vectorization: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1411 unsupported.append("extra_device_vectorization")
1412 if opts.gen_opt_lto is not None and opts.gen_opt_lto: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1413 unsupported.append("gen_opt_lto")
1414 if opts.define_macro is not None: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1415 unsupported.append("define_macro")
1416 if opts.undefine_macro is not None: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1417 unsupported.append("undefine_macro")
1418 if opts.include_path is not None: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1419 unsupported.append("include_path")
1420 if opts.use_bundled_headers: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1421 unsupported.append("use_bundled_headers")
1422 if opts.pre_include is not None: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1423 unsupported.append("pre_include")
1424 if opts.no_source_include is not None and opts.no_source_include: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1425 unsupported.append("no_source_include")
1426 if opts.std is not None: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1427 unsupported.append("std")
1428 if opts.builtin_move_forward is not None: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1429 unsupported.append("builtin_move_forward")
1430 if opts.builtin_initializer_list is not None: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1431 unsupported.append("builtin_initializer_list")
1432 if opts.disable_warnings is not None and opts.disable_warnings: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1433 unsupported.append("disable_warnings")
1434 if opts.restrict is not None and opts.restrict: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1435 unsupported.append("restrict")
1436 if opts.device_as_default_execution_space is not None and opts.device_as_default_execution_space: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1437 unsupported.append("device_as_default_execution_space")
1438 if opts.device_int128 is not None and opts.device_int128: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1439 unsupported.append("device_int128")
1440 if opts.optimization_info is not None: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1441 unsupported.append("optimization_info")
1442 if opts.no_display_error_number is not None and opts.no_display_error_number: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1443 unsupported.append("no_display_error_number")
1444 if opts.diag_error is not None: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1445 unsupported.append("diag_error")
1446 if opts.diag_suppress is not None: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1447 unsupported.append("diag_suppress")
1448 if opts.diag_warn is not None: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1449 unsupported.append("diag_warn")
1450 if opts.brief_diagnostics is not None: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1451 unsupported.append("brief_diagnostics")
1452 if opts.time is not None: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1453 unsupported.append("time")
1454 if opts.split_compile is not None: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1455 unsupported.append("split_compile")
1456 if opts.fdevice_syntax_only is not None and opts.fdevice_syntax_only: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1457 unsupported.append("fdevice_syntax_only")
1458 if opts.minimal is not None and opts.minimal: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1459 unsupported.append("minimal")
1460 if unsupported: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g ;hlhnhohphqhrhDhEhFhshthuh
1461 raise CUDAError(f"The following options are not supported by NVVM backend: {', '.join(unsupported)}") 2;h
1463 _assert_single_dashed_nvvm_options(options) 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g lhnhohphqhrhDhEhFhshthuh
1465 if as_bytes: 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g lhnhohphqhrhDhEhFhshthuh
1466 return [o.encode() for o in options] 22e3eahsf1eSfZfTf0fUf1f8e#eVf2f9e$eWf3fkhmhd g lhnhohphqhrhDhEhFhshthuh
1467 else:
1468 return options