cuDSS 函数#

库管理函数#

cudssCreate#

cudssStatus_t
cudssCreate(cudssHandle_t* handle)
此函数初始化 cuDSS 库句柄 (cudssHandle_t),它保存 cuDSS 库上下文。它在主机上分配轻量级硬件资源,并且必须在进行任何其他 cuDSS 库调用之前调用。调用任何使用 cudssHandle_t 的 cuDSS 函数,而之前没有调用 cudssCreate(),将返回错误。cuDSS 库上下文与当前 CUDA 设备绑定。要在多个设备上使用该库,应为每个设备创建一个 cuDSS 句柄。

参数

内存

输入/输出

描述

handle

主机

输出

cuDSS 库句柄

有关返回状态的描述,请参阅 cudssStatus_t


cudssDestroy#

cudssStatus_t
cudssDestroy(cudssHandle_t handle)
此函数释放 cuDSS 库使用的硬件资源。此函数是使用特定句柄对 cuDSS 库的最后一次调用。在 cudssDestroy() 之后调用任何使用 cudssHandle_t 的 cuDSS 函数将返回错误。

参数

内存

输入/输出

描述

handle

主机

输入

cuDSS 库句柄

有关返回状态的描述,请参阅 cudssStatus_t


cudssGetProperty#

cudssStatus_t
cudssGetProperty(libraryPropertyType propertyType,
                 int*                value)
此函数返回请求属性的值。有关支持的类型,请参阅 libraryPropertyType

参数

内存

输入/输出

描述

propertyType

主机

输入

请求的属性

value

主机

输出

请求属性的值

libraryPropertyType (在 library_types.h 中定义)

含义

MAJOR_VERSION

用于查询主版本的枚举器

MINOR_VERSION

用于查询次版本的枚举器

PATCH_LEVEL

用于标识补丁级别的数字

有关返回状态的描述,请参阅 cudssStatus_t


cudssSetStream#

cudssStatus_t
cudssSetStream(cudssHandle_t handle,
               cudaStream_t  stream)
此函数设置 cuDSS 库用于执行其例程的流。

参数

内存

输入/输出

描述

handle

主机

输入

cuDSS 库句柄

stream

主机

输入

库使用的流

有关返回状态的描述,请参阅 cudssStatus_t


cudssSetDeviceMemHandler#

cudssStatus_t
cudssSetDeviceMemHandler(cudssHandle_t handle,
                         const cudssDeviceMemHandler_t *handler)
在库句柄内设置当前设备内存处理程序。
如果 handler 参数设置为 NULL,则库句柄将从库句柄中分离其现有的内存处理程序。如果在首次设置设备内存处理程序后需要更改它,则需要先分离先前设置的设备内存处理程序。
如果调用了需要分配设备内存的 cuDSS API (cudssExecute()) 并且在调用时没有设备内存处理程序附加到库句柄,则 cuDSS 将使用默认内存处理程序在内部分配设备内存。
设置设备内存处理程序后,在调用主 cuDSS 例程 cudssExecute() 期间,库将使用设备内存处理程序结构的 device_alloc() 成员分配必要的设备内存。分配的内存将保留为在调用中使用的 cudssData_t 对象的一部分,直到使用该结构的 device_free() 成员在调用相应的 cudssDataDestroy() 时才会被释放。因此,如果在 cudssData_t 对象的生命周期内更改设备内存处理程序(这些对象已使用库句柄),则很可能发生错误行为。有关 device_alloc()device_free() 的更多详细信息,请参阅 cudssDeviceMemHandler_t
内部流顺序是使用用户提供的流(通过 cudssSetStream() 设置)建立的。
注意:如果库句柄绑定到一个内存处理程序,然后又绑定到另一个处理程序(未分离),或者库句柄的寿命超过了附加的内存池,或者内存池不是流有序的,则行为未定义。

参数

内存

输入/输出

描述

handle

主机

输入

cuDSS 库句柄

handler

主机

输入

封装用户内存池的设备内存处理程序。结构内容在内部复制

有关返回状态的描述,请参阅 cudssStatus_t


cudssGetDeviceMemHandler#

cudssStatus_t
cudssGetDeviceMemHandler(cudssHandle_t handle,
                         cudssDeviceMemHandler_t *handler)
获取当前设备内存处理程序。

参数

