数据类型#

NVPL LAPACK 类型在 include/nvpl_lapack_types.h 头文件中定义。

复数数据类型#

C / C++#

为了可移植性,NVPL LAPACK 定义了其自身的单精度和双精度复数数据类型:nvpl_scomplex_tnvpl_dcomplex_t。这些类型是结构体,包含两个字段(realimag),分别是对应的浮点数据类型(floatdouble)。

为了更好地与用户的代码互操作,允许在包含 nvpl_lapack_types.h 之前重新定义这些类型,只要它们与上述定义 ABI 兼容并且定义了 NVPL_LAPACK_COMPLEX_CUSTOM

例如

  • 对于使用 C99 及更高标准的 C 语言,可以这样做

    #include <complex.h>
    #define NVPL_LAPACK_COMPLEX_CUSTOM
    #define nvpl_scomplex_t float complex
    #define nvpl_dcomplex_t double complex
    #include "nvpl_lapack_types.h"
    
  • 对于 C++

    #include <complex>
    #define NVPL_LAPACK_COMPLEX_CUSTOM
    #define nvpl_scomplex_t std::complex<float>
    #define nvpl_dcomplex_t std::complex<double>
    #include "nvpl_lapack_types.h"
    

整数数据类型#

另请参阅

LP64 和 ILP64 接口

C / C++#

NVPL LAPACK 定义了以下 3 种整数数据类型

  • nvpl_int32_t:32 位整数,是 int32_t 的别名。

  • nvpl_int64_t:64 位整数,是 int64_t 的别名。

  • nvpl_int_t:如果定义了宏 NVPL_ILP64,则是 nvpl_int64_t 的别名,否则是 nvpl_int32_t 的别名。

nvpl_lapack.h 中的 NVPL LAPACK C 声明使用整数类型 nvpl_int_t,以便应用程序可以定义宏 NVPL_ILP64 并链接 ILP64 接口库,或者在未定义 NVPL_ILP64 的情况下链接 LP64 接口。

服务类型#

nvpl_lapack_math_mode_t#

  • C / C++

NVPL LAPACK 定义了枚举 nvpl_lapack_math_mode_t,具有以下值

  • NVPL_LAPACK_MATH_MODE_DEFAULT,NVPL LAPACK 内部计算的默认数学模式

  • NVPL_LAPACK_MATH_MODE_PEDANTIC,启用对数值病态情况处理的额外关注

  • NVPL_LAPACK_MATH_MODE_USE_GLOBAL,可用于重置线程局部数学模式设置的特殊值。

注意:建议使用默认数学模式,除非观察到数值伪像或不良行为。详见数学模式

nvpl_lapack_env_mode_t#

  • C / C++

NVPL LAPACK 定义了枚举 nvpl_lapack_env_mode_t,具有以下值

  • NVPL_LAPACK_ENV_MODE_DEFAULT,遵循环境变量

  • NVPL_LAPACK_ENV_MODE_IGNORE,忽略环境变量

  • NVPL_LAPACK_ENV_MODE_USE_GLOBAL,可用于重置线程局部环境模式设置的特殊值。

详见环境模式