gstaichi 2.1.1rc3__cp311-cp311-macosx_11_0_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- gstaichi/CHANGELOG.md +4 -0
- gstaichi/__init__.py +40 -0
- gstaichi/_funcs.py +706 -0
- gstaichi/_kernels.py +420 -0
- gstaichi/_lib/__init__.py +3 -0
- gstaichi/_lib/core/__init__.py +0 -0
- gstaichi/_lib/core/gstaichi_python.cpython-311-darwin.so +0 -0
- gstaichi/_lib/core/gstaichi_python.pyi +2909 -0
- gstaichi/_lib/core/py.typed +0 -0
- gstaichi/_lib/runtime/libMoltenVK.dylib +0 -0
- gstaichi/_lib/runtime/runtime_arm64.bc +0 -0
- gstaichi/_lib/utils.py +243 -0
- gstaichi/_logging.py +131 -0
- gstaichi/_snode/__init__.py +5 -0
- gstaichi/_snode/fields_builder.py +187 -0
- gstaichi/_snode/snode_tree.py +34 -0
- gstaichi/_test_tools/__init__.py +18 -0
- gstaichi/_test_tools/dataclass_test_tools.py +36 -0
- gstaichi/_test_tools/load_kernel_string.py +30 -0
- gstaichi/_test_tools/textwrap2.py +6 -0
- gstaichi/_version.py +1 -0
- gstaichi/_version_check.py +100 -0
- gstaichi/ad/__init__.py +3 -0
- gstaichi/ad/_ad.py +530 -0
- gstaichi/algorithms/__init__.py +3 -0
- gstaichi/algorithms/_algorithms.py +117 -0
- gstaichi/assets/.git +1 -0
- gstaichi/assets/Go-Regular.ttf +0 -0
- gstaichi/assets/static/imgs/ti_gallery.png +0 -0
- gstaichi/examples/lcg_python.py +26 -0
- gstaichi/examples/lcg_taichi.py +34 -0
- gstaichi/examples/minimal.py +28 -0
- gstaichi/experimental.py +16 -0
- gstaichi/lang/__init__.py +50 -0
- gstaichi/lang/_dataclass_util.py +31 -0
- gstaichi/lang/_fast_caching/__init__.py +3 -0
- gstaichi/lang/_fast_caching/args_hasher.py +110 -0
- gstaichi/lang/_fast_caching/config_hasher.py +30 -0
- gstaichi/lang/_fast_caching/fast_caching_types.py +21 -0
- gstaichi/lang/_fast_caching/function_hasher.py +57 -0
- gstaichi/lang/_fast_caching/hash_utils.py +11 -0
- gstaichi/lang/_fast_caching/python_side_cache.py +52 -0
- gstaichi/lang/_fast_caching/src_hasher.py +75 -0
- gstaichi/lang/_kernel_impl_dataclass.py +212 -0
- gstaichi/lang/_ndarray.py +352 -0
- gstaichi/lang/_ndrange.py +152 -0
- gstaichi/lang/_template_mapper.py +195 -0
- gstaichi/lang/_texture.py +172 -0
- gstaichi/lang/_wrap_inspect.py +215 -0
- gstaichi/lang/any_array.py +99 -0
- gstaichi/lang/ast/__init__.py +5 -0
- gstaichi/lang/ast/ast_transformer.py +1323 -0
- gstaichi/lang/ast/ast_transformer_utils.py +346 -0
- gstaichi/lang/ast/ast_transformers/__init__.py +0 -0
- gstaichi/lang/ast/ast_transformers/call_transformer.py +324 -0
- gstaichi/lang/ast/ast_transformers/function_def_transformer.py +304 -0
- gstaichi/lang/ast/checkers.py +106 -0
- gstaichi/lang/ast/symbol_resolver.py +57 -0
- gstaichi/lang/ast/transform.py +9 -0
- gstaichi/lang/common_ops.py +310 -0
- gstaichi/lang/exception.py +80 -0
- gstaichi/lang/expr.py +180 -0
- gstaichi/lang/field.py +428 -0
- gstaichi/lang/impl.py +1243 -0
- gstaichi/lang/kernel_arguments.py +155 -0
- gstaichi/lang/kernel_impl.py +1341 -0
- gstaichi/lang/matrix.py +1835 -0
- gstaichi/lang/matrix_ops.py +341 -0
- gstaichi/lang/matrix_ops_utils.py +190 -0
- gstaichi/lang/mesh.py +687 -0
- gstaichi/lang/misc.py +782 -0
- gstaichi/lang/ops.py +1494 -0
- gstaichi/lang/runtime_ops.py +13 -0
- gstaichi/lang/shell.py +35 -0
- gstaichi/lang/simt/__init__.py +5 -0
- gstaichi/lang/simt/block.py +94 -0
- gstaichi/lang/simt/grid.py +7 -0
- gstaichi/lang/simt/subgroup.py +191 -0
- gstaichi/lang/simt/warp.py +96 -0
- gstaichi/lang/snode.py +489 -0
- gstaichi/lang/source_builder.py +150 -0
- gstaichi/lang/struct.py +810 -0
- gstaichi/lang/util.py +312 -0
- gstaichi/linalg/__init__.py +8 -0
- gstaichi/linalg/matrixfree_cg.py +310 -0
- gstaichi/linalg/sparse_cg.py +59 -0
- gstaichi/linalg/sparse_matrix.py +303 -0
- gstaichi/linalg/sparse_solver.py +123 -0
- gstaichi/math/__init__.py +11 -0
- gstaichi/math/_complex.py +205 -0
- gstaichi/math/mathimpl.py +886 -0
- gstaichi/profiler/__init__.py +6 -0
- gstaichi/profiler/kernel_metrics.py +260 -0
- gstaichi/profiler/kernel_profiler.py +586 -0
- gstaichi/profiler/memory_profiler.py +15 -0
- gstaichi/profiler/scoped_profiler.py +36 -0
- gstaichi/sparse/__init__.py +3 -0
- gstaichi/sparse/_sparse_grid.py +77 -0
- gstaichi/tools/__init__.py +12 -0
- gstaichi/tools/diagnose.py +117 -0
- gstaichi/tools/np2ply.py +364 -0
- gstaichi/tools/vtk.py +38 -0
- gstaichi/types/__init__.py +19 -0
- gstaichi/types/annotations.py +52 -0
- gstaichi/types/compound_types.py +71 -0
- gstaichi/types/enums.py +49 -0
- gstaichi/types/ndarray_type.py +169 -0
- gstaichi/types/primitive_types.py +206 -0
- gstaichi/types/quant.py +88 -0
- gstaichi/types/texture_type.py +85 -0
- gstaichi/types/utils.py +11 -0
- gstaichi-2.1.1rc3.data/data/include/GLFW/glfw3.h +6389 -0
- gstaichi-2.1.1rc3.data/data/include/GLFW/glfw3native.h +594 -0
- gstaichi-2.1.1rc3.data/data/include/spirv-tools/instrument.hpp +268 -0
- gstaichi-2.1.1rc3.data/data/include/spirv-tools/libspirv.h +907 -0
- gstaichi-2.1.1rc3.data/data/include/spirv-tools/libspirv.hpp +375 -0
- gstaichi-2.1.1rc3.data/data/include/spirv-tools/linker.hpp +97 -0
- gstaichi-2.1.1rc3.data/data/include/spirv-tools/optimizer.hpp +970 -0
- gstaichi-2.1.1rc3.data/data/include/spirv_cross/GLSL.std.450.h +114 -0
- gstaichi-2.1.1rc3.data/data/include/spirv_cross/spirv.h +2568 -0
- gstaichi-2.1.1rc3.data/data/include/spirv_cross/spirv.hpp +2579 -0
- gstaichi-2.1.1rc3.data/data/include/spirv_cross/spirv_cfg.hpp +168 -0
- gstaichi-2.1.1rc3.data/data/include/spirv_cross/spirv_common.hpp +1920 -0
- gstaichi-2.1.1rc3.data/data/include/spirv_cross/spirv_cpp.hpp +93 -0
- gstaichi-2.1.1rc3.data/data/include/spirv_cross/spirv_cross.hpp +1171 -0
- gstaichi-2.1.1rc3.data/data/include/spirv_cross/spirv_cross_c.h +1074 -0
- gstaichi-2.1.1rc3.data/data/include/spirv_cross/spirv_cross_containers.hpp +754 -0
- gstaichi-2.1.1rc3.data/data/include/spirv_cross/spirv_cross_error_handling.hpp +94 -0
- gstaichi-2.1.1rc3.data/data/include/spirv_cross/spirv_cross_parsed_ir.hpp +256 -0
- gstaichi-2.1.1rc3.data/data/include/spirv_cross/spirv_cross_util.hpp +37 -0
- gstaichi-2.1.1rc3.data/data/include/spirv_cross/spirv_glsl.hpp +1001 -0
- gstaichi-2.1.1rc3.data/data/include/spirv_cross/spirv_hlsl.hpp +406 -0
- gstaichi-2.1.1rc3.data/data/include/spirv_cross/spirv_msl.hpp +1273 -0
- gstaichi-2.1.1rc3.data/data/include/spirv_cross/spirv_parser.hpp +103 -0
- gstaichi-2.1.1rc3.data/data/include/spirv_cross/spirv_reflect.hpp +91 -0
- gstaichi-2.1.1rc3.data/data/lib/cmake/SPIRV-Tools/SPIRV-ToolsConfig.cmake +5 -0
- gstaichi-2.1.1rc3.data/data/lib/cmake/SPIRV-Tools/SPIRV-ToolsTarget-release.cmake +29 -0
- gstaichi-2.1.1rc3.data/data/lib/cmake/SPIRV-Tools/SPIRV-ToolsTarget.cmake +114 -0
- gstaichi-2.1.1rc3.data/data/lib/cmake/SPIRV-Tools-diff/SPIRV-Tools-diffConfig.cmake +5 -0
- gstaichi-2.1.1rc3.data/data/lib/cmake/SPIRV-Tools-diff/SPIRV-Tools-diffTargets-release.cmake +19 -0
- gstaichi-2.1.1rc3.data/data/lib/cmake/SPIRV-Tools-diff/SPIRV-Tools-diffTargets.cmake +123 -0
- gstaichi-2.1.1rc3.data/data/lib/cmake/SPIRV-Tools-link/SPIRV-Tools-linkConfig.cmake +5 -0
- gstaichi-2.1.1rc3.data/data/lib/cmake/SPIRV-Tools-link/SPIRV-Tools-linkTargets-release.cmake +19 -0
- gstaichi-2.1.1rc3.data/data/lib/cmake/SPIRV-Tools-link/SPIRV-Tools-linkTargets.cmake +123 -0
- gstaichi-2.1.1rc3.data/data/lib/cmake/SPIRV-Tools-lint/SPIRV-Tools-lintConfig.cmake +5 -0
- gstaichi-2.1.1rc3.data/data/lib/cmake/SPIRV-Tools-lint/SPIRV-Tools-lintTargets-release.cmake +19 -0
- gstaichi-2.1.1rc3.data/data/lib/cmake/SPIRV-Tools-lint/SPIRV-Tools-lintTargets.cmake +123 -0
- gstaichi-2.1.1rc3.data/data/lib/cmake/SPIRV-Tools-opt/SPIRV-Tools-optConfig.cmake +5 -0
- gstaichi-2.1.1rc3.data/data/lib/cmake/SPIRV-Tools-opt/SPIRV-Tools-optTargets-release.cmake +19 -0
- gstaichi-2.1.1rc3.data/data/lib/cmake/SPIRV-Tools-opt/SPIRV-Tools-optTargets.cmake +123 -0
- gstaichi-2.1.1rc3.data/data/lib/cmake/SPIRV-Tools-reduce/SPIRV-Tools-reduceConfig.cmake +5 -0
- gstaichi-2.1.1rc3.data/data/lib/cmake/SPIRV-Tools-reduce/SPIRV-Tools-reduceTarget-release.cmake +19 -0
- gstaichi-2.1.1rc3.data/data/lib/cmake/SPIRV-Tools-reduce/SPIRV-Tools-reduceTarget.cmake +123 -0
- gstaichi-2.1.1rc3.data/data/lib/cmake/glfw3/glfw3Config.cmake +3 -0
- gstaichi-2.1.1rc3.data/data/lib/cmake/glfw3/glfw3ConfigVersion.cmake +65 -0
- gstaichi-2.1.1rc3.data/data/lib/cmake/glfw3/glfw3Targets-release.cmake +19 -0
- gstaichi-2.1.1rc3.data/data/lib/cmake/glfw3/glfw3Targets.cmake +107 -0
- gstaichi-2.1.1rc3.data/data/lib/libSPIRV-Tools-shared.dylib +0 -0
- gstaichi-2.1.1rc3.data/data/share/spirv_cross_c/cmake/spirv_cross_cConfig-release.cmake +19 -0
- gstaichi-2.1.1rc3.data/data/share/spirv_cross_c/cmake/spirv_cross_cConfig.cmake +123 -0
- gstaichi-2.1.1rc3.data/data/share/spirv_cross_core/cmake/spirv_cross_coreConfig-release.cmake +19 -0
- gstaichi-2.1.1rc3.data/data/share/spirv_cross_core/cmake/spirv_cross_coreConfig.cmake +106 -0
- gstaichi-2.1.1rc3.data/data/share/spirv_cross_cpp/cmake/spirv_cross_cppConfig-release.cmake +19 -0
- gstaichi-2.1.1rc3.data/data/share/spirv_cross_cpp/cmake/spirv_cross_cppConfig.cmake +123 -0
- gstaichi-2.1.1rc3.data/data/share/spirv_cross_glsl/cmake/spirv_cross_glslConfig-release.cmake +19 -0
- gstaichi-2.1.1rc3.data/data/share/spirv_cross_glsl/cmake/spirv_cross_glslConfig.cmake +123 -0
- gstaichi-2.1.1rc3.data/data/share/spirv_cross_hlsl/cmake/spirv_cross_hlslConfig-release.cmake +19 -0
- gstaichi-2.1.1rc3.data/data/share/spirv_cross_hlsl/cmake/spirv_cross_hlslConfig.cmake +123 -0
- gstaichi-2.1.1rc3.data/data/share/spirv_cross_msl/cmake/spirv_cross_mslConfig-release.cmake +19 -0
- gstaichi-2.1.1rc3.data/data/share/spirv_cross_msl/cmake/spirv_cross_mslConfig.cmake +123 -0
- gstaichi-2.1.1rc3.data/data/share/spirv_cross_reflect/cmake/spirv_cross_reflectConfig-release.cmake +19 -0
- gstaichi-2.1.1rc3.data/data/share/spirv_cross_reflect/cmake/spirv_cross_reflectConfig.cmake +106 -0
- gstaichi-2.1.1rc3.data/data/share/spirv_cross_util/cmake/spirv_cross_utilConfig-release.cmake +19 -0
- gstaichi-2.1.1rc3.data/data/share/spirv_cross_util/cmake/spirv_cross_utilConfig.cmake +123 -0
- gstaichi-2.1.1rc3.dist-info/METADATA +106 -0
- gstaichi-2.1.1rc3.dist-info/RECORD +179 -0
- gstaichi-2.1.1rc3.dist-info/WHEEL +5 -0
- gstaichi-2.1.1rc3.dist-info/licenses/LICENSE +201 -0
- gstaichi-2.1.1rc3.dist-info/top_level.txt +1 -0
@@ -0,0 +1,155 @@
|
|
1
|
+
# type: ignore
|
2
|
+
|
3
|
+
import inspect
|
4
|
+
|
5
|
+
import gstaichi.lang
|
6
|
+
from gstaichi._lib import core as _ti_core
|
7
|
+
from gstaichi._lib.core.gstaichi_python import (
|
8
|
+
BoundaryMode,
|
9
|
+
DataTypeCxx,
|
10
|
+
)
|
11
|
+
from gstaichi.lang import impl, ops
|
12
|
+
from gstaichi.lang._texture import RWTextureAccessor, TextureSampler
|
13
|
+
from gstaichi.lang.any_array import AnyArray
|
14
|
+
from gstaichi.lang.expr import Expr
|
15
|
+
from gstaichi.lang.matrix import MatrixType
|
16
|
+
from gstaichi.lang.struct import StructType
|
17
|
+
from gstaichi.lang.util import cook_dtype
|
18
|
+
from gstaichi.types.compound_types import CompoundType
|
19
|
+
from gstaichi.types.primitive_types import RefType, u64
|
20
|
+
|
21
|
+
|
22
|
+
class ArgMetadata:
|
23
|
+
"""
|
24
|
+
Metadata about an argument to a function
|
25
|
+
"""
|
26
|
+
|
27
|
+
def __init__(self, annotation, name, default=inspect.Parameter.empty):
|
28
|
+
self.annotation = annotation
|
29
|
+
self.name = name
|
30
|
+
self.default = default
|
31
|
+
|
32
|
+
def __repr__(self) -> str:
|
33
|
+
return f"{self.__class__.__name__}(annotation={self.annotation}, name={self.name}, default={self.default})"
|
34
|
+
|
35
|
+
|
36
|
+
class SparseMatrixEntry:
|
37
|
+
def __init__(self, ptr, i, j, dtype):
|
38
|
+
self.ptr = ptr
|
39
|
+
self.i = i
|
40
|
+
self.j = j
|
41
|
+
self.dtype = dtype
|
42
|
+
|
43
|
+
def _augassign(self, value, op):
|
44
|
+
call_func = f"insert_triplet_{self.dtype}"
|
45
|
+
if op == "Add":
|
46
|
+
gstaichi.lang.impl.call_internal(call_func, self.ptr, self.i, self.j, ops.cast(value, self.dtype))
|
47
|
+
elif op == "Sub":
|
48
|
+
gstaichi.lang.impl.call_internal(call_func, self.ptr, self.i, self.j, -ops.cast(value, self.dtype))
|
49
|
+
else:
|
50
|
+
assert False, "Only operations '+=' and '-=' are supported on sparse matrices."
|
51
|
+
|
52
|
+
|
53
|
+
class SparseMatrixProxy:
|
54
|
+
def __init__(self, ptr, dtype):
|
55
|
+
self.ptr = ptr
|
56
|
+
self.dtype = dtype
|
57
|
+
|
58
|
+
def subscript(self, i, j):
|
59
|
+
return SparseMatrixEntry(self.ptr, i, j, self.dtype)
|
60
|
+
|
61
|
+
|
62
|
+
def decl_scalar_arg(dtype, name):
|
63
|
+
is_ref = False
|
64
|
+
if isinstance(dtype, RefType):
|
65
|
+
is_ref = True
|
66
|
+
dtype = dtype.tp
|
67
|
+
dtype = cook_dtype(dtype)
|
68
|
+
if is_ref:
|
69
|
+
arg_id = impl.get_runtime().compiling_callable.insert_pointer_param(dtype, name)
|
70
|
+
else:
|
71
|
+
arg_id = impl.get_runtime().compiling_callable.insert_scalar_param(dtype, name)
|
72
|
+
|
73
|
+
argload_di = _ti_core.DebugInfo(impl.get_runtime().get_current_src_info())
|
74
|
+
return Expr(_ti_core.make_arg_load_expr(arg_id, dtype, is_ref, create_load=True, dbg_info=argload_di))
|
75
|
+
|
76
|
+
|
77
|
+
def get_type_for_kernel_args(dtype, name):
|
78
|
+
if isinstance(dtype, MatrixType):
|
79
|
+
# Compiling the matrix type to a struct type because the support for the matrix type is not ready yet on SPIR-V based backends.
|
80
|
+
if dtype.ndim == 1:
|
81
|
+
elements = [(dtype.dtype, f"{name}_{i}") for i in range(dtype.n)]
|
82
|
+
else:
|
83
|
+
elements = [(dtype.dtype, f"{name}_{i}_{j}") for i in range(dtype.n) for j in range(dtype.m)]
|
84
|
+
return _ti_core.get_type_factory_instance().get_struct_type(elements)
|
85
|
+
if isinstance(dtype, StructType):
|
86
|
+
elements = []
|
87
|
+
for k, element_type in dtype.members.items():
|
88
|
+
if isinstance(element_type, CompoundType):
|
89
|
+
new_dtype = get_type_for_kernel_args(element_type, k)
|
90
|
+
elements.append([new_dtype, k])
|
91
|
+
else:
|
92
|
+
elements.append([element_type, k])
|
93
|
+
return _ti_core.get_type_factory_instance().get_struct_type(elements)
|
94
|
+
# Assuming dtype is a primitive type
|
95
|
+
return dtype
|
96
|
+
|
97
|
+
|
98
|
+
def decl_matrix_arg(matrixtype, name):
|
99
|
+
arg_type = get_type_for_kernel_args(matrixtype, name)
|
100
|
+
arg_id = impl.get_runtime().compiling_callable.insert_scalar_param(arg_type, name)
|
101
|
+
argload_di = _ti_core.DebugInfo(impl.get_runtime().get_current_src_info())
|
102
|
+
arg_load = Expr(_ti_core.make_arg_load_expr(arg_id, arg_type, create_load=False, dbg_info=argload_di))
|
103
|
+
return matrixtype.from_gstaichi_object(arg_load)
|
104
|
+
|
105
|
+
|
106
|
+
def decl_struct_arg(structtype, name):
|
107
|
+
arg_type = get_type_for_kernel_args(structtype, name)
|
108
|
+
arg_id = impl.get_runtime().compiling_callable.insert_scalar_param(arg_type, name)
|
109
|
+
argload_di = _ti_core.DebugInfo(impl.get_runtime().get_current_src_info())
|
110
|
+
arg_load = Expr(_ti_core.make_arg_load_expr(arg_id, arg_type, create_load=False, dbg_info=argload_di))
|
111
|
+
return structtype.from_gstaichi_object(arg_load)
|
112
|
+
|
113
|
+
|
114
|
+
def decl_sparse_matrix(dtype, name):
|
115
|
+
value_type = cook_dtype(dtype)
|
116
|
+
ptr_type = cook_dtype(u64)
|
117
|
+
# Treat the sparse matrix argument as a scalar since we only need to pass in the base pointer
|
118
|
+
arg_id = impl.get_runtime().compiling_callable.insert_scalar_param(ptr_type, name)
|
119
|
+
argload_di = _ti_core.DebugInfo(impl.get_runtime().get_current_src_info())
|
120
|
+
return SparseMatrixProxy(
|
121
|
+
_ti_core.make_arg_load_expr(arg_id, ptr_type, is_ptr=False, dbg_info=argload_di), value_type
|
122
|
+
)
|
123
|
+
|
124
|
+
|
125
|
+
def decl_ndarray_arg(
|
126
|
+
element_type: DataTypeCxx, ndim: int, name: str, needs_grad: bool, boundary: BoundaryMode
|
127
|
+
) -> AnyArray:
|
128
|
+
arg_id = impl.get_runtime().compiling_callable.insert_ndarray_param(element_type, ndim, name, needs_grad)
|
129
|
+
return AnyArray(_ti_core.make_external_tensor_expr(element_type, ndim, arg_id, needs_grad, boundary))
|
130
|
+
|
131
|
+
|
132
|
+
def decl_texture_arg(num_dimensions, name):
|
133
|
+
# FIXME: texture_arg doesn't have element_shape so better separate them
|
134
|
+
arg_id = impl.get_runtime().compiling_callable.insert_texture_param(num_dimensions, name)
|
135
|
+
dbg_info = _ti_core.DebugInfo(impl.get_runtime().get_current_src_info())
|
136
|
+
return TextureSampler(_ti_core.make_texture_ptr_expr(arg_id, num_dimensions, dbg_info), num_dimensions)
|
137
|
+
|
138
|
+
|
139
|
+
def decl_rw_texture_arg(num_dimensions, buffer_format, lod, name):
|
140
|
+
# FIXME: texture_arg doesn't have element_shape so better separate them
|
141
|
+
arg_id = impl.get_runtime().compiling_callable.insert_rw_texture_param(num_dimensions, buffer_format, name)
|
142
|
+
dbg_info = _ti_core.DebugInfo(impl.get_runtime().get_current_src_info())
|
143
|
+
return RWTextureAccessor(
|
144
|
+
_ti_core.make_rw_texture_ptr_expr(arg_id, num_dimensions, buffer_format, lod, dbg_info), num_dimensions
|
145
|
+
)
|
146
|
+
|
147
|
+
|
148
|
+
def decl_ret(dtype):
|
149
|
+
if isinstance(dtype, StructType):
|
150
|
+
dtype = dtype.dtype
|
151
|
+
if isinstance(dtype, MatrixType):
|
152
|
+
dtype = _ti_core.get_type_factory_instance().get_tensor_type([dtype.n, dtype.m], dtype.dtype)
|
153
|
+
else:
|
154
|
+
dtype = cook_dtype(dtype)
|
155
|
+
impl.get_runtime().compiling_callable.insert_ret(dtype)
|