内存

输入/输出

描述

handle

主机

输入

cuDSS 库句柄

handler

主机

输出

设备内存处理程序的(深)副本,它封装了用户的内存池(如果先前通过调用 cudssSetDeviceMemHandler() 设置)。

有关返回状态的描述,请参阅 cudssStatus_t


cudssSetCommLayer#

cudssStatus_t
cudssSetCommLayer(cudssHandle_t handle, const char* commLibFileName)
此函数设置要在 MGMN 模式 中使用的通信层
的 cuDSS。设置的通信层将用于所有 MGMN 模式操作,其中
修改后的库句柄参与其中。
有关何时以及如何使用此函数的更多详细信息,请参阅

参数

内存

输入/输出

描述

handle

主机

输入

cuDSS 库句柄

commLibFileName

主机

输入

cuDSS 通信层库的完整文件名(包括路径)

如果为 NULL,则从环境变量 CUDSS_COMM_LIB 读取通信层库名称

有关返回状态的描述,请参阅 cudssStatus_t


cudssSetThreadingLayer#

cudssStatus_t
cudssSetThreadingLayer(cudssHandle_t handle, const char* thrLibFileName)
此函数设置要在 cuDSS 的 MT 模式 中使用的线程层。设置的线程层将用于所有 MT 模式操作,其中修改后的库句柄参与其中。有关何时以及如何使用此函数的更多详细信息,请参阅 MT 模式

参数

内存

输入/输出

描述

handle

主机

输入

cuDSS 库句柄

thrLibFileName

主机

输入

cuDSS 线程层库的完整文件名(包括路径)

如果为 NULL,则从环境变量 CUDSS_THREADING_LIB 读取线程层库名称

有关返回状态的描述,请参阅 cudssStatus_t

配置和数据对象函数#

cudssConfigCreate#

cudssStatus_t
cudssConfigCreate(cudssConfig_t* config)
此函数初始化 cuDSS 配置对象 (cudssConfig_t),它保存与求解特定线性系统相关的求解器设置
。它在主机上分配轻量级资源。
要释放分配的内存,必须调用 cudssConfigDestroy()

参数

内存

输入/输出

描述

config

主机

输出

cuDSS 配置对象

有关返回状态的描述,请参阅 cudssStatus_t


cudssConfigDestroy#

cudssStatus_t
cudssConfigDestroy(cudssConfig_t config)
此函数释放 cuDSS 配置对象使用的主机资源。在此函数调用后使用配置对象可能会导致未定义的行为。

参数

内存

输入/输出

描述

config

主机

输入

要销毁的 cuDSS 配置对象

有关返回状态的描述,请参阅 cudssStatus_t


cudssConfigSet#

cudssStatus_t
cudssConfigSet(cudssConfig_t      config,
               cudssConfigParam_t param,
               void*              value,
               size_t             sizeInBytes)
此函数将参数 (cudssConfigParam_t) 设置为通过指针传递的指定值。

参数

内存

输入/输出

描述

config

主机

输入/输出

cuDSS 配置对象

param

主机

输入

要设置的参数

value

主机

输入

指向要设置的值的指针

sizeInBytes

主机

输入

要从指针读取的字节数

有关返回状态的描述,请参阅 cudssStatus_t


cudssConfigGet#

cudssStatus_t
cudssConfigGet(cudssConfig_t      config,
               cudssConfigParam_t param,
               void*              value,
               size_t             sizeInBytes,
               size_t*            sizeWritten)
此函数检索参数 (cudssConfigParam_t) 的值,并将其保存到指定的内存位置。

参数

内存

输入/输出

描述

config

主机

输入

cuDSS 配置对象

param

主机

输入

要从配置中检索的参数

value

主机

输出

指向输出内存的指针

sizeInBytes

主机

输入

要写入的字节数(用于验证)

sizeWritten

主机

输出

仅当返回值是 CUDSS_STATUS_SUCCESS 时有效。

如果 sizeInBytes 非零,则 sizeWritten 是实际写入的字节数;如果 sizeInBytes 为零:sizeWritten 是写入完整内容所需的字节数

有关返回状态的描述,请参阅 cudssStatus_t


cudssDataCreate#

