Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.8/site-packages/opt_einsum/backends/cupy.py: 100%
4 statements
« prev ^ index » next coverage.py v7.4.0, created at 2024-01-03 07:57 +0000
« prev ^ index » next coverage.py v7.4.0, created at 2024-01-03 07:57 +0000
1"""
2Required functions for optimized contractions of numpy arrays using cupy.
3"""
5import numpy as np
7from ..sharing import to_backend_cache_wrap
9__all__ = ["to_cupy", "build_expression", "evaluate_constants"]
12@to_backend_cache_wrap
13def to_cupy(array): # pragma: no cover
14 import cupy
16 if isinstance(array, np.ndarray):
17 return cupy.asarray(array)
19 return array
22def build_expression(_, expr): # pragma: no cover
23 """Build a cupy function based on ``arrays`` and ``expr``.
24 """
25 def cupy_contract(*arrays):
26 return expr._contract([to_cupy(x) for x in arrays], backend='cupy').get()
28 return cupy_contract
31def evaluate_constants(const_arrays, expr): # pragma: no cover
32 """Convert constant arguments to cupy arrays, and perform any possible
33 constant contractions.
34 """
35 return expr(*[to_cupy(x) for x in const_arrays], backend='cupy', evaluate_constants=True)