MacSolverInstall - t-sakashita/rokko GitHub Wiki

Macでの固有値ソルバのインストール

固有値ソルバのインストールスクリプトについて

sudoが必要かどうかを自動検出

Accelerate Frameworkについて

  • リンクコマンド-framework Accelerate
  • BLAS, CBLAS, LAPACKが含まれる
    • ただし、 /usr/bin/cc 以外のコンパイラで Accelerate/Accelerate.h を読み込むとエラーになるので、CBLAS は Rokko でコンパイルしたものを利用する (2017-06-14)
    • (/System/Library/Frameworks/Accelerate.framework/Frameworks/vecLib.framework/Headers/cblas.h を直接読み込めば成功する)
    • 再現例
      $ cd rokko/3rd-party/cblas/examples
      $ echo '#include <Accelerate/Accelerate.h>' > cblas.h
      $ /usr/bin/cc cblas_example1.c -framework Accelerate # 成功
      $ /opt/local/bin/gcc cblas_example1.c -framework Accelerate # エラー
      $ rm -f cblas.h
      $ /usr/bin/cc -I/System/Library/Frameworks/Accelerate.framework/Frameworks/vecLib.framework/Headers cblas_example1.c -framework Accelerate # 成功
      $ /opt/local/bin/gcc -I/System/Library/Frameworks/Accelerate.framework/Frameworks/vecLib.framework/Headers cblas_example1.c -framework Accelerate # 成功
      

Clangコンパイラ

sudo port install scalapack +clang35 +openmpi
sudo port install petsc +clang35 +openmpi
sudo port install slepc +clang35 +openmpi

固有値ソルバのインストール

export PREFIX_ROKKO=$HOME/materiapps/clang35/rokko_solvers
cd rokko/3rd-party/install/ScaLAPACK
SUDO=sudo bash ./macos.sh

デフォルトのMPIコンパイラの変更

sudo port select --set mpi openmpi-clang35-fortran

MacPortsでのインストール場所

以下にインストールされる。

/opt/local/lib/petsc
/opt/local/lib/slepc

この下に、bin/, include/, lib/, share/が作られる。

MacPortsでSLEPcをインストールした際のエラー

MacPortsでslepc-3.6.2インストールした際、configureでエラーとなった。 原因は、PETScとSLEPcに用いたclang3.6のローカルバージョンが違うことだった。 対策:

  • PETScをuninstallしてcleanしてから、PETScをインストールした。
  • その後、SLEPcをインストールしたら、成功。

MacPortでScaLAPACKをインストールした場合

動的ライブラリのリンクエラーが出る:

dyld: Library not loaded: @rpath/libscalapack.dylib
  Referenced from: /Users/sakashitatatsuya/rokko/eigenexa-2.4b-2/Debug/lib/libEigenExa.dylib
  Reason: image not found

解決法:.bashrcや.zshrcに以下を追記する。

export LD_LIBRARY_PATH=/opt/local/lib:$LD_LIBRARY_PATH 

Apple M3でのTrilinosのビルド

以下は不要?

    -DCMAKE_C_FLAGS="-Wl,-ld_classic" -DCMAKE_CXX_FLAGS="-Wl,-ld_classic" \                                                      

Accelerate.frameworkのありか: /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Accelerate.framework/

Processing enabled external package/TPL: BLAS (enabled by Xpetra, disable with -DTPL_ENABLE_BLAS=OFF)
-- BLAS_LIBRARY_NAMES='blas blas_win32'
-- TPL_BLAS_LIBRARIES='-framework Accelerate'
-- NOTE: Moving the general link argument '-framework Accelerate' in TPL_BLAS_LIBRARIES forward on the link line which may change the link and break the link!
Processing enabled external package/TPL: LAPACK (enabled by Xpetra, disable with -DTPL_ENABLE_LAPACK=OFF)
-- LAPACK_LIBRARY_NAMES='lapack lapack_win32'
-- TPL_LAPACK_LIBRARIES='-framework Accelerate'
-- NOTE: Moving the general link argument '-framework Accelerate' in TPL_LAPACK_LIBRARIES forward on the link line which may change the link and break the link!
Processing enabled external package/TPL: DLlib (enabled explicitly, disable with -DTPL_ENABLE_DLlib=OFF
    -DTrilinos_EXTRA_LINK_FLAGS="-Wl,-ld_classic" \
    -DTPL_BLAS_LIBRARIES:STRING="-framework Accelerate" -DTPL_LAPACK_LIBRARIES:STRING="-framework Accelerate" \
    -DCMAKE_EXE_LINKER_FLAGS="-Wl,-ld_classic"  -DCMAKE_MODULE_LINKER_FLAGS="-Wl,-ld_classic" \