cudssStatus_t
cudssDataCreate(cudssHandle_t handle, cudssData_t* data)
此函数初始化 cuDSS 数据对象 (cudssData_t),它保存内部数据(例如,LU 因子数组)以及指向与求解特定线性系统相关的用户提供数据的指针。要释放分配的内存,必须调用 cudssDataDestroy()

参数

内存

输入/输出

描述

handle

主机

输入

cuDSS 库句柄

data

主机

输出

cuDSS 数据对象

有关返回状态的描述,请参阅 cudssStatus_t


cudssDataDestroy#

cudssStatus_t
cudssDataDestroy(cudssHandle_t handle, cudssData_t data)
此函数释放 cuDSS 数据对象使用的硬件资源。在此函数调用后使用数据对象可能会导致未定义的行为。

参数

内存

输入/输出

描述

handle

主机

输入

cuDSS 库句柄

data

主机

输入

要销毁的 cuDSS 数据对象

有关返回状态的描述,请参阅 cudssStatus_t


cudssDataSet#

cudssStatus_t
cudssDataSet(cudssHandle_t    handle
             cudssData_t      data,
             cudssDataParam_t param,
             void*            value,
             size_t           sizeInBytes)
此函数将参数 (cudssDataParam_t) 设置为通过指针传递的指定值。

参数

内存

输入/输出

描述

handle

主机

输入

cuDSS 库句柄

data

主机

输入/输出

cuDSS 数据对象

param

主机

输入

要设置的参数

value

主机

输入

指向要设置的值的指针

sizeInBytes

主机

输入

要从指针读取的字节数


cudssDataGet#

cudssStatus_t
cudssDataGet(cudssHandle_t    handle,
             cudssData_t      data,
             cudssDataParam_t param,
             void*            value,
             size_t           sizeInBytes,
             size_t*          sizeWritten)
此函数检索参数 (cudssDataParam_t) 的值,并将其保存到指定的内存位置。
输出内存缓冲区可以在设备上或主机上,如有必要,将进行内存复制。

参数

内存

输入/输出

描述

handle

主机

输入

cuDSS 库句柄

data

主机

输入

cuDSS 数据对象

param

主机

输入

要从配置中检索的参数

value

主机

设备

输出

指向输出内存的指针

sizeInBytes

主机

输入

要写入的字节数(用于验证)

sizeWritten

主机

输出

仅当返回值是 CUDSS_STATUS_SUCCESS 时有效。

如果 sizeInBytes 非零,则 sizeWritten 是实际写入的字节数;如果 sizeInBytes 为零:sizeWritten 是写入完整内容所需的字节数

有关返回状态的描述,请参阅 cudssStatus_t


主 cuDSS 函数#

cudssExecute#

cudssStatus_t
cudssExecute(cudssHandle_t  handle,
             cudssPhase_t   phase,
             cudssConfig_t  config,
             cudssConfig_t  data,
             cudssMatrix_t  matrix,
             cudssMatrix_t  solution,
             cudssMatrix_t  rhs)
此函数执行求解过程的一个阶段。在调用 cudssExecute() 之前,作为参数传递的所有对象必须已创建并正确初始化。
最简单的求解过程包括三个主要阶段:分析、重构和求解,它们依次进行。在分析阶段,进行重排序和符号分解(准备内部数据结构)。在分解阶段,执行数值分解;在求解阶段,使用分解来找到线性系统的解。

在执行期间,求解器配置属性从类型为 cudssConfig_tconfig 中读取。保持求解系统所需的所有数据(包括因子)的内部数据结构作为类型为 cudssData_tdata 对象的一部分。用户可以在求解过程的各个阶段之前/之后通过 cudssConfigSet()cudssDataGet() 分别更改配置设置或提供其他数据参数(例如,用户置换)或查询额外信息(如内存估计或主元数)。

