theano.gpuarray.linalg
– Linear algebra operation¶
Warning
Some operation need Magma to be installed and the Theano flags
config.magma.enabled=True
to be activated. See also the
flags config.magma.include_path
and
config.magma.library_path
.
Linalg Op¶
-
class
theano.gpuarray.linalg.
GpuCholesky
(lower=True, inplace=False)[source]¶ CUSOLVER GPU Cholesky Op.
Given a real positive definite matrix A returns either a lower triangular matrix L such that A == dot(L, L.T) if lower == True else returns an upper triangular matrix U such that A == dot(U.T, U) if lower == False.
- Parameters
lower – Whether to return a lower rather than upper triangular decomposition.
-
perform
(node, inputs, outputs)[source]¶ Required: Calculate the function on the inputs and put the variables in the output storage. Return None.
- Parameters
node (Apply instance) – Contains the symbolic inputs and outputs.
inputs (list) – Sequence of inputs (immutable).
output_storage (list) – List of mutable 1-element lists (do not change the length of these lists)
Notes
The output_storage list might contain data. If an element of output_storage is not None, it has to be of the right type, for instance, for a TensorVariable, it has to be a Numpy ndarray, with the right number of dimensions, and the correct dtype. Its shape and stride pattern, can be arbitrary. It not is guaranteed that it was produced by a previous call to impl. It could be allocated by another Op impl is free to reuse it as it sees fit, or to discard it and allocate new memory.
- Raises
MethodNotDefined – The subclass does not override this method.
-
prepare_node
(node, storage_map, compute_map, impl)[source]¶ Make any special modifications that the Op needs before doing make_thunk().
This can modify the node inplace and should return nothing.
It can be called multiple time with different impl. It is the op responsibility to don’t re-prepare the node when it isn’t good to do so.
-
class
theano.gpuarray.linalg.
GpuCublasTriangularSolve
(lower=True, trans='N')[source]¶ CUBLAS GPU Triangular Solve Op.
- Parameters
lower – Whether system is lower-triangular (True) or upper-triangular (False).
trans – Whether to take the transpose of the input matrix or not.
-
perform
(node, inputs, outputs)[source]¶ Required: Calculate the function on the inputs and put the variables in the output storage. Return None.
- Parameters
node (Apply instance) – Contains the symbolic inputs and outputs.
inputs (list) – Sequence of inputs (immutable).
output_storage (list) – List of mutable 1-element lists (do not change the length of these lists)
Notes
The output_storage list might contain data. If an element of output_storage is not None, it has to be of the right type, for instance, for a TensorVariable, it has to be a Numpy ndarray, with the right number of dimensions, and the correct dtype. Its shape and stride pattern, can be arbitrary. It not is guaranteed that it was produced by a previous call to impl. It could be allocated by another Op impl is free to reuse it as it sees fit, or to discard it and allocate new memory.
- Raises
MethodNotDefined – The subclass does not override this method.
-
prepare_node
(node, storage_map, compute_map, impl)[source]¶ Make any special modifications that the Op needs before doing make_thunk().
This can modify the node inplace and should return nothing.
It can be called multiple time with different impl. It is the op responsibility to don’t re-prepare the node when it isn’t good to do so.
-
class
theano.gpuarray.linalg.
GpuCusolverSolve
(A_structure='general', trans='N', inplace=False)[source]¶ CUSOLVER GPU solver OP.
- Parameters
trans – Whether to take the transpose of the input matrix or not.
-
perform
(node, inputs, outputs)[source]¶ Required: Calculate the function on the inputs and put the variables in the output storage. Return None.
- Parameters
node (Apply instance) – Contains the symbolic inputs and outputs.
inputs (list) – Sequence of inputs (immutable).
output_storage (list) – List of mutable 1-element lists (do not change the length of these lists)
Notes
The output_storage list might contain data. If an element of output_storage is not None, it has to be of the right type, for instance, for a TensorVariable, it has to be a Numpy ndarray, with the right number of dimensions, and the correct dtype. Its shape and stride pattern, can be arbitrary. It not is guaranteed that it was produced by a previous call to impl. It could be allocated by another Op impl is free to reuse it as it sees fit, or to discard it and allocate new memory.
- Raises
MethodNotDefined – The subclass does not override this method.
-
prepare_node
(node, storage_map, compute_map, impl)[source]¶ Make any special modifications that the Op needs before doing make_thunk().
This can modify the node inplace and should return nothing.
It can be called multiple time with different impl. It is the op responsibility to don’t re-prepare the node when it isn’t good to do so.
-
class
theano.gpuarray.linalg.
GpuMagmaBase
(func_files, func_name=None)[source]¶ Base class for magma related operations. Add the necessary headers, libraries and optionally the location of headers and library.
-
c_header_dirs
()[source]¶ Optional: Return a list of header search paths required by code returned by this class.
Examples
return [‘/usr/local/include’, ‘/opt/weirdpath/src/include’]
Provides search paths for headers, in addition to those in any relevant environment variables.
Hint: for unix compilers, these are the things that get ‘-I’ prefixed in the compiler cmdline.
- Raises
MethodNotDefined – Subclass does not implement this method.
-
c_headers
()[source]¶ Optional: Return a list of header files required by code returned by this class.
Examples
return [‘<iostream>’, ‘<math.h>’, ‘/full/path/to/header.h’]
These strings will be prefixed with “#include ” and inserted at the beginning of the c source code.
Strings in this list that start neither with ‘<’ nor ‘”’ will be enclosed in double-quotes.
- Raises
MethodNotDefined – Subclass does not implement this method.
-
c_lib_dirs
()[source]¶ Optional: Return a list of library search paths required by code returned by this class.
Examples
return [‘/usr/local/lib’, ‘/opt/weirdpath/build/libs’].
Provides search paths for libraries, in addition to those in any relevant environment variables (e.g. LD_LIBRARY_PATH).
Hint: for unix compilers, these are the things that get ‘-L’ prefixed in the compiler cmdline.
- Raises
MethodNotDefined – Subclass does not implement this method.
-
c_libraries
()[source]¶ Optional: Return a list of libraries required by code returned by this class.
Examples
return [‘gsl’, ‘gslcblas’, ‘m’, ‘fftw3’, ‘g2c’].
The compiler will search the directories specified by the environment variable LD_LIBRARY_PATH in addition to any returned by c_lib_dirs.
Hint: for unix compilers, these are the things that get ‘-l’ prefixed in the compiler cmdline.
- Raises
MethodNotDefined – Subclass does not implement this method.
-
prepare_node
(node, storage_map, compute_map, impl)[source]¶ Make any special modifications that the Op needs before doing make_thunk().
This can modify the node inplace and should return nothing.
It can be called multiple time with different impl. It is the op responsibility to don’t re-prepare the node when it isn’t good to do so.
-
-
class
theano.gpuarray.linalg.
GpuMagmaCholesky
(lower=True, inplace=False)[source]¶ Computes the cholesky decomposition of a matrix using magma library.
-
class
theano.gpuarray.linalg.
GpuMagmaEigh
(UPLO='L', compute_v=True)[source]¶ Computes the eigen decomposition of a symmetric matrix using magma library.
- Parameters
UPLO (Specifies whether the calculation is done with the lower triangular) – part of matrix (L, default) or the upper triangular part (U).
compute_v (If True, computes eigenvalues and eigenvectors (True,) – default). If False, computes only eigenvalues of matrix.
-
class
theano.gpuarray.linalg.
GpuMagmaMatrixInverse
(inplace=False)[source]¶ Computes the inverse of a matrix using magma library.
-
class
theano.gpuarray.linalg.
GpuMagmaQR
(complete=True)[source]¶ Computes the qr decomposition of a matrix using magma library.
- Parameters
complete (If False, returns only
R
.) –
Warning
Because of implementation constraints, this Op returns outputs in order
R, Q
. Usetheano.gpuarray.linalg.gpu_qr()
to get them in expected orderQ, R
.
-
class
theano.gpuarray.linalg.
GpuMagmaSVD
(full_matrices=True, compute_uv=True)[source]¶ Computes the svd of a matrix using magma library.
Warning
Because of implementation constraints, this Op returns outputs in order
S, U, VT
. Usetheano.gpuarray.linalg.gpu_svd()
to get them in expected orderU, S, VT
.-
prepare_node
(node, storage_map, compute_map, impl)[source]¶ Make any special modifications that the Op needs before doing make_thunk().
This can modify the node inplace and should return nothing.
It can be called multiple time with different impl. It is the op responsibility to don’t re-prepare the node when it isn’t good to do so.
-
-
theano.gpuarray.linalg.
gpu_matrix_inverse
(a)[source]¶ This function performs the matrix inverse on GPU.
- Returns
a_inv
- Return type
matrix
-
theano.gpuarray.linalg.
gpu_qr
(a, complete=True)[source]¶ This function performs the QR on GPU.
- Parameters
complete (bool, optional) – If False, returns only r.
- Returns
Q, R
- Return type
matrices
-
theano.gpuarray.linalg.
gpu_svd
(a, full_matrices=1, compute_uv=1)[source]¶ This function performs the SVD on GPU.
- Parameters
full_matrices (bool, optional) – If True (default), u and v have the shapes (M, M) and (N, N), respectively. Otherwise, the shapes are (M, K) and (K, N), respectively, where K = min(M, N).
compute_uv (bool, optional) – Whether or not to compute u and v in addition to s. True by default.
- Returns
U, V, D
- Return type
matrices