错误处理
KML_LAPACK会对输入参数进行检查,当出现参数为空指针或数值不合法等错误时会调用LAPACK错误处理函数xerbla_执行错误处理,默认情况下将使用Netlib LAPACK自带的xerbla_实现。
此实现的行为是打印以下错误信息并以错误码0退出进程:
** On entry to FUNC parameter number N had an illegal value
其中FUNC为出错的LAPACK函数名称,N为参数序号。
用户可以提供自定义的xerbla_()函数实现,避免在出错时直接退出整个程序,示例实现如下:
void xerbla_(const char *func, const int *param, int funcLen) { printf("XERBLA: function %.*s, info %i.\n", funcLen, func, *param); }
使用上述示例函数时会在参数错误时打印一行错误信息,但不会退出进程。此时会返回函数的调用者,并将info参数设为相应的错误参数值。
请注意:
- 当参数中出现多个错误参数时,info可能设为任一错误参数的序号(取反)。
- 当输入的矩阵维度过大无法正常计算时,info会设为相关维度参数的序号(取反)。
- 用户程序在链接时需要首先链接包含自定义xerbla_实现的文件,再链接liblapack_adapt.a,否则会出现重复定义符号错误或仍然使用了Netlib LAPACK的xerbla_实现。
- 若用户提供自定义的xerbla_实现,所有错误处理(包括KML_LAPACK未优化的函数)都会使用此实现。
父主题: KML_LAPACK库函数说明