除非启用 混合主机/设备执行模式,否则输入矩阵、解矩阵和右手侧矩阵的矩阵对象中的数据缓冲区必须保存设备可见数据。
注意:除了相应的矩阵创建例程(例如,cudssMatrixCreateCsr())的限制之外,此函数对可用作调用参数的 cudssMatrix_t 对象有以下限制
  • 输入的稀疏矩阵(在批处理情况下,批处理中的每个矩阵)必须具有与其描述一致的数据(包括偏移量和索引、索引基、矩阵类型)

  • 输入的稀疏矩阵(在批处理情况下,批处理中的每个矩阵)可能具有未排序的列索引,但不得具有重复条目。

  • 输入的稀疏矩阵、右手侧和解必须具有相同的值和索引数据类型(如果适用)。

  • 对于批处理输入,支持具有不同形状的非均匀批处理。例如,nrowsncolsnnz 对于每个批处理实例可以不同。

  • 在 MGMN 模式下,所有进程都必须具有稀疏矩阵的有效 nrowsncolsnnz 数据以及密集矩阵的有效 nrowsncolsld。在批处理情况下,所有进程还必须具有有效的 batchCount

  • 在 MGMN 模式下,完整矩阵数据(对于系统矩阵、解和右手侧)必须存在于根进程上,即提供的通信器中 rank = 0 的进程。其他进程可以将数据指针设置为 NULL。

注意:使用创建稀疏输入矩阵(或一批矩阵)时的 cudssMatrixViewType_t 参数,可以仅传递矩阵的三角形部分,而无需显式更改底层矩阵数据。例如,如果 mview 设置为 CUDSS_MVIEW_UPPER,则在分析阶段,cudssExecute() 将忽略矩阵下半部分中的所有索引,即使底层矩阵存储表示完整矩阵。

参数

内存

输入/输出

描述

可能的值

handle

主机

输入

cuDSS 库句柄

phase

主机

输入

执行阶段

当前支持 CUDSS_PHASE_ANALYSISCUDSS_PHASE_FACTORIZATION CUDSS_PHASE_REFACTORIZATIONCUDSS_PHASE_SOLVE

目前不支持在单个调用中组合阶段。

config

主机

输入

求解器配置对象

data

主机

输入/输出

求解器数据对象

matrix

主机

输入

输入稀疏矩阵

必须是稀疏矩阵

solution

主机

输入/输出

解矩阵

必须是密集矩阵

rhs

主机

输入

右手侧矩阵

必须是密集矩阵

有关返回状态的描述,请参阅 cudssStatus_t


矩阵对象函数#

cudssMatrixCreateDn#

cudssStatus_t
cudssMatrixCreateDn(cudssMatrix_t* matrix,
                    int64_t        nrows,
                    int64_t        ncols,
                    int64_t        ld,
                    void*          values,
                    cudaDataType_t valueType,
                    cudssLayout_t  layout)
此函数创建一个矩阵对象,该对象封装了密集矩阵数据。为矩阵值提供的数据缓冲区必须保存设备可见数据。
注意:在 MGMN 模式下,所有进程都必须具有有效的 nrowsncolsld
有关在主例程 cudssExecute() 的文档中使用 cudssMatrix_t 对象的更多限制,请参阅。

参数

内存

输入/输出

描述

可能的值

matrix

主机

输出

创建的矩阵对象

nrows

主机

输入

行数

必须是非负数

ncols

主机

输入

列数

必须是非负数

ld

主机

输入

前导维度

如果是列优先,则为 nrows, 如果是行优先,则为 ncols。

values

设备或 Host

输入

密集矩阵的值

valueType

主机

输入

矩阵的数据类型

CUDA_R_32FCUDA_R_64FCUDA_C_32FCUDA_C_64F

layout

主机

输入

内存布局

CUDSS_LAYOUT_COL_MAJORCUDSS_LAYOUT_ROW_MAJOR

目前唯一支持的值是 CUDSS_LAYOUT_COL_MAJOR

有关返回状态的描述,请参阅 cudssStatus_t


cudssMatrixCreateBatchDn#

cudssStatus_t
cudssMatrixCreateBatchDn(cudssMatrix_t* matrix,
                         int64_t        batchCount,
                         void*          nrows,
                         void*          ncols,
                         void*          ld,
                         void**         values,
                         cudaDataType_t indexType,
                         cudaDataType_t valueType,
                         cudssLayout_t  layout)
此函数创建一个矩阵对象,该对象封装了一批密集矩阵。为矩阵值提供的数据缓冲区必须包含指向设备可见数据的设备可见指针。
注意:cuDSS 支持具有不同形状的非均匀批处理,例如,nrowsncolsld 对于每个批处理实例可以不同。
注意:在 MGMN 模式下,所有进程都必须具有有效的 batchCountnrowsncols 数据
有关在主例程 cudssExecute() 的文档中使用 cudssMatrix_t 对象的更多限制,请参阅。

