cuquantum-python-jax-cu12 0.0.7__tar.gz → 0.0.8__tar.gz
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.
- {cuquantum_python_jax_cu12-0.0.7/cuquantum_python_jax_cu12.egg-info → cuquantum_python_jax_cu12-0.0.8}/PKG-INFO +3 -3
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/README.md +1 -1
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/cuquantum/densitymat/jax/cppsrc/cudensitymat.h +8 -6
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/cuquantum/densitymat/jax/cppsrc/cudensitymat_jax.cpp +20 -20
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/cuquantum/densitymat/jax/pysrc/context.py +27 -33
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8/cuquantum_python_jax_cu12.egg-info}/PKG-INFO +3 -3
- cuquantum_python_jax_cu12-0.0.8/cuquantum_python_jax_cu12.egg-info/requires.txt +2 -0
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/pyproject.toml +2 -2
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/pyproject.toml.template +2 -2
- cuquantum_python_jax_cu12-0.0.7/cuquantum_python_jax_cu12.egg-info/requires.txt +0 -2
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/LICENSE +0 -0
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/MANIFEST.in +0 -0
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/NV.LICENSE +0 -0
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/configure.sh +0 -0
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/cuquantum/densitymat/jax/__init__.py +0 -0
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/cuquantum/densitymat/jax/_build_info.py +0 -0
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/cuquantum/densitymat/jax/cppsrc/CMakeLists.txt +0 -0
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/cuquantum/densitymat/jax/cppsrc/cudensitymat_jax.h +0 -0
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/cuquantum/densitymat/jax/cppsrc/pybind.cpp +0 -0
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/cuquantum/densitymat/jax/cppsrc/utils.h +0 -0
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/cuquantum/densitymat/jax/operator_action.py +0 -0
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/cuquantum/densitymat/jax/pysrc/__init__.py +0 -0
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/cuquantum/densitymat/jax/pysrc/base.py +0 -0
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/cuquantum/densitymat/jax/pysrc/elementary_operator.py +0 -0
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/cuquantum/densitymat/jax/pysrc/matrix_operator.py +0 -0
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/cuquantum/densitymat/jax/pysrc/operator.py +0 -0
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/cuquantum/densitymat/jax/pysrc/operator_action_prim.py +0 -0
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/cuquantum/densitymat/jax/pysrc/operator_term.py +0 -0
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/cuquantum/densitymat/jax/pysrc/simplifier_config.py +0 -0
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/cuquantum/densitymat/jax/utils.py +0 -0
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/cuquantum/stabilizer/jax/__init__.py +0 -0
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/cuquantum/stabilizer/jax/_build_info.py +0 -0
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/cuquantum/stabilizer/jax/cppsrc/CMakeLists.txt +0 -0
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/cuquantum/stabilizer/jax/cppsrc/custabilizer.h +0 -0
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/cuquantum/stabilizer/jax/cppsrc/custabilizer_jax.cpp +0 -0
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/cuquantum/stabilizer/jax/cppsrc/custabilizer_jax.h +0 -0
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/cuquantum/stabilizer/jax/cppsrc/pybind.cpp +0 -0
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/cuquantum/stabilizer/jax/pysrc/__init__.py +0 -0
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/cuquantum/stabilizer/jax/pysrc/_backend.py +0 -0
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/cuquantum/stabilizer/jax/pysrc/_ffi.py +0 -0
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/cuquantum_python_jax_cu12.egg-info/SOURCES.txt +0 -0
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/cuquantum_python_jax_cu12.egg-info/dependency_links.txt +0 -0
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/cuquantum_python_jax_cu12.egg-info/not-zip-safe +0 -0
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/cuquantum_python_jax_cu12.egg-info/top_level.txt +0 -0
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/setup.cfg +0 -0
- {cuquantum_python_jax_cu12-0.0.7 → cuquantum_python_jax_cu12-0.0.8}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cuquantum-python-jax-cu12
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.8
|
|
4
4
|
Summary: NVIDIA cuQuantum Python JAX
|
|
5
5
|
Author-email: NVIDIA Corporation <cuquantum-python@nvidia.com>
|
|
6
6
|
License-Expression: BSD-3-Clause
|
|
@@ -21,7 +21,7 @@ Requires-Python: >=3.11.0
|
|
|
21
21
|
Description-Content-Type: text/markdown
|
|
22
22
|
License-File: LICENSE
|
|
23
23
|
License-File: NV.LICENSE
|
|
24
|
-
Requires-Dist: cuquantum-python-cu12~=26.
|
|
24
|
+
Requires-Dist: cuquantum-python-cu12~=26.11.0
|
|
25
25
|
Requires-Dist: jax[cuda12-local]>=0.8
|
|
26
26
|
Dynamic: license-file
|
|
27
27
|
|
|
@@ -106,7 +106,7 @@ Runtime dependencies of the cuQuantum Python JAX package include:
|
|
|
106
106
|
* Python 3.11+
|
|
107
107
|
* An NVIDIA GPU with compute capability 7.5+
|
|
108
108
|
* CUDA Toolkit 12.x or 13.x
|
|
109
|
-
* cuquantum-python-cu12~=26.
|
|
109
|
+
* cuquantum-python-cu12~=26.11.0 for CUDA 12 or cuquantum-python-cu13~=26.11.0 for CUDA 13
|
|
110
110
|
* jax[cuda12-local]>=0.8 for CUDA 12 or jax[cuda13-local]>=0.8 for CUDA 13
|
|
111
111
|
|
|
112
112
|
## Developer Notes
|
|
@@ -79,7 +79,7 @@ Runtime dependencies of the cuQuantum Python JAX package include:
|
|
|
79
79
|
* Python 3.11+
|
|
80
80
|
* An NVIDIA GPU with compute capability 7.5+
|
|
81
81
|
* CUDA Toolkit 12.x or 13.x
|
|
82
|
-
* cuquantum-python-cu12~=26.
|
|
82
|
+
* cuquantum-python-cu12~=26.11.0 for CUDA 12 or cuquantum-python-cu13~=26.11.0 for CUDA 13
|
|
83
83
|
* jax[cuda12-local]>=0.8 for CUDA 12 or jax[cuda13-local]>=0.8 for CUDA 13
|
|
84
84
|
|
|
85
85
|
## Developer Notes
|
|
@@ -64,7 +64,7 @@
|
|
|
64
64
|
|
|
65
65
|
#define CUDENSITYMAT_MAJOR 0 //!< cuDensityMat major version.
|
|
66
66
|
#define CUDENSITYMAT_MINOR 7 //!< cuDensityMat minor version.
|
|
67
|
-
#define CUDENSITYMAT_PATCH
|
|
67
|
+
#define CUDENSITYMAT_PATCH 1 //!< cuDensityMat patch version.
|
|
68
68
|
#define CUDENSITYMAT_VERSION (CUDENSITYMAT_MAJOR * 10000 + CUDENSITYMAT_MINOR * 100 + CUDENSITYMAT_PATCH)
|
|
69
69
|
|
|
70
70
|
|
|
@@ -3774,11 +3774,7 @@ cudensitymatStatus_t cudensitymatEigenDecompositionConfigure(
|
|
|
3774
3774
|
* (e) the representative `state` is a single-site (1-mode) MPS (an MPS
|
|
3775
3775
|
* with at least two sites is required by the DMRG engine);
|
|
3776
3776
|
* (f) the state data type is not `CUDA_R_64F` or `CUDA_C_64F`, or
|
|
3777
|
-
* `computeType` is not `CUDENSITYMAT_COMPUTE_64F
|
|
3778
|
-
* (g) shift-invert DMRG is configured with `NUM_SITES == 2` for an MPS
|
|
3779
|
-
* containing exactly two tensors. This last restriction is a two-site
|
|
3780
|
-
* ProjectionMPS dependency limitation: `NUM_SITES == 1` remains supported
|
|
3781
|
-
* for a two-tensor MPS.
|
|
3777
|
+
* `computeType` is not `CUDENSITYMAT_COMPUTE_64F`.
|
|
3782
3778
|
*/
|
|
3783
3779
|
cudensitymatStatus_t cudensitymatEigenDecompositionPrepare(
|
|
3784
3780
|
const cudensitymatHandle_t handle,
|
|
@@ -3928,6 +3924,12 @@ cudensitymatStatus_t cudensitymatDestroyWorkspace(
|
|
|
3928
3924
|
/**
|
|
3929
3925
|
* \brief Queries the required workspace buffer size.
|
|
3930
3926
|
*
|
|
3927
|
+
* \note Two-site MPS operations can execute without caller-provided host
|
|
3928
|
+
* scratch even when a nonzero host workspace size is reported. If host
|
|
3929
|
+
* scratch is provided, its size must be at least the reported value.
|
|
3930
|
+
* Providing the reported host workspace is recommended for performance.
|
|
3931
|
+
* Device scratch requirements remain mandatory.
|
|
3932
|
+
*
|
|
3931
3933
|
* \param[in] handle Library handle.
|
|
3932
3934
|
* \param[in] workspaceDescr Workspace descriptor.
|
|
3933
3935
|
* \param[in] memSpace Memory space.
|
|
@@ -56,7 +56,7 @@ xla::ffi::Error OperatorActionImpl(cudaStream_t stream,
|
|
|
56
56
|
FFI_CUDA_ERROR_CHECK(cudaStreamSynchronize(stream));
|
|
57
57
|
}
|
|
58
58
|
|
|
59
|
-
//
|
|
59
|
+
// Process buffers for all inputs, including input state, elementary/matrix operators and coefficients.
|
|
60
60
|
std::vector<void*> stateInComponentBufs;
|
|
61
61
|
std::vector<size_t> stateInComponentSizes;
|
|
62
62
|
for (int i = 0; i < inBufs.size(); ++i) {
|
|
@@ -103,6 +103,7 @@ xla::ffi::Error OperatorActionImpl(cudaStream_t stream,
|
|
|
103
103
|
FFI_CUDA_ERROR_CHECK(cudaStreamSynchronize(stream));
|
|
104
104
|
}
|
|
105
105
|
|
|
106
|
+
// Attach storage to input state.
|
|
106
107
|
FFI_CUDM_ERROR_CHECK(cudensitymatStateAttachComponentStorage(handle,
|
|
107
108
|
stateIn,
|
|
108
109
|
numStateComponents,
|
|
@@ -147,9 +148,6 @@ xla::ffi::Error OperatorActionImpl(cudaStream_t stream,
|
|
|
147
148
|
stateOutComponentSizes.data())
|
|
148
149
|
);
|
|
149
150
|
|
|
150
|
-
|
|
151
|
-
// Execute operator action.
|
|
152
|
-
|
|
153
151
|
// Attach batched coefficients if needed.
|
|
154
152
|
if (operatorTermBatchedCoeffsPtrs.size() > 0 || operatorProductBatchedCoeffsPtrs.size() > 0) {
|
|
155
153
|
FFI_CUDM_ERROR_CHECK(cudensitymatAttachBatchedCoefficients(
|
|
@@ -166,8 +164,7 @@ xla::ffi::Error OperatorActionImpl(cudaStream_t stream,
|
|
|
166
164
|
// Initialize output state to zero.
|
|
167
165
|
FFI_CUDM_ERROR_CHECK(cudensitymatStateInitializeZero(handle, stateOut, stream));
|
|
168
166
|
|
|
169
|
-
|
|
170
|
-
|
|
167
|
+
// Execute operator action.
|
|
171
168
|
FFI_CUDM_ERROR_CHECK(cudensitymatOperatorComputeAction(handle,
|
|
172
169
|
superoperator,
|
|
173
170
|
0.0, // time
|
|
@@ -193,8 +190,8 @@ XLA_FFI_DEFINE_HANDLER_SYMBOL(
|
|
|
193
190
|
OperatorActionImpl,
|
|
194
191
|
xla::ffi::Ffi::Bind()
|
|
195
192
|
.Ctx<xla::ffi::PlatformStream<cudaStream_t>>()
|
|
196
|
-
.RemainingArgs() // all input buffers
|
|
197
|
-
.RemainingRets() // all output buffers (workspace first, then
|
|
193
|
+
.RemainingArgs() // all input buffers (state_in components, elementary/matrix operators, coefficients)
|
|
194
|
+
.RemainingRets() // all output buffers (workspace first, then state_out components)
|
|
198
195
|
.Attr<xla::ffi::Span<const int64_t>>("other_in_types")
|
|
199
196
|
.Attr<xla::ffi::Span<const int64_t>>("other_in_ptrs")
|
|
200
197
|
.Attr<int64_t>("batch_size")
|
|
@@ -316,7 +313,6 @@ xla::ffi::Error OperatorActionBackwardDiffImpl(cudaStream_t stream,
|
|
|
316
313
|
stateOutAdjComponentSizes.data()));
|
|
317
314
|
|
|
318
315
|
// Attach storage to output state.
|
|
319
|
-
// outBufs layout: [workspace, state in adj components..., grad bufs...]
|
|
320
316
|
std::vector<void*> stateInAdjComponentBufs;
|
|
321
317
|
std::vector<size_t> stateInAdjComponentSizes;
|
|
322
318
|
|
|
@@ -353,10 +349,18 @@ xla::ffi::Error OperatorActionBackwardDiffImpl(cudaStream_t stream,
|
|
|
353
349
|
workspacePtrAligned,
|
|
354
350
|
workspaceSizeAligned));
|
|
355
351
|
|
|
356
|
-
// Initialize
|
|
352
|
+
// Initialize state_in_adj to zero.
|
|
357
353
|
FFI_CUDM_ERROR_CHECK(cudensitymatStateInitializeZero(handle, stateInAdj, stream));
|
|
358
354
|
|
|
359
|
-
//
|
|
355
|
+
// Zero out the persistent gradient buffers.
|
|
356
|
+
for (int i = 0; i < otherOutPtrs.size(); ++i) {
|
|
357
|
+
xla::ffi::Result<xla::ffi::AnyBuffer> resBuf =
|
|
358
|
+
outBufs.get<xla::ffi::AnyBuffer>(i + numStateComponents + 1).value();
|
|
359
|
+
FFI_CUDA_ERROR_CHECK(cudaMemsetAsync(reinterpret_cast<void*>(otherOutPtrs[i]),
|
|
360
|
+
0,
|
|
361
|
+
resBuf->size_bytes(),
|
|
362
|
+
stream));
|
|
363
|
+
}
|
|
360
364
|
|
|
361
365
|
// Attach batched coefficients if needed.
|
|
362
366
|
if (operatorTermBatchedCoeffsPtrs.size() > 0 || operatorProductBatchedCoeffsPtrs.size() > 0) {
|
|
@@ -371,6 +375,7 @@ xla::ffi::Error OperatorActionBackwardDiffImpl(cudaStream_t stream,
|
|
|
371
375
|
operatorProductBatchedCoeffs.data()));
|
|
372
376
|
}
|
|
373
377
|
|
|
378
|
+
// Execute operator action backward differentiation.
|
|
374
379
|
FFI_CUDM_ERROR_CHECK(cudensitymatOperatorComputeActionBackwardDiff(handle,
|
|
375
380
|
superoperator,
|
|
376
381
|
0.0, // time
|
|
@@ -384,13 +389,7 @@ xla::ffi::Error OperatorActionBackwardDiffImpl(cudaStream_t stream,
|
|
|
384
389
|
workspaceDesc,
|
|
385
390
|
stream));
|
|
386
391
|
|
|
387
|
-
//
|
|
388
|
-
// their += accumulation operations on CuPy's default CUDA stream, which may differ
|
|
389
|
-
// from the XLA FFI stream used here. Synchronize the default stream before copying
|
|
390
|
-
// so that all callback writes are guaranteed to be visible to the memcpy below.
|
|
391
|
-
FFI_CUDA_ERROR_CHECK(cudaStreamSynchronize(cudaStreamDefault));
|
|
392
|
-
|
|
393
|
-
// outBufs layout (after workspace and numStateComponents state adj bufs): [grad bufs].
|
|
392
|
+
// Copy gradient buffers from CuPy arrays to XLA buffers.
|
|
394
393
|
for (int i = 0; i < otherOutPtrs.size(); ++i) {
|
|
395
394
|
xla::ffi::Result<xla::ffi::AnyBuffer> resBuf =
|
|
396
395
|
outBufs.get<xla::ffi::AnyBuffer>(i + numStateComponents + 1).value();
|
|
@@ -418,8 +417,9 @@ XLA_FFI_DEFINE_HANDLER_SYMBOL(
|
|
|
418
417
|
OperatorActionBackwardDiffImpl,
|
|
419
418
|
xla::ffi::Ffi::Bind()
|
|
420
419
|
.Ctx<xla::ffi::PlatformStream<cudaStream_t>>()
|
|
421
|
-
.RemainingArgs() // all input buffers
|
|
422
|
-
|
|
420
|
+
.RemainingArgs() // all input buffers (state_in components, state_out_adj components,
|
|
421
|
+
// elementary/matrix operators, coefficients)
|
|
422
|
+
.RemainingRets() // all output buffers (workspace first, then state_in_adj components, then grad bufs)
|
|
423
423
|
.Attr<xla::ffi::Span<const int64_t>>("other_in_types")
|
|
424
424
|
.Attr<xla::ffi::Span<const int64_t>>("other_in_ptrs")
|
|
425
425
|
.Attr<xla::ffi::Span<const int64_t>>("other_out_ptrs")
|
|
@@ -300,46 +300,40 @@ class StateContext:
|
|
|
300
300
|
)
|
|
301
301
|
self.logger.debug(f"Created output state at {hex(self._state_out)}")
|
|
302
302
|
|
|
303
|
-
# The state adjoints are
|
|
303
|
+
# The state adjoints are created by the first backward rule, in create_adjoint_buffers.
|
|
304
304
|
self._state_in_adj = None
|
|
305
305
|
self._state_out_adj = None
|
|
306
306
|
|
|
307
307
|
def create_adjoint_buffers(self):
|
|
308
308
|
"""
|
|
309
|
-
Create
|
|
309
|
+
Create the input and output state adjoints once per config; later backward passes reuse them.
|
|
310
310
|
|
|
311
|
-
|
|
312
|
-
|
|
311
|
+
Like the input and output handles, the adjoint handles are config-only (buffers are attached
|
|
312
|
+
on every call), and traced backward primitives embed their addresses as static parameters.
|
|
313
|
+
They must therefore live as long as this context: destroying them here would leave earlier
|
|
314
|
+
traced or compiled backward actions pointing at freed handles. free() releases them.
|
|
313
315
|
"""
|
|
314
|
-
if self._state_in_adj is
|
|
315
|
-
cudm.
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
self.
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
CudensitymatContext._handle,
|
|
336
|
-
self.state_purity,
|
|
337
|
-
len(self._space_mode_extents),
|
|
338
|
-
self._space_mode_extents,
|
|
339
|
-
self.batch_size,
|
|
340
|
-
self._data_type
|
|
341
|
-
)
|
|
342
|
-
self.logger.debug(f"Created output state adjoint at {hex(self._state_out_adj)}")
|
|
316
|
+
if self._state_in_adj is None:
|
|
317
|
+
self._state_in_adj = cudm.create_state(
|
|
318
|
+
CudensitymatContext._handle,
|
|
319
|
+
self.state_purity,
|
|
320
|
+
len(self._space_mode_extents),
|
|
321
|
+
self._space_mode_extents,
|
|
322
|
+
self.batch_size,
|
|
323
|
+
self._data_type
|
|
324
|
+
)
|
|
325
|
+
self.logger.debug(f"Created input state adjoint at {hex(self._state_in_adj)}")
|
|
326
|
+
|
|
327
|
+
if self._state_out_adj is None:
|
|
328
|
+
self._state_out_adj = cudm.create_state(
|
|
329
|
+
CudensitymatContext._handle,
|
|
330
|
+
self.state_purity,
|
|
331
|
+
len(self._space_mode_extents),
|
|
332
|
+
self._space_mode_extents,
|
|
333
|
+
self.batch_size,
|
|
334
|
+
self._data_type
|
|
335
|
+
)
|
|
336
|
+
self.logger.debug(f"Created output state adjoint at {hex(self._state_out_adj)}")
|
|
343
337
|
|
|
344
338
|
def free(self):
|
|
345
339
|
"""
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cuquantum-python-jax-cu12
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.8
|
|
4
4
|
Summary: NVIDIA cuQuantum Python JAX
|
|
5
5
|
Author-email: NVIDIA Corporation <cuquantum-python@nvidia.com>
|
|
6
6
|
License-Expression: BSD-3-Clause
|
|
@@ -21,7 +21,7 @@ Requires-Python: >=3.11.0
|
|
|
21
21
|
Description-Content-Type: text/markdown
|
|
22
22
|
License-File: LICENSE
|
|
23
23
|
License-File: NV.LICENSE
|
|
24
|
-
Requires-Dist: cuquantum-python-cu12~=26.
|
|
24
|
+
Requires-Dist: cuquantum-python-cu12~=26.11.0
|
|
25
25
|
Requires-Dist: jax[cuda12-local]>=0.8
|
|
26
26
|
Dynamic: license-file
|
|
27
27
|
|
|
@@ -106,7 +106,7 @@ Runtime dependencies of the cuQuantum Python JAX package include:
|
|
|
106
106
|
* Python 3.11+
|
|
107
107
|
* An NVIDIA GPU with compute capability 7.5+
|
|
108
108
|
* CUDA Toolkit 12.x or 13.x
|
|
109
|
-
* cuquantum-python-cu12~=26.
|
|
109
|
+
* cuquantum-python-cu12~=26.11.0 for CUDA 12 or cuquantum-python-cu13~=26.11.0 for CUDA 13
|
|
110
110
|
* jax[cuda12-local]>=0.8 for CUDA 12 or jax[cuda13-local]>=0.8 for CUDA 13
|
|
111
111
|
|
|
112
112
|
## Developer Notes
|
|
@@ -17,7 +17,7 @@ build-backend = "setuptools.build_meta"
|
|
|
17
17
|
|
|
18
18
|
[project]
|
|
19
19
|
name = "cuquantum-python-jax-cu12"
|
|
20
|
-
version = "0.0.
|
|
20
|
+
version = "0.0.8"
|
|
21
21
|
description = "NVIDIA cuQuantum Python JAX"
|
|
22
22
|
readme = "README.md"
|
|
23
23
|
license = "BSD-3-Clause"
|
|
@@ -41,7 +41,7 @@ classifiers = [
|
|
|
41
41
|
"Environment :: GPU :: NVIDIA CUDA :: 12",
|
|
42
42
|
]
|
|
43
43
|
dependencies = [
|
|
44
|
-
"cuquantum-python-cu12~=26.
|
|
44
|
+
"cuquantum-python-cu12~=26.11.0",
|
|
45
45
|
"jax[cuda12-local]>=0.8",
|
|
46
46
|
]
|
|
47
47
|
|
|
@@ -17,7 +17,7 @@ build-backend = "setuptools.build_meta"
|
|
|
17
17
|
|
|
18
18
|
[project]
|
|
19
19
|
name = "cuquantum-python-jax-cu@CUDA_MAJOR_VER@"
|
|
20
|
-
version = "0.0.
|
|
20
|
+
version = "0.0.8"
|
|
21
21
|
description = "NVIDIA cuQuantum Python JAX"
|
|
22
22
|
readme = "README.md"
|
|
23
23
|
license = "BSD-3-Clause"
|
|
@@ -41,7 +41,7 @@ classifiers = [
|
|
|
41
41
|
"@CUDA_CLASSIFIER@",
|
|
42
42
|
]
|
|
43
43
|
dependencies = [
|
|
44
|
-
"cuquantum-python-cu@CUDA_MAJOR_VER@~=26.
|
|
44
|
+
"cuquantum-python-cu@CUDA_MAJOR_VER@~=26.11.0",
|
|
45
45
|
"jax[cuda@CUDA_MAJOR_VER@-local]@JAX_VERSION_SPEC@",
|
|
46
46
|
]
|
|
47
47
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|