KML SCALAPACK 中 kscalapack_full.so 打包失败
收藏回复举报
KML SCALAPACK 中 kscalapack_full.so 打包失败
t('forum.solved') 已解决
发表于2023-08-12 16:47:37
0 查看

参考文档:生成完整的LAPACK

问题:

$  mpicc -o libkscalapack_full.so -shared -fPIC -Wl,--whole-archive /workspace/public/software/libs/kml/1.7.0_lapack3.10.1_scalapack2.2.0/lib/libkscalapack.a ./scalapack_adapt/libscalapack_adapt.a -Wl,--no-whole-archive /workspace/public/software/libs/kml/1.7.0_lapack3.10.1_scalapack2.2.0/lib/libkservice.a -L/workspace/public/software/libs/kml/1.7.0_lapack3.10.1_scalapack2.2.0/lib/kblas/omp -lkblas -fopenmp -lpthread -lgfortran -lm 

/usr/bin/ld: /workspace/public/software/libs/kml/1.7.0_lapack3.10.1_scalapack2.2.0/lib/libkscalapack.a(pgetrf.cpp.o): in function `void kml::kscalapack::pgetrf::(anonymous namespace)::Pgetrf<float>(char, int const*, int const*, float*, int const*, int const*, int const*, int*, int*)': 

(.text+0xbdc): undefined reference to `SgemmGetBufferSize' 

/usr/bin/ld: (.text+0xc2c): undefined reference to `SgemmGetBufferSize' 

/usr/bin/ld: /workspace/public/software/libs/kml/1.7.0_lapack3.10.1_scalapack2.2.0/lib/libkscalapack.a(pgetrf.cpp.o): in function `int kml::kscalapack::pgetrf::(anonymous namespace)::FactorizeAndCopy<float>(kml::kscalapack::pgetrf::(anonymous namespace)::Panels<float> const*, unsigned long, unsigned long, int, int)': 

(.text+0x1518): undefined reference to `somatcopy_' 

/usr/bin/ld: (.text+0x1564): undefined reference to `somatcopy_' 

/usr/bin/ld: (.text+0x15ec): undefined reference to `SgemmPack' 

/usr/bin/ld: /workspace/public/software/libs/kml/1.7.0_lapack3.10.1_scalapack2.2.0/lib/libkscalapack.a(pgetrf.cpp.o): in function `void kml::kscalapack::pgetrf::(anonymous namespace)::Update<float>(kml::kscalapack::pgetrf::(anonymous namespace)::Panels<float> const*, unsigned long, unsigned long, int, int)': 

(.text+0x1810): undefined reference to `SgemmCompute' 

/usr/bin/ld: /workspace/public/software/libs/kml/1.7.0_lapack3.10.1_scalapack2.2.0/lib/libkscalapack.a(pgetrf.cpp.o): in function `void kml::kscalapack::pgetrf::(anonymous namespace)::Pgetrf<double>(char, int const*, int const*, double*, int const*, int const*, int const*, int*, int*)': 

(.text+0x2da0): undefined reference to `DgemmGetBufferSize' 

/usr/bin/ld: (.text+0x2df0): undefined reference to `DgemmGetBufferSize' 

/usr/bin/ld: /workspace/public/software/libs/kml/1.7.0_lapack3.10.1_scalapack2.2.0/lib/libkscalapack.a(pgetrf.cpp.o): in function `int kml::kscalapack::pgetrf::(anonymous namespace)::FactorizeAndCopy<double>(kml::kscalapack::pgetrf::(anonymous namespace)::Panels<double> const*, unsigned long, unsigned long, int, int)': 

(.text+0x3548): undefined reference to `domatcopy_' 

/usr/bin/ld: (.text+0x3594): undefined reference to `domatcopy_' 

/usr/bin/ld: (.text+0x361c): undefined reference to `DgemmPack' 

/usr/bin/ld: /workspace/public/software/libs/kml/1.7.0_lapack3.10.1_scalapack2.2.0/lib/libkscalapack.a(pgetrf.cpp.o): in function `void kml::kscalapack::pgetrf::(anonymous namespace)::Update<double>(kml::kscalapack::pgetrf::(anonymous namespace)::Panels<double> const*, unsigned long, unsigned long, int, int)': 

(.text+0x384c): undefined reference to `DgemmCompute'

...



已经尝试的排除手段:

  1. -L 连接Kblas
  2. 生成完整的LAPACK
    • mpicc -o libklapack_full.so -shared -fPIC -Wl,--whole-archive /workspace/public/software/libs/kml/1.7.0_lapack3.10.1_scalapack2.2.0/lib/libklapack.a ./lapack_adapt/liblapack_adapt.a -Wl,--no-whole-archive /workspace/public/software/libs/kml/1.7.0_lapack3.10.1_scalapack2.2.0/lib/libkservice.a -fopenmp -lpthread -lgfortran -lm
    • 该指令成功

我要发帖子