参数

内存

输入/输出

描述

可能的值

matrix

主机

输出

创建的矩阵对象

batchCount

主机

输入

批处理的大小

必须是非负数

nrows

主机

输入

nrows

必须是非负数

ncols

主机

输入

批处理中每个矩阵的行数

必须是非负数

ld

主机

输入

ncols

如果是列优先,则为 nrows, 如果是行优先,则为 ncols。

批处理中每个矩阵的列数

values

设备

输入

ld

批处理中每个矩阵的前导维度

主机

输入

values

目前唯一支持的值正好是 nrows (ncols)

valueType

主机

输入

矩阵的数据类型

CUDA_R_32FCUDA_R_64FCUDA_C_32FCUDA_C_64F

layout

主机

输入

内存布局

CUDSS_LAYOUT_COL_MAJORCUDSS_LAYOUT_ROW_MAJOR

目前唯一支持的值是 CUDSS_LAYOUT_COL_MAJOR

有关返回状态的描述,请参阅 cudssStatus_t


indexType

cudssStatus_t
cudssMatrixCreateCsr(cudssMatrix_t*        matrix,
                     int64_t               nrows,
                     int64_t               ncols,
                     int64_t               nnz,
                     void*                 rowStart,
                     void*                 rowEnd,
                     void*                 colIndices,
                     void*                 values,
                     cudaDataType_t        indexType,
                     cudaDataType_t        valueType,
                     cudssMatrixType_t     mtype,
                     cudssMatrixViewType_t mview,
                     cudssIndexBase_t      indexBase)
指向批处理中每个密集矩阵的值的指针
CUDA_R_32I
cudssMatrixCreateCsr#
有关在主例程 cudssExecute() 的文档中使用 cudssMatrix_t 对象的更多限制,请参阅。

参数

内存

输入/输出

描述

可能的值

matrix

主机

输出

创建的矩阵对象

nrows

主机

输入

行数

必须是非负数

ncols

主机

输入

列数

必须是非负数

此函数创建一个矩阵对象,该对象封装了稀疏矩阵数据。为 rowStartrowEndcolIndicesvalues 提供的数据缓冲区必须保存设备可见数据。

主机

输入

注意:使用 CSR 格式创建 cudssMatrix_t 不执行任何数据一致性检查,因此目前调用者有责任使数据描述参数与数据匹配。

必须是非负数

注意:在 MGMN 模式下,所有进程都必须具有有效的 nrowsncolsnnz 数据

设备或 Host

输入

nnz

非零元素的数量

设备或 Host

输入

密集矩阵的值

rowStart

行起始偏移量

设备或 Host

输入

rowEnd

values

设备或 Host

输入

密集矩阵的值

批处理中每个矩阵的前导维度

主机

输入

当前唯一支持的值为 NULL,因为目前不支持 4 数组 CSR

目前唯一支持的值正好是 nrows (ncols)

valueType

主机

输入

矩阵的数据类型

CUDA_R_32FCUDA_R_64FCUDA_C_32FCUDA_C_64F

colIndices

主机

输入

矩阵的列索引

indexType

矩阵的索引类型

主机

输入

mtype

矩阵的矩阵类型

mview

主机

输入

矩阵的矩阵视图

indexBase

有关返回状态的描述,请参阅 cudssStatus_t


索引基

cudssStatus_t
cudssMatrixCreateBatchCsr(cudssMatrix_t*        matrix,
                          int64_t               batchCount,
                          void*                 nrows,
                          void*                 ncols,
                          void*                 nnz,
                          void**                rowStart,
                          void**                rowEnd,
                          void**                colIndices,
                          void**                values,
                          cudaDataType_t        indexType,
                          cudaDataType_t        valueType,
                          cudssMatrixType_t     mtype,
                          cudssMatrixViewType_t mview,
                          cudssIndexBase_t      indexBase)
cudssMatrixCreateBatchCsr#
此函数创建一个矩阵对象,该对象封装了一批稀疏矩阵(CSR 格式)。为 rowStartrowEndcolIndicesvalues 提供的数据缓冲区必须包含指向设备可见数据的设备可见指针。
注意:cuDSS 支持具有不同形状的非均匀批处理,例如,nrowsncolsnnz 对于每个批处理实例可以不同。
有关在主例程 cudssExecute() 的文档中使用 cudssMatrix_t 对象的更多限制,请参阅。

