Skip to content

Commit 68f4a2d

Browse files
author
Daniel Lowell
committed
sync with internal repo1 (commit 97e9aec2e)
1 parent 427ccde commit 68f4a2d

File tree

9 files changed

+2050
-0
lines changed

9 files changed

+2050
-0
lines changed
Lines changed: 174 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,174 @@
1+
# Copyright (c) 2025, NVIDIA CORPORATION & AFFILIATES
2+
#
3+
# SPDX-License-Identifier: BSD-3-Clause
4+
#
5+
# This code was automatically generated with version 25.06.0. Do not modify it directly.
6+
7+
from cpython.memoryview cimport PyMemoryView_FromMemory
8+
from cpython.buffer cimport PyBUF_READ, PyBUF_WRITE
9+
10+
import math
11+
12+
import numpy as np
13+
import cupy as cp
14+
15+
16+
cdef inline object _reconstruct_cpu_params(int64_t batch_size, int32_t num_params, const double * _params_):
17+
"""
18+
Reconstruct params NumPy array from pointer and size.
19+
"""
20+
params_size = sizeof(double) * num_params * batch_size
21+
params_buffer = PyMemoryView_FromMemory(<char *>_params_, params_size, PyBUF_READ)
22+
params = np.ndarray((num_params, batch_size), dtype=np.float64, buffer=params_buffer, order='F')
23+
return params
24+
25+
26+
cdef inline object _reconstruct_cpu_params_grad(int64_t batch_size, int32_t num_params, const double * _params_grad_):
27+
"""
28+
Reconstruct params gradient NumPy array from pointer and size.
29+
"""
30+
params_grad_size = sizeof(double) * num_params * batch_size
31+
params_grad_buffer = PyMemoryView_FromMemory(<char *>_params_grad_, params_grad_size, PyBUF_WRITE)
32+
params_grad = np.ndarray((num_params, batch_size), dtype=np.float64, buffer=params_grad_buffer, order='F')
33+
return params_grad
34+
35+
36+
cdef inline object _reconstruct_cpu_storage(mode_extents, int64_t batch_size, data_type, const void * _storage_):
37+
"""
38+
Reconstruct storage NumPy array from pointer and size.
39+
"""
40+
storage_size = data_type.itemsize * math.prod(mode_extents) * batch_size
41+
storage_buffer = PyMemoryView_FromMemory(<char *>_storage_, storage_size, PyBUF_WRITE)
42+
storage = np.ndarray((*mode_extents, batch_size), dtype=data_type, buffer=storage_buffer, order='F')
43+
return storage
44+
45+
46+
cdef inline object _reconstruct_gpu_params(int64_t batch_size, int32_t num_params, const double * _params_):
47+
"""
48+
Reconstruct params CuPy array from pointer and size.
49+
"""
50+
params_size = sizeof(double) * num_params * batch_size
51+
params_memory = cp.cuda.UnownedMemory(<intptr_t>_params_, params_size, None)
52+
params_memory_ptr = cp.cuda.MemoryPointer(params_memory, 0)
53+
params = cp.ndarray((num_params, batch_size), dtype=cp.float64, memptr=params_memory_ptr, order='F')
54+
return params
55+
56+
57+
cdef inline object _reconstruct_gpu_params_grad(int64_t batch_size, int32_t num_params, const double * _params_grad_):
58+
"""
59+
Reconstruct params gradient CuPy array from pointer and size.
60+
"""
61+
params_grad_size = sizeof(double) * num_params * batch_size
62+
params_grad_memory = cp.cuda.UnownedMemory(<intptr_t>_params_grad_, params_grad_size, None)
63+
params_grad_memory_ptr = cp.cuda.MemoryPointer(params_grad_memory, 0)
64+
params_grad = cp.ndarray((num_params, batch_size), dtype=cp.float64, memptr=params_grad_memory_ptr, order='F')
65+
return params_grad
66+
67+
68+
cdef inline object _reconstruct_gpu_storage(mode_extents, int64_t batch_size, data_type, const void * _storage_):
69+
"""
70+
Reconstruct storage CuPy array from pointer and size.
71+
"""
72+
storage_size = data_type.itemsize * math.prod(mode_extents) * batch_size
73+
storage_memory = cp.cuda.UnownedMemory(<intptr_t>_storage_, storage_size, None)
74+
storage_memory_ptr = cp.cuda.MemoryPointer(storage_memory, 0)
75+
storage = cp.ndarray((*mode_extents, batch_size), dtype=data_type, memptr=storage_memory_ptr, order='F')
76+
return storage
77+
78+
79+
cdef inline void _hold_scalar_callback_reference(intptr_t obj, scalar_callback):
80+
"""
81+
Hold reference to a scalar callback.
82+
"""
83+
if scalar_callback is not None:
84+
_callback_holders[obj].add((<WrappedScalarCallback>scalar_callback).callback)
85+
86+
87+
cdef inline void _hold_tensor_callback_reference(intptr_t obj, tensor_callback):
88+
"""
89+
Hold reference to a tensor callback.
90+
"""
91+
if tensor_callback is not None:
92+
_callback_holders[obj].add((<WrappedTensorCallback>tensor_callback).callback)
93+
94+
95+
cdef inline void _hold_scalar_gradient_callback_reference(intptr_t obj, scalar_gradient_callback):
96+
"""
97+
Hold reference to a scalar gradient callback.
98+
"""
99+
if scalar_gradient_callback is not None:
100+
_callback_holders[obj].add((<WrappedScalarGradientCallback>scalar_gradient_callback).callback)
101+
102+
103+
cdef inline void _hold_tensor_gradient_callback_reference(intptr_t obj, tensor_gradient_callback):
104+
"""
105+
Hold reference to a tensor gradient callback.
106+
"""
107+
if tensor_gradient_callback is not None:
108+
_callback_holders[obj].add((<WrappedTensorGradientCallback>tensor_gradient_callback).callback)
109+
110+
111+
cdef inline void _hold_tensor_gradient_callback_references(intptr_t obj, tensor_gradient_callbacks):
112+
"""
113+
Hold references to a list of tensor gradient callbacks.
114+
"""
115+
for tensor_gradient_callback in tensor_gradient_callbacks:
116+
_hold_tensor_gradient_callback_reference(obj, tensor_gradient_callback)
117+
118+
119+
cdef inline _WrappedScalarCallback _convert_scalar_callback(scalar_callback):
120+
"""
121+
Convert a wrapped scalar callback from a cdef class to a C struct.
122+
"""
123+
cdef _WrappedScalarCallback _scalar_callback_
124+
if scalar_callback is not None:
125+
_scalar_callback_ = (<WrappedScalarCallback>scalar_callback)._struct
126+
else:
127+
_scalar_callback_.callback = NULL
128+
_scalar_callback_.device = <_CallbackDevice>0
129+
_scalar_callback_.wrapper = NULL
130+
return _scalar_callback_
131+
132+
133+
cdef inline _WrappedTensorCallback _convert_tensor_callback(tensor_callback):
134+
"""
135+
Convert a wrapped tensor callback from a cdef class to a C struct.
136+
"""
137+
cdef _WrappedTensorCallback _tensor_callback_
138+
if tensor_callback is not None:
139+
_tensor_callback_ = (<WrappedTensorCallback>tensor_callback)._struct
140+
else:
141+
_tensor_callback_.callback = NULL
142+
_tensor_callback_.device = <_CallbackDevice>0
143+
_tensor_callback_.wrapper = NULL
144+
return _tensor_callback_
145+
146+
147+
cdef inline _WrappedScalarGradientCallback _convert_scalar_gradient_callback(scalar_gradient_callback):
148+
"""
149+
Convert a wrapped scalar gradient callback from a cdef class to a C struct.
150+
"""
151+
cdef _WrappedScalarGradientCallback _scalar_gradient_callback_
152+
if scalar_gradient_callback is not None:
153+
_scalar_gradient_callback_ = (<WrappedScalarGradientCallback>scalar_gradient_callback)._struct
154+
else:
155+
_scalar_gradient_callback_.callback = NULL
156+
_scalar_gradient_callback_.device = <_CallbackDevice>0
157+
_scalar_gradient_callback_.wrapper = NULL
158+
_scalar_gradient_callback_.direction = <_DifferentiationDir>0
159+
return _scalar_gradient_callback_
160+
161+
162+
cdef inline _WrappedTensorGradientCallback _convert_tensor_gradient_callback(tensor_gradient_callback):
163+
"""
164+
Convert a wrapped tensor gradient callback from a cdef class to a C struct.
165+
"""
166+
cdef _WrappedTensorGradientCallback _tensor_gradient_callback_
167+
if tensor_gradient_callback is not None:
168+
_tensor_gradient_callback_ = (<WrappedTensorGradientCallback>tensor_gradient_callback)._struct
169+
else:
170+
_tensor_gradient_callback_.callback = NULL
171+
_tensor_gradient_callback_.device = <_CallbackDevice>0
172+
_tensor_gradient_callback_.wrapper = NULL
173+
_tensor_gradient_callback_.direction = <_DifferentiationDir>0
174+
return _tensor_gradient_callback_

0 commit comments

Comments
 (0)