Rate This Document
Findability
Accuracy
Completeness
Readability

A Message Is Displayed Indicating That the Library File Is Missing When the KML_LAPACK Library Is Used to Compute the Inverse of a Matrix

Symptom

When the LAPACK library in KML is used to compute the inverse of a matrix, the dpotri_ function is called. The test code is as follows:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
int main()
{
    char uplo = 'L'
    int n = 4;
    int lda = n;
    int info = 0;
    double a[] = { 231.8009,   33.9545,   9.4143,   11.1156,
       33.9495,  162.2902,   6.6684,   53.2033,
       9.4143,    6.6684,  100.322,   71.5384,
       11.1156,   53.2033,  71.5384,  106.5638 };
   dpotri_(&uplo, &n, a, &lda, &info);
}

Dynamic compilation in the scenario where KML_BLAS and KML_LAPACK are used:

gcc test.c -o test -fopenmp -I $KML_LAPACK_ROOT/include/kml-0.3.0 -L /usr/local/kml/lib -lklapack -L $ADAPT_ROOT -l:liblapack_adapt.a -L $KML_BLAS_ROOT -lkblas -lgfortran -lm -lkservice

The compilation failed with the following output:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
/opt/arm/gcc-12.2.0_RHEL-8/binutils_bin/ld: /usr/local/kml/lib/libklapack.so: undefined reference to `zgebrd_'
/opt/arm/gcc-12.2.0_RHEL-8/binutils_bin/ld: /usr/local/kml/lib/libklapack.so: undefined reference to `sgerqf_netlib_'
/opt/arm/gcc-12.2.0_RHEL-8/binutils_bin/ld: /usr/local/kml/lib/libklapack.so: undefined reference to `zunmql_netlib_'
/opt/arm/gcc-12.2.0_RHEL-8/binutils_bin/ld: /usr/local/kml/lib/libklapack.so: undefined reference to `dgelqf_netlib_'
/opt/arm/gcc-12.2.0_RHEL-8/binutils_bin/ld: /usr/local/kml/lib/libklapack.so: undefined reference to `csptrf_netlib_'
/opt/arm/gcc-12.2.0_RHEL-8/binutils_bin/ld: /usr/local/kml/lib/libklapack.so: undefined reference to `slasda_'
/opt/arm/gcc-12.2.0_RHEL-8/binutils_bin/ld: /usr/local/kml/lib/libklapack.so: undefined reference to `csytf2_'
/opt/arm/gcc-12.2.0_RHEL-8/binutils_bin/ld: /usr/local/kml/lib/libklapack.so: undefined reference to `clarfy_'
/opt/arm/gcc-12.2.0_RHEL-8/binutils_bin/ld: /usr/local/kml/lib/libklapack.so: undefined reference to `slaed2_'
/opt/arm/gcc-12.2.0_RHEL-8/binutils_bin/ld: /usr/local/kml/lib/libklapack.so: undefined reference to `chptrf_netlib_'
/opt/arm/gcc-12.2.0_RHEL-8/binutils_bin/ld: /usr/local/kml/lib/libklapack.so: undefined reference to `dlartg_'
/opt/arm/gcc-12.2.0_RHEL-8/binutils_bin/ld: /usr/local/kml/lib/libklapack.so: undefined reference to `zgebd2_'
/opt/arm/gcc-12.2.0_RHEL-8/binutils_bin/ld: /usr/local/kml/lib/libklapack.so: undefined reference to `dorgqr_netlib_'
/opt/arm/gcc-12.2.0_RHEL-8/binutils_bin/ld: /usr/local/kml/lib/libklapack.so: undefined reference to `slarfg_'
/opt/arm/gcc-12.2.0_RHEL-8/binutils_bin/ld: /usr/local/kml/lib/libklapack.so: undefined reference to `dlarfy_'
/opt/arm/gcc-12.2.0_RHEL-8/binutils_bin/ld: /usr/local/kml/lib/libklapack.so: undefined reference to `sgebd2_'

The current environment variables are set as follows:

export KML_LAPACK_ROOT=/usr/local/kml/
export KML_BLAS_ROOT=/usr/local/kml/lib/kblas/omp/
export ADAPT_ROOT=/usr/local/kml/lib/kblas/omp/lapack_adapt

Run the ldd command to check the link dependency of libklapack.so.

1
2
3
4
5
6
7
8
        linux-vdso.so.1 (0x0000ffff86341000)
        libachk.so => /lib/libachk.so (0x0000ffff857dc000)
        libkservice.so.2.2.0 => /usr/local/kml/lib/libkservice.so.2.2.0 (0x0000ffff857bb000)
        libc.so.6 => /lib64/libc.so.6 (0x0000ffff85635000)
        /lib/ld-linux-aarch64.so.1 (0x0000ffff86303000)
        libdl.so.2 => /lib64/libdl.so.2 (0x0000ffff85614000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x0000ffff855df000)
        librt.so.1 => /lib64/librt.so.1 (0x0000ffff855be000)

Key Process and Cause Analysis

The LAPACK library in the RPM package of KML is incomplete and must be combined with the open-source Netlib LAPACK to build a full implementation. This issue occurs because Netlib LAPACK was not integrated to generate the complete library.

Conclusion and Solution

Generate a complete LAPACK library. For details, see Generating a Complete LAPACK Library in the KML Developer Guide.