参数

内存

输入/输出

描述

可能的值

matrix

主机

输出

创建的矩阵对象

batchCount

主机

输入

批处理的大小

必须是非负数

nrows

主机

输入

nrows

必须是非负数

ncols

主机

输入

批处理中每个矩阵的行数

必须是非负数

此函数创建一个矩阵对象,该对象封装了稀疏矩阵数据。为 rowStartrowEndcolIndicesvalues 提供的数据缓冲区必须保存设备可见数据。

主机

输入

注意:使用 CSR 格式创建 cudssMatrix_t 批处理矩阵不执行任何数据一致性检查,因此目前调用者有责任使数据描述参数与数据匹配。

必须是非负数

注意:在 MGMN 模式下,所有进程都必须具有有效的 nrowsncolsnnz 数据

设备

输入

batchCount

非零元素的数量

设备

输入

批处理中每个矩阵的非零元素数量

rowStart

行起始偏移量

设备

输入

nrows

values

设备

输入

指向批处理中每个矩阵的行起始偏移量的指针

批处理中每个矩阵的前导维度

主机

输入

当前唯一支持的值为 NULL,因为目前不支持 4 数组 CSR

目前唯一支持的值正好是 nrows (ncols)

valueType

主机

输入

矩阵的数据类型

CUDA_R_32FCUDA_R_64FCUDA_C_32FCUDA_C_64F

colIndices

主机

输入

矩阵的列索引

indexType

矩阵的索引类型

主机

输入

mtype

矩阵的矩阵类型

mview

主机

输入

矩阵的矩阵视图

indexBase

有关返回状态的描述,请参阅 cudssStatus_t


ncols

cudssStatus_t
cudssMatrixDestroy(cudssMatrix_t matrix)
指向批处理中每个矩阵的行结束偏移量的指针

参数

内存

输入/输出

描述

matrix

主机

输入

ld

有关返回状态的描述,请参阅 cudssStatus_t


指向批处理中每个矩阵的列索引的指针

cudssStatus_t
cudssMatrixSetValues(cudssMatrix_t matrix, void *values)
values

参数

内存

输入/输出

描述

matrix

主机

输入

ld

values

指向批处理中每个 CSR 矩阵的值的指针

输入

indexType

有关返回状态的描述,请参阅 cudssStatus_t


cudssMatrixDestroy#

cudssStatus_t
cudssMatrixSetBatchValues(cudssMatrix_t matrix, void **values)
此函数释放与矩阵包装器关联的内存。由于 cuDSS 矩阵对象只是用户数据的轻量级包装器,因此用户数据保持不变。

参数

内存

输入/输出

描述

matrix

主机

输入

ld

values

设备

matrix

输入

cuDSS 矩阵对象

有关返回状态的描述,请参阅 cudssStatus_t


cudssMatrixSetValues#

cudssStatus_t
cudssMatrixSetCsrPointers(cudssMatrix_t matrix,
                          void*         rowStart,
                          void*         rowEnd,
                          void*         colIndices,
                          void*         values)
此函数将 cuDSS 矩阵对象内的值指针重置为提供的缓冲区。提供的数据缓冲区必须保存设备可见数据。

参数

内存

输入/输出

描述

matrix

主机

输入

ld

注意:在 MGMN 模式下,所有进程都必须具有有效的 nrowsncolsnnz 数据

指向批处理中每个 CSR 矩阵的值的指针

输入

values

非零元素的数量

指向批处理中每个 CSR 矩阵的值的指针

输入

设备或主机

行起始偏移量

指向批处理中每个 CSR 矩阵的值的指针

输入

newValues

values

指向批处理中每个 CSR 矩阵的值的指针

输入

indexType

有关返回状态的描述,请参阅 cudssStatus_t


包含新矩阵值的缓冲区

cudssStatus_t
cudssMatrixSetBatchCsrPointers(cudssMatrix_t matrix,
                               void**        rowStart,
                               void**        rowEnd,
                               void**        colIndices,
                               void**        values)
cudssMatrixSetBatchValues#

参数

内存

输入/输出

描述

matrix

主机

输入

ld

注意:在 MGMN 模式下,所有进程都必须具有有效的 nrowsncolsnnz 数据

