cuSOLVERMp Data Types#

Data types#

cusolverMpHandle_t#

The cusolverMpHandle_t structure holds the cuSOLVERMp library context (device properties, system information, etc.).
The handle must be initialized and destroyed using cusolverMpCreate() and cusolverMpDestroy() functions respectively.

cusolverMpGrid_t#

The cusolverMpGrid_t structure holds information about the grid dimensions and stores the communicator associated to the grid of processes.
It must be initialized and destroyed using cusolverMpCreateDeviceGrid() and cusolverMpDestroyGrid() functions respectively.

cusolverMpMatrixDescriptor_t#

The cusolverMpMatrixDescriptor_t structure captures the shape and characteristics of a distributed matrix.
It must be initialized and destroyed using cusolverMpCreateMatrixDesc() and cusolverMpDestroyMatrixDesc() functions respectively.

cusolverMpNewtonSchulzDescriptor_t#

The cusolverMpNewtonSchulzDescriptor_t structure holds parameters that control the behavior of cusolverMpNewtonSchulz(), such as whether to normalize the input matrix.
It must be initialized and destroyed using cusolverMpNewtonSchulzDescriptorCreate() and cusolverMpNewtonSchulzDescriptorDestroy() functions respectively.

cusolverMpPolarDescriptor_t#

The cusolverMpPolarDescriptor_t structure stores options and scalar diagnostics for cusolverMpPolar().
It must be initialized and destroyed using cusolverMpPolarDescriptorCreate() and cusolverMpPolarDescriptorDestroy() functions respectively.
A NULL descriptor may be passed to cusolverMpPolar() and cusolverMpPolar_bufferSize() for default behavior.
The descriptor must not be shared between concurrent cusolverMpPolar() calls.

cusolverMpGesvdDescriptor_t#

The cusolverMpGesvdDescriptor_t structure stores attributes and scalar diagnostics for cusolverMpGesvd().
It must be initialized and destroyed using cusolverMpGesvdDescriptorCreate() and cusolverMpGesvdDescriptorDestroy() functions respectively.
Input attributes can be set using cusolverMpGesvdDescriptorSetAttribute(). Input and output attributes can be queried using cusolverMpGesvdDescriptorGetAttribute().
A NULL descriptor may be passed to cusolverMpGesvd() and cusolverMpGesvd_bufferSize() to discard diagnostics.
Descriptor input attributes that affect GESVD behavior are control-flow inputs and must be set identically on every rank for cusolverMpGesvd() and cusolverMpGesvd_bufferSize().
The descriptor must not be shared between concurrent cusolverMpGesvd() calls.

Enumerators#

cusolverMpGridMapping_t#

Describes the ordering of the grid of processes.

Value

Description

CUSOLVERMP_GRID_MAPPING_ROW_MAJOR

The grid of processes will be accessed in row-major ordering.

CUSOLVERMP_GRID_MAPPING_COL_MAJOR

The grid of processes will be accessed in column-major ordering.

cusolverMpNewtonSchulzDescriptorAttribute_t#

Enumerates the attributes that can be set on a cusolverMpNewtonSchulzDescriptor_t.

Value

Type

Default

Description

CUSOLVERMP_NEWTON_SCHULZ_DESCRIPTOR_ATTRIBUTE_NORMALIZE

int

1

When set to 1, the input matrix is normalized by its Frobenius norm before iterations begin. Normalization is required for convergence; set to 0 only when the input is already normalized.

CUSOLVERMP_NEWTON_SCHULZ_DESCRIPTOR_ATTRIBUTE_REDUCE_VIA_COMPUTE_TYPE

int

0

When set to 1, the distributed Gram-matrix reduction path may communicate/reduce intermediate X^T X data using the compute type when the value type differs from the compute type.

cusolverMpPolarDescriptorAttribute_t#

Enumerates attributes stored on a cusolverMpPolarDescriptor_t.

Value

Type

Default

Description

CUSOLVERMP_POLAR_DESCRIPTOR_ATTRIBUTE_REQUESTED_KSI

double

0.0

Input attribute. Values greater than 0 request a diagonal perturbation in original unscaled units. Values less than or equal to 0 request no perturbation.

