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 1element 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 reprepare 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 lowertriangular (True) or uppertriangular (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 1element 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 reprepare 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 1element 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 reprepare 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 doublequotes.
 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 reprepare 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 reprepare 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