指向批处理中每个 CSR 矩阵的值的指针

输入

此函数将 cuDSS 矩阵对象内的值指针重置为提供的缓冲区。为矩阵值提供的数据缓冲区必须包含指向设备可见数据的设备可见指针。

非零元素的数量

指向批处理中每个 CSR 矩阵的值的指针

输入

values

行起始偏移量

指向批处理中每个 CSR 矩阵的值的指针

输入

设备或主机

values

指向批处理中每个 CSR 矩阵的值的指针

输入

newValues

有关返回状态的描述,请参阅 cudssStatus_t


指向批处理中每个密集矩阵的新值的指针

cudssStatus_t
cudssMatrixGetDn(cudssMatrix_t   matrix,
                 int64_t*        nrows,
                 int64_t*        ncols,
                 int64_t*        ld,
                 void**          values,
                 cudaDataType_t* valueType,
                 cudssLayout_t*  layout)
cudssMatrixSetCsrPointers#

参数

内存

输入/输出

描述

可能的值

matrix

主机

输入

ld

nrows

主机

输出

此函数将 cuDSS 矩阵对象内的 CSR 指针重置为提供的缓冲区。提供的数据缓冲区必须保存设备可见数据。

rowStart

ncols

主机

输出

包含新行起始偏移量的缓冲区

rowStart

ld

主机

输出

rowEnd

rowStart

values

指向批处理中每个 CSR 矩阵的值的指针

输出

包含新行结束偏移量的缓冲区

rowStart

valueType

主机

输出

colIndices

CUDA_R_32FCUDA_R_64FCUDA_C_32FCUDA_C_64F

rowStart

layout

主机

输出

包含新列索引的缓冲区

rowStart

有关返回状态的描述,请参阅 cudssStatus_t


cudssMatrixSetBatchCsrPointers#

cudssStatus_t
cudssMatrixGetBatchDn(cudssMatrix_t   matrix,
                      int64_t*        batchCount,
                      void**          nrows,
                      void**          ncols,
                      void**          ld,
                      void***         values,
                      cudaDataType_t* indexType,
                      cudaDataType_t* valueType,
                      cudssLayout_t*  layout)
此函数将 cuDSS 矩阵对象内的 CSR 指针重置为提供的缓冲区。为 rowStartrowEndcolIndicesvalues 提供的数据缓冲区必须包含指向设备可见数据的设备可见指针。

参数

内存

输入/输出

描述

可能的值

matrix

主机

输入

ld

batchCount

主机

输出

rowStarts

nrows

主机

输出

指向批处理中每个 CSR 矩阵的新行起始偏移量的指针

rowStart

ncols

主机

输出

rowEnds

rowStart

ld

主机

输出

指向批处理中每个 CSR 矩阵的新行结束偏移量的指针

rowStart

values

设备

输出

colIndices

rowStart

批处理中每个矩阵的前导维度

主机

输出

指向批处理中每个 CSR 矩阵的新列索引的指针

目前唯一支持的值正好是 nrows (ncols)

rowStart

valueType

主机

输出

colIndices

CUDA_R_32FCUDA_R_64FCUDA_C_32FCUDA_C_64F

rowStart

layout

主机

输出

包含新列索引的缓冲区

rowStart

有关返回状态的描述,请参阅 cudssStatus_t


values

cudssStatus_t
cudssMatrixGetCsr(cudssMatrix_t         matrix,
                  int64_t*              nrows,
                  int64_t*              ncols,
                  int64_t*              nnz,
                  void**                rowStart,
                  void**                rowEnd,
                  void**                colIndices,
                  void**                values,
                  cudaDataType_t*       indexType,
                  cudaDataType_t*       valueType,
                  cudssMatrixType_t*     mtype,
                  cudssMatrixViewType_t* mview,
                  cudssIndexBase_t*     indexBase)
指向批处理中每个 CSR 矩阵的新值的指针

参数

内存

输入/输出

描述

可能的值

matrix

主机

输入

cudssMatrixGetDn#

nrows

主机

输出

此函数将 cuDSS 矩阵对象内的 CSR 指针重置为提供的缓冲区。提供的数据缓冲区必须保存设备可见数据。

rowStart

ncols

主机

输出

包含新行起始偏移量的缓冲区

rowStart

