已关闭
[Requirement|需求建议]: 新增面向 Ascend950 的 aclsparseSgtsv2 / aclsparseSgtsv2_bufferSizeExt 接口(带部分选主元的三对角线性系统求解) #112
Riki创建于 7月22日关闭于 7月27日
7月22日 修改了issue 的描述
7月22日 关联了pull request:feat: 新增面向 Ascend950 的 aclsparseSgtsv2 和 aclsparseSgtsv2_bufferSizeExt 接口
7月22日 修改标题为 “[Requirement|需求建议]: 新增面向 Ascend950 的 aclsparseSgtsv2 / aclsparseSgtsv2_bufferSizeExt 接口(带部分选主元的三对角线性系统求解)”,原标题为“[Requirement|需求建议]: 新增 aclsparseSgtsv2 / aclsparseSgtsv2_bufferSizeExt 算子(带部分选主元的三对角线性系统求解)”
7月22日 修改标题为 “[Requirement|需求建议]: 新增面向 Ascend950 的 aclsparseSgtsv2 / aclsparseSgtsv2_bufferSizeExt 接口(带部分选主元的三对角线性系统求解)”,原标题为“[Requirement|需求建议]: 新增 aclsparseSgtsv2 / aclsparseSgtsv2_bufferSizeExt 算子(带部分选主元的三对角线性系统求解)”
7月22日 将 Twoliges 设为负责人
7月27日 issue状态由 进行中 改变为 已完成
7月27日 关闭了 issue
7月27日 添加了label:resolved
Thanks for sending an requirement! Please fill in the following template to help quickly solve your problem.
Backgroud(背景信息)
ops-sparse 仓已实现
aclsparseSgtsv2Nopivot(无选主元 Thomas 算法)和aclsparseSgtsv2StridedBatch(批量 CR 算法)两个三对角求解算子。但无主元版本在非对角占优矩阵上数值不稳定,存在精度风险。需要提供
aclparseSgtsv2/aclsparseSgtsv2_bufferSizeExt接口,采用带部分选主元(partial pivoting)的 Thomas 算法,通过行交换选取主元,显著提升数值稳定性。本需求为 ops-sparse 仓补充带主元的三对角求解能力。算子功能:求解三对角线性系统 A * X = B,其中 A 为 m×m 三对角矩阵(由下对角 dl、主对角 d、上对角 du 定义),B 为 m×n 右端项矩阵。解 X 原地覆盖 B。
Origin(信息来源)
CANN生态开发者
Benefit / Necessity (价值/作用)
Design(设计方案)
接口原型
aclsparseStatus_t aclsparseSgtsv2_bufferSizeExt( aclsparseHandle_t handle, int m, int n, const float *dl, const float *d, const float *du, const float *B, int ldb, size_t *bufferSizeInBytes); aclsparseStatus_t aclsparseSgtsv2( aclsparseHandle_t handle, int m, int n, const float *dl, const float *d, const float *du, float *B, int ldb, void *pBuffer);算法
带部分选主元(partial pivoting)的 Thomas 算法:
架构
__simt_vf__+asc_vf_call+ grid-stride loop + 直接 GM 访问)align128(3 * m * n * sizeof(float))(存储 d'/du'/du2' 三组消元结果)约束