-
Notifications
You must be signed in to change notification settings - Fork 160
Modifying and Rebuilding PETSc and petsc4py in Firedrake
By default, every firedrake installation comes with a clone of the firedrake project fork of petsc in [firedrake-install-dir]/src/petsc
on the firedrake
branch.
It is possible to make experimental changes to the firedrake installation of PETSc, though PETSc must be rebuilt for the changes to have the desired effect.
The time consuming way to do this is to run firedrake-update --rebuild
. The PETSc mirror will be updated and completely rebuilt - often taking over an hour.
Note: If the PETSc ABI has changed (in principal whenever the PETSc release version's second number has changed) firedrake-update --rebuild
must be done.
Most of the time though, you can speed things up a lot with the below procedure
- Make desired modifications
- Activate the firedrake venv
- Navigate to
[firedrake-install-dir]/src/petsc
- Run
make PETSC_DIR=[firedrake-install-dir]/src/petsc PETSC_ARCH=default all
. This should take less than 10 minutes. - Run the suggested
make PETSC_DIR=[firedrake-install-dir]/src/petsc PETSC_ARCH=default check
check (or similar - the log text from successfully performing step 4 should tell you the exact command) to make sure the libraries are working. This should take less that 2 minutes.
The branch used must have a working remote (such that git pull
will work) or else firedrake-update
will fail.
Try the following:
- Remove the regularly troublesome
PASTIX
headers withrm -rf default/include/pastix*.h
in the[firedrake-install-dir]/src/petsc
directory - Run
make reconfigure
- warning! This may take up to an hour - Run the
make ...
command recommended in the log text frommake reconfigure
(it will probably bemake PETSC_DIR=[firedrake-install-dir]/src/petsc PETSC_ARCH=default all
)
See below
If local changes are made to petsc4py
the following will update firedrake to reflect those changes:
- Activate the firedrake venv
- Navigate to
[firedrake-install-dir]/src/petsc
. - Set the PETSC_DIR and PETSC_ARCH environment variables with the
export PETSC_DIR=[firedrake-install-dir]/src/petsc
andexport PETSC_ARCH=default
commands - Run
pip install -U --no-deps src/binding/petsc4py
petsc4py should now be updated.
You may find that pip
uses a cached petsc4py build instead of rebuilding from scratch. To resolve this you can run rm -rf $VIRTUAL_ENV/src/petsc/src/binding/petsc4py/build
prior to pip install <args>
.
Building locally
Tips
- Running Firedrake tests with different subpackage branches
- Modifying and Rebuilding PETSc and petsc4py
- Vectorisation
- Debugging C kernels with
lldb
on MacOS - Parallel MPI Debugging with
tmux-mpi
,pdb
andgdb
- Parallel MPI Debugging with VSCode and
debugpy
- Modifying generated code
- Kernel profiling with LIKWID
- breakpoint() builtin not working
- Debugging pytest with multiple processing
Developers Notes
- Upcoming meeting 2024-08-21
- 2024-08-07
- 2024-07-24
- 2024-07-17
- 2024-07-10
- 2024-06-26
- 2024-06-19
- 2024-06-05
- 2024-05-29
- 2024-05-15
- 2024-05-08
- 2024-05-01
- 2024-04-28
- 2024-04-17
- 2024-04-10
- 2024-04-03
- 2024-03-27
- 2024-03-20
- 2024-03-06
- 2024-02-28
- 2024-02-28
- 2024-02-21
- 2024-02-14
- 2024-02-07
- 2024-01-31
- 2024-01-24
- 2024-01-17
- 2024-01-10
- 2023-12-13
- 2023-12-06
- 2023-11-29
- 2023-11-22
- 2023-11-15
- 2023-11-08
- 2023-11-01
- 2023-10-25
- 2023-10-18
- 2023-10-11
- 2023-10-04
- 2023-09-27
- 2023-09-20
- 2023-09-06
- 2023-08-30
- 2023-08-23
- 2023-07-12
- 2023-07-05
- 2023-06-21
- 2023-06-14
- 2023-06-07
- 2023-05-17
- 2023-05-10
- 2023-03-08
- 2023-02-22
- 2023-02-15
- 2023-02-08
- 2023-01-18
- 2023-01-11
- 2023-12-14
- 2022-12-07
- 2022-11-23
- 2022-11-16
- 2022-11-09
- 2022-11-02
- 2022-10-26
- 2022-10-12
- 2022-10-05
- 2022-09-28
- 2022-09-21
- 2022-09-14
- 2022-09-07
- 2022-08-25
- 2022-08-11
- 2022-08-04
- 2022-07-28
- 2022-07-21
- 2022-07-07
- 2022-06-30
- 2022-06-23
- 2022-06-16
- 2022-05-26
- 2022-05-19
- 2022-05-12
- 2022-05-05
- 2022-04-21
- 2022-04-07
- 2022-03-17
- 2022-03-03
- 2022-02-24
- 2022-02-10
- 2022-02-03
- 2022-01-27
- 2022-01-20
- 2022-01-13
- 2021-12-15
- 2021-12-09
- 2021-11-25
- 2021-11-18
- 2021-11-11
- 2021-11-04
- 2021-10-28
- 2021-10-21
- 2021-10-14
- 2021-10-07
- 2021-09-30
- 2021-09-23
- 2021-09-09
- 2021-09-02
- 2021-08-26
- 2021-08-18
- 2021-08-11
- 2021-08-04
- 2021-07-28
- 2021-07-21
- 2021-07-14
- 2021-07-07
- 2021-06-30
- 2021-06-23
- 2021-06-16
- 2021-06-09
- 2021-06-02
- 2021-05-19
- 2021-05-12
- 2021-05-05
- 2021-04-28
- 2021-04-21
- 2021-04-14
- 2021-04-07
- 2021-03-17
- 2021-03-10
- 2021-02-24
- 2021-02-17
- 2021-02-10
- 2021-02-03
- 2021-01-27
- 2021-01-20
- 2021-01-13
- 2021-01-06