t-sakashita / rokko

Integrated Interface for libraries of eigenvalue decomposition
Boost Software License 1.0
10 stars 2 forks source link

EigenExaのインストールにおいて、ScaLAPACKの検出でエラーとなる #605

Closed t-sakashita closed 1 year ago

t-sakashita commented 1 year ago

https://github.com/t-sakashita/rokko/actions/runs/5019260084/jobs/8999547233

t-sakashita commented 1 year ago
-- Found MPI_C: /usr/bin/mpicc (found version "3.1") 
-- Found MPI_Fortran: /usr/bin/mpif90 (found version "3.1") 
-- Found MPI: TRUE (found version "3.1")  
CMake Error at /usr/lib/cmake/scalapack-2.1.0.openmpi/scalapack-targets.cmake:79 (message):
  The imported target "scalapack" references the file
-- Configuring incomplete, errors occurred!

     "/usr/lib/libscalapack-openmpi.so.2.1.0"

  but this file does not exist.  Possible reasons include:

  * The file was deleted, renamed, or moved to another location.

  * An install or uninstall procedure did not complete successfully.

  * The installation package was faulty and contained

     "/usr/lib/cmake/scalapack-2.1.0.openmpi/scalapack-targets.cmake"

  but not all the files it references.

Call Stack (most recent call first):
  /usr/lib/cmake/scalapack-2.1.0.openmpi/scalapack-config.cmake:2 (include)
  CMakeLists.txt:27 (find_package)

Failed: cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/home/runner/work/rokko/rokko/build/rokko/eigenexa/eigenexa-2.12-2/Release -DCMAKE_C_COMPILER=mpicc -DCMAKE_Fortran_COMPILER=mpif[90](https://github.com/t-sakashita/rokko/actions/runs/5019260084/jobs/8999547233#step:5:91) /home/runner/work/rokko/rokko/build/rokko/build/eigenexa-2.12
Error: Process completed with exit code 1.
t-sakashita commented 1 year ago

CMakeのバージョンアップで、独自のscalapack-config.cmakeが追加されたためか?

wistaria commented 1 year ago

https://bugs.launchpad.net/ubuntu/+source/scalapack/+bug/1917534 ?

t-sakashita commented 1 year ago

Ubuntuのバグ修正を待ちます。

t-sakashita commented 1 year ago

b7fe9f8cff3633ffacebf162989be4e4f61220b4

t-sakashita commented 1 year ago

5a915002cf9a9b83ddea45dbe9046b796861bb35 CMakeは通るようになった。

t-sakashita commented 1 year ago

生成されたbuild/eigenexa-2.12/CMakeLists.txtにおいて、出力変数SCAPALACK_LIBRARIESを表示してみた。

# ScaLAPACK library
find_package(ScaLAPACK REQUIRED HINTS /usr/lib/x86_64-linux-gnu)
string(REGEX REPLACE ";" " " SCAPALACK_LIBS "${SCAPALACK_LIBRARIES}")

include(CMakePrintHelpers)

cmake_print_variables(SCAPALACK_LIBRARIES)

空文字列である。

-- SCAPALACK_LIBRARIES=""

ScaLAPACKのライブラリが検出されていない。

t-sakashita commented 1 year ago

find_packageのHINTSを正しく使う方法は?

t-sakashita commented 1 year ago
set(SCALAPACK_LIBRARIES "-L/usr/lib/x86_64-linux-gnu libscalapack-openmpi.so -llapack -lblas")

とりあえず、以下のように、ScaLAPACKのライブラリ名を直接入れると、成功した。

set(SCALAPACK_LIBRARIES "/usr/lib/x86_64-linux-gnu/libscalapack-openmpi.so;/usr/lib/x86_64-linux-gnu/liblapack.so;/usr/lib/x86_64-linux-gnu/libblas.so")
t-sakashita commented 1 year ago

綴りのミス:SCAPALACK_LIBRARIES

t-sakashita commented 1 year ago

FindScaLAPACK.cmakeを同梱する方針に戻した。 1d8365849e2172a159ed53fe3ddfb28b0e421d7c (このように、CMakeに付属のFindScaLAPACK.cmakeを使わないようにすれば、以下のバグは問題とならない。 https://bugs.launchpad.net/ubuntu/+source/scalapack/+bug/1917534

1d8365849e2172a159ed53fe3ddfb28b0e421d7c

ubuntu.shを用意し、CMake時にライブラリの場所を指定した。

    -DSCALAPACK_LIB="-L/usr/lib/x86_64-linux-gnu  /usr/lib/x86_64-linux-gnu/libscalapack-openmpi.so -llapack -lblas" \

33c2702fcbd99631b34a4e322b0725c8d6951e5a

GithubのactionでEigenExaのビルドが通るようになった。