---
title: 可替换性
description: "KML_LAPACK对外提供的接口，与MKL-LAPACK的接口参数和函数名完全一致，可以直接替换库使用。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengaccel/math-lib/devg-kml/kunpengaccel_12_0021.html
sourcePath: /source/zh/kunpengaccel/math-lib/devg-kml/kunpengaccel_12_0021.html
indexId: 18b2e1e7cfec771cf71615a928cbbafb7d9a536b48644b7f5b1e43f634eb17ff67
---
# 可替换性

KML_LAPACK对外提供的接口，与MKL-LAPACK的接口参数和函数名完全一致，可以直接替换库使用。

如表1 LAPACK的替换映射关系所示为可替换的接口与MKL中LAPACK的Fortran接口的映射关系（仅给出已优化的接口）。


**表1 LAPACK的替换映射关系**

| MKL接口 | KML对应接口 | 数据类型 | 描述 |
| --- | --- | --- | --- |
| ?getrf | ?getrf | s、d、c、z | 计算矩阵A的LU分解 |
| ?geqrf | ?geqrf | s、d、c、z | 计算矩阵的QR分解 |
| ?gerqf | ?gerqf | s、d、c、z | 计算矩阵的RQ分解 |
| ?geqlf | ?geqlf | s、d、c、z | 计算矩阵的QL分解 |
| ?gelqf | ?gelqf | s、d、c、z | 计算矩阵的LQ分解 |
| ?ppsv | ?ppsv | s、d、c、z | 计算矩阵A的Cholesky分解，并通过分解结果求解线性方程组 |
| ?ptsv | ?ptsv | s、d、c、z | 求解线性方程组，其中系数矩阵A为实（共轭）对称正定三对角矩阵。 |
| ?getri | ?getri | s、d、c、z | 根据?getrf得到的LU分解结果计算逆矩阵 |
| ?syevd | ?syevd | s、d | 计算对称（Hermite）矩阵的全部特征值和特征向量 |
| ?heevd | ?heevd | c、z | 计算对称（Hermite）矩阵的全部特征值和特征向量 |
| ?sytrd | ?sytrd | s、d | 将对称矩阵或Hermite矩阵通过相似变换成对称三对角T |
| ?hetrd | ?hetrd | c、z | 将对称矩阵或Hermite矩阵通过相似变换成对称三对角T |
| ?potrf | ?potrf | s、d、c、z | 计算对称正定矩阵或者Hermite正定矩阵的Cholesky分解 |
| ?pttrf | ?pttrf | s、d、c、z | 计算实（共轭）对称正定三对角矩阵A的LDL\*或U\*DU分解 |
| ?potri | ?potri | s、d、c、z | 计算对称正定矩阵的逆。 |
| ?gesv | ?gesv | s、d、c、z | 求解线性方程组，其中是的矩阵，和为的矩阵。 |
| ?orglq | ?orglq | s、d | 生成具有正交行的实/复矩阵Q，且该矩阵定义为K个N阶基本反射器的乘积的前M行 |
| ?unglq | ?unglq | c、z | 生成具有正交行的实/复矩阵Q，且该矩阵定义为K个N阶基本反射器的乘积的前M行 |
| ?ormlq | ?ormlq | s、d | 计算或，其中Q是由?gelqf计算得到。 |
| ?unmlq | ?unmlq | c、z | 计算或，其中Q是由?gelqf计算得到。 |
| ?orgql | ?orgql | s、d | 生成具有正交列的实/复矩阵Q，且该矩阵定义为K个M阶基本反射器的乘积的前N列 |
| ?ungql | ?ungql | c、z | 生成具有正交列的实/复矩阵Q，且该矩阵定义为K个M阶基本反射器的乘积的前N列 |
| ?ormql | ?ormql | s、d | 计算或，其中Q是由?geqlf计算得到。 |
| ?unmql | ?unmql | c、z | 计算或，其中Q是由?geqlf计算得到。 |
| ?orgqr | ?orgqr | s、d | 生成具有正交行的实/复矩阵Q，且该矩阵定义为K个N阶基本反射器的乘积的前M行 |
| ?ungqr | ?ungqr | c、z | 生成具有正交行的实/复矩阵Q，且该矩阵定义为K个N阶基本反射器的乘积的前M行 |
| ?orgrq | ?orgrq | s、d | 生成具有正交行的实/复矩阵Q，且该矩阵定义为K个N阶基本反射器的乘积的前M行 |
| ?ungrq | ?ungrq | c、z | 生成具有正交行的实/复矩阵Q，且该矩阵定义为K个N阶基本反射器的乘积的前M行 |
| ?ormrq | ?ormrq | s、d | 计算或，其中Q是由?gerqf计算得到。 |
| ?unmrq | ?unmrq | c、z | 计算或，其中Q是由?gerqf计算得到。 |
| ?ormqr | ?ormqr | s、d | 计算或，其中Q是由?geqrf计算得到。 |
| ?unmqr | ?unmqr | c、z | 计算或，其中Q是由?geqrf计算得到。 |
| ?syev | ?syev | s、d | 计算对称（Hermite）矩阵的所有特征值与特征向量。 |
| ?heev | ?heev | c、z | 计算对称（Hermite）矩阵的所有特征值与特征向量。 |
| ?pttrs | ?pttrs | s、d、c、z | 求解三对角方程AX=B，其中系数矩阵A由?pttrf分解而来。 |
| ?ptts2 | ?ptts2 | s、d、c、z | 求解三对角方程AX=B，其中系数矩阵A由?pttrf分解而来。 |
| ?lasr | ?lasr | s、d、c、z | 对矩阵A做平面旋转操作。 |
| ?gtsv | ?gtsv | s、d、c、z | 求解线性方程组A\*X=B，其中系数矩阵A为一般三对角矩阵。 |
| ?gttrf | ?gttrf | s、d、c、z | 计算一般三对角矩阵A的LU分解。 |
| ?gttrs | ?gttrs | s、d、c、z | 求解三对角方程A\*X=B或A\*\*T \*X=B或A\*\*H \*X=B，其中系数矩阵A由?gttrf分解而来。 |
| ?sytrd\_2stage | ?sytrd\_2stage | s、d、c、z | 将对称矩阵或Hermite矩阵A转为对称或Hermite三对角矩阵T， |
| ?trtrs | ?trtrs | s、d、c、z | 求解三角方程A \* X = B，或A\*\*T \* X = B。 |
| ?laset | ?laset | s、d、c、z | 初始化m\*n的矩阵，且将对角线元素设置为beta，非对角线元素设置为alpha。 |
| ?sptrf | ?sptrf | s、d、c、z | 计算压缩对称矩阵的LDL\*或U\*DU分解。 |
| ?hptrf | ?hptrf | s、d、c、z | 计算压缩Hermite矩阵的LDL\*或U\*DU分解。 |
| ?pptrf | ?pptrf | s、d、c、z | 计算压缩存储的对称正定矩阵的LLT或UTU分解。 |
| ?pptrs | ?pptrs | s、d、c、z | 求解三对角方程A\*X=B或A\*\*T \*X=B或A\*\*H \*X=B。其中系数矩阵A由?gttrf分解而来。 |
| ?pptri | ?pptri | s、d、c、z | 计算压缩存储的对称正定矩阵的逆矩阵。 |
| ?getrs | ?getrs | s、d、c、z | 求解一般线性方程A\*X=B或A\*\*T \* X=B或A\*\*H \* X=B。其中系数矩阵A由?getrf分解而来。 |
| ?posv | ?posv | s、d、c、z | 求解线性方程组。其中A为实对称或共轭对称的正定矩阵；X和B为矩阵。 |
| ?trtri | ?trtri | s、d、c、z | 计算上/下三角矩阵的逆矩阵。 |
| ?laswp | ?laswp | s、d、c、z | 对矩阵做一系列的行交换操作。 |
| ?lascl | ?lascl | s、d、c、z | 对矩阵做scalar操作。 |
| ?lange | ?lange | s、d、c、z | 计算矩阵的范数，包含：1范数，F范数，无穷范数等。 |
| ?sgesv | ?gesv | ds、zc | 求解线性方程组，其中是的矩阵，和为的矩阵。 |
| ?gels | ?gels | s、d、c、z | 使用矩阵的QR或LQ分解来求解超定或欠定线性方程组。 |
| ?gelsd | ?gelsd | s、d、c、z | 使用分治法对线性最小二乘问题求解其最小范数解。 |
| ?gelss | ?gelss | s、d、c、z | 使用SVD方法对线性最小二乘问题求解其最小范数解。 |
| ?steqr | ?steqr | s、d、c、z | 使用QL或QR方法求解对称三对角矩阵的特征值和特征向量。 |
| ?gtts2 | ?gtts2 | s、d、c、z | 求解三对角方程A\*X=B或A\*\*T \*X=B或A\*\*H \*X=B，其中系数矩阵A由?gttrf分解而来。 |
| ?ormbr | ?ormbr | s、d | 计算C=Q\*C或Q\*\*T\*C或C\*Q或C\*Q\*\*T或C=P\*C或P\*\*T\*C或C\*P或C\*P\*\*T， |
| ?unmbr | ?unmbr | c、z | 计算C=Q\*C或Q\*\*T\*C或C\*Q或C\*Q\*\*T或C=P\*C或P\*\*T\*C或C\*P或C\*P\*\*T， |
| ?orgtr | ?orgtr | s、d | 通过反射因子生成正交矩阵Q，其中反射因子由SYTRD计算得来。 |
| ?ungtr | ?ungtr | c、z | 通过反射因子生成正交矩阵Q，其中反射因子由SYTRD计算得来。 |
| ?lacpy | ?lacpy | s、d、c、z | 拷贝矩阵A的所有元素或部分元素到矩阵B。 |
| ?stedc | ?stedc | s、d、c、z | 对称三对角矩阵的特征值求解，使用Divide\-and\-Conquer算法。 |
| ?gesvd | ?gesvd | s、d、c、z | 一般矩阵SVD分解。 |
| ?gebrd | ?gebrd | s、d、c、z | 一般矩阵变换到两对角矩阵。 |
| ?bdsdc | ?bdsdc | s、d | 计算N\*N的上/下双对角矩阵B的奇异值分解，使用分治算法。 |
| ?gesdd | ?gesdd | s、d、c、z | 计算矩形矩阵的奇异值分解，可以用来计算左和右奇异向量，使用分治算法。 |
| ?bdsqr | ?bdsqr | s、d、c、z | 使用对双对角矩阵的QR算法的SVD分解来求解奇异值或左右奇异向量。 |


以上接口均为Fortran接口，在C语言中使用时需在接口名称后增加下划线，且参数类型均为指针类型，请参见《鲲鹏数学库 开发指南(https://www.hikunpeng.com/document/detail/zh/kunpengaccel/math-lib/devg-kml/kunpengaccel_kml_16_0207.html)》中“KML_LAPACK函数定义”章节《Kunpeng HPCKit 24.0.0 开发指南》(https://www.hikunpeng.com/document/detail/zh/kunpenghpcs/hpckit/devg/KunpengHPCKit_developer_003.html)中“鲲鹏数学库开发指南 > 应用数学库 > KML_LAPACK库函数说明 > 函数定义”章节。

若需使用LAPACKE接口（MKL中标准的C接口），需在编译开源Netlib LAPACK时增加对LAPACKE封装库的编译，请参见迁移步骤中说明。