CUSOLVERMP_POLAR_DESCRIPTOR_ATTRIBUTE_A_NORM_FROBENIUS

double

NaN

Output attribute. Frobenius norm of the logical, unperturbed input submatrix before overwrite. For uplo = CUBLAS_FILL_MODE_UPPER, the ignored strict lower triangle is treated as zero. NaN if not computed.

CUSOLVERMP_POLAR_DESCRIPTOR_ATTRIBUTE_RCOND_ESTIMATE

double

NaN

Output attribute. Estimate of 1 / (||R||_1 ||R^{-1}||_1) for the initial unperturbed triangular factor R used to initialize the iteration. For a FULL input, R is the upper-triangular factor from QR of the logical input; for uplo = CUBLAS_FILL_MODE_UPPER, R is the input itself. NaN if not computed.

cusolverMpGesvdDescriptorAttribute_t#

Enumerates attributes stored on a cusolverMpGesvdDescriptor_t.

Value

Type

Default

Description

CUSOLVERMP_GESVD_DESCRIPTOR_ATTRIBUTE_COMPUTE_RESIDUAL

int

0

Input attribute. When set to a nonzero value, successful non-empty cusolverMpGesvd() calls that request both U and V^H compute CUSOLVERMP_GESVD_DESCRIPTOR_ATTRIBUTE_RESIDUAL_FROBENIUS_ESTIMATE. Empty calls and calls that do not request both vector factors leave that output attribute as NaN.

CUSOLVERMP_GESVD_DESCRIPTOR_ATTRIBUTE_SHAPE

cusolverMpGesvdOutputShape_t

CUSOLVERMP_GESVD_OUTPUT_SHAPE_THIN

Input attribute. Selects the singular-vector output shape. THIN returns U as m by k and V^H as k by n. FULL returns requested factors as m by m and n by n.

CUSOLVERMP_GESVD_DESCRIPTOR_ATTRIBUTE_A_NORM_FROBENIUS

double

NaN

Output attribute. Frobenius norm of the original input submatrix before it is overwritten, or NaN if not computed.

CUSOLVERMP_GESVD_DESCRIPTOR_ATTRIBUTE_RCOND

double

NaN

Output attribute. Implementation-provided reciprocal-condition estimate for the initial unperturbed input. This diagnostic is not guaranteed to equal the ratio of the smallest to largest singular value. NaN if not computed.

CUSOLVERMP_GESVD_DESCRIPTOR_ATTRIBUTE_RESIDUAL_FROBENIUS_ESTIMATE

double

NaN

Output attribute. Absolute Frobenius norm of the SVD reconstruction residual, ||A_original - U * Sigma * V^H||_F, where A_original is the original input submatrix before overwrite. The value is not normalized. This attribute is NaN unless residual computation is requested and a successful non-empty call produces both vector factors.

CUSOLVERMP_GESVD_DESCRIPTOR_ATTRIBUTE_NUM_SINGULAR_FOUND

int64_t

0

Output attribute. Number of singular values available in d_S. The current implementation returns min(m,n) on success and when d_info = 2 reports that vector construction did not complete after singular values were produced; it returns 0 when d_info = 1 reports that singular-value computation did not complete.

cusolverMpGesvdOutputShape_t#

Enumerates output shapes for cusolverMpGesvd() singular-vector factors.

Value

Description

CUSOLVERMP_GESVD_OUTPUT_SHAPE_THIN

Default. Returns requested vector factors in economy shape: U is m by k and V^H is k by n, where k = min(m,n).

CUSOLVERMP_GESVD_OUTPUT_SHAPE_FULL

Returns requested vector factors in full shape: U is m by m and V^H is n by n.

cusolverMpLoggerCallback_t#

Function pointer type for cuSOLVERMp logging callbacks. The callback function is called by the library to report logging information.
The callback can be set using cusolverMpLoggerSetCallback().

The callback function takes the following parameters:

Parameter

Type

Description

logLevel

int

The severity level of the log message.

functionName

const char*

Name of the function generating the log message.

message

const char*

The actual log message text.