此函数创建一个矩阵对象,该对象封装了稀疏矩阵数据。为 rowStartrowEndcolIndicesvalues 提供的数据缓冲区必须保存设备可见数据。

主机

输出

此函数从保存密集矩阵的 cuDSS 矩阵对象中检索密集矩阵属性和数据。如果在输入时任何指针为 NULL,则会忽略它,并且不会返回相应的值。

rowStart

注意:在 MGMN 模式下,所有进程都必须具有有效的 nrowsncolsnnz 数据

指向批处理中每个 CSR 矩阵的值的指针

输出

nrows

rowStart

非零元素的数量

指向批处理中每个 CSR 矩阵的值的指针

输出

用于存储行数的缓冲区

ncols

行起始偏移量

指向批处理中每个 CSR 矩阵的值的指针

输出

如果为 NULL,则忽略

rowStart

values

指向批处理中每个 CSR 矩阵的值的指针

输出

ld

rowStart

批处理中每个矩阵的前导维度

主机

输出

指向批处理中每个 CSR 矩阵的新列索引的指针

目前唯一支持的值正好是 nrows (ncols)

rowStart

valueType

主机

输出

colIndices

CUDA_R_32FCUDA_R_64FCUDA_C_32FCUDA_C_64F

rowStart

colIndices

主机

输出

矩阵的列索引

indexType

矩阵的索引类型

主机

输出

mtype

矩阵的矩阵类型

mview

主机

输出

用于存储列数的缓冲区

indexBase

rowStart

有关返回状态的描述,请参阅 cudssStatus_t


values

cudssStatus_t
cudssMatrixGetBatchCsr(cudssMatrix_t*        matrix,
                       int64_t*              batchCount,
                       void**                nrows,
                       void**                ncols,
                       void**                nnz,
                       void***               rowStart,
                       void***               rowEnd,
                       void***               colIndices,
                       void***               values,
                       cudaDataType_t*       indexType,
                       cudaDataType_t*       valueType,
                       cudssMatrixType_t*     mtype,
                       cudssMatrixViewType_t* mview,
                       cudssIndexBase_t*     indexBase)
用于存储前导维度的缓冲区

参数

内存

输入/输出

描述

可能的值

matrix

主机

输入

cudssMatrixGetDn#

batchCount

主机

输出

rowStarts

rowStart

nrows

主机

输出

valueType

rowStart

ncols

主机

输出

用于存储矩阵值的缓冲区

rowStart

此函数创建一个矩阵对象,该对象封装了稀疏矩阵数据。为 rowStartrowEndcolIndicesvalues 提供的数据缓冲区必须保存设备可见数据。

主机

输出

layout

rowStart

注意:在 MGMN 模式下,所有进程都必须具有有效的 nrowsncolsnnz 数据

设备

输出

指向批处理中每个 CSR 矩阵的行起始偏移量的指针

rowStart

非零元素的数量

设备

输出

指向批处理中每个 CSR 矩阵的行结束偏移量的指针

ncols

行起始偏移量

设备

输出

指向批处理中每个 CSR 矩阵的列索引的指针

rowStart

values

设备

输出

指向批处理中每个 CSR 矩阵的值的指针

rowStart

批处理中每个矩阵的前导维度

主机

输出

指向批处理中每个 CSR 矩阵的新列索引的指针

目前唯一支持的值正好是 nrows (ncols)

rowStart

valueType

主机

输出

colIndices

CUDA_R_32FCUDA_R_64FCUDA_C_32FCUDA_C_64F

rowStart

colIndices

主机

输出

矩阵的列索引

indexType

矩阵的索引类型

主机

输出

mtype

矩阵的矩阵类型

mview

主机

输出

用于存储列数的缓冲区

indexBase

rowStart

有关返回状态的描述,请参阅 cudssStatus_t


cudssMatrixGetFormat#

cudssStatus_t
cudssMatrixGetFormat(cudssMatrix_t matrix, int *format)
该函数将 cuDSS 矩阵对象的矩阵格式(作为 int,它可以是 cudssMatrixFormat_t 中定义的位标志的组合)返回到提供的缓冲区中。

参数

内存

输入/输出

描述

matrix

主机

输入

ld

格式

主机

输出

用于返回的矩阵格式的缓冲区

有关返回状态的描述,请参阅 cudssStatus_t