#author("2025-10-04T08:43:29+09:00","default:Miyashita","Miyashita")
#author("2026-02-14T05:33:10+09:00","default:Miyashita","Miyashita")
* PETSc のインストール [#w332e0f6]
Ubuntu なら
#codeprettify{{
sudo apt install petsc-dev
}}
でインストールできると書いてあるものの依存関係エラーでインストールできなかったのでソースからインストールすることになった.~

** PETSc 3.24.0 [#v0c6a810]
- ダウンロード,展開~
[[PETSc - Download>https://petsc.org/release/install/download/#doc-download]] から圧縮ファイルをダウンロードして展開した.~
#codeprettify{{
wget https://web.cels.anl.gov/projects/petsc/download/release-snapshots/petsc-3.24.0.tar.gz
tar zxvf petsc-3.24.0.tar.gz
cd petsc-3.24.0
}}

- コンパイル,インストール~
[[Configuring PETSc>https://petsc.org/release/install/install/]]をよく読む.~
openblas や lapack は適切な場所にあるか LD_LIBRARY_PATH にあれば勝手に探してきてくれるっぽいので特に指定しなくて大丈夫.~
事前に環境変数として定義したCC, FCなどは無視され,configure のオプションで --with-cc=gcc などと指定しない場合は優先順位をつけて PATH から見つかったものを選んでくると書いてある.~
 If no compilers are specified - configure will automatically look for available MPI or regular compilers in the user’s $PATH in the following order:
  1. mpicc/mpicxx/mpif90
  2. gcc/g++/gfortran
  3. cc/CC etc..
PATH に mpicc, mpicxx, mpif90 が入っていてこれで問題なければ configure のオプションは --prefix くらいで良い?~
#codeprettify{{
./configure --prefix=$HOME/local/src/petsc
}}
configure が成功したら,次にこうやって make しろみたいな指示が出るので,それに従う.~
#codeprettify{{
make PETSC_DIR=$HOME/local/src/petsc-3.24.0 PETSC_ARCH=arch-linux-c-debug all
make PETSC_DIR=$HOME/local/src/petsc-3.24.0 PETSC_ARCH=arch-linux-c-debug install
}}
prefix に指定した場所に include, lib, share のフォルダが生成されていたのでおそらくこれで大丈夫.~

- コンパイルその2~
公式docに書いてあるとおりデフォルトでは debug モードでコンパイルするので,おそらく実行速度は遅い.~
最適化モードにするには,PETSC_ARCH を定義して,FOPTFLAGS などで最適化オプションを指定して configure する.
#codeprettify{{
./configure PETSC_DIR=$(pwd) PETSC_ARCH=arch-linux-c-opt --with-debugging=0 COPTFLAGS='-O3 -march=native -mtune=native' CXXOPTFLAGS='-O3 -march=native -mtune=native' FOPTFLAGS='-O3 -march=native -mtune=native' --with-shared-libraries=1
}}
prefix を使うと実行時にうまくいかない? $PETSC_DIR/$PETSC_ARCH に全部入っているので prefix を指定しなくてもよいかも.

Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes