-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 4097c4c
Showing
74 changed files
with
23,042 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
# Sphinx build info version 1 | ||
# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. | ||
config: 96cb9f1a4be6e31a218d6fc6f4edf1ca | ||
tags: 645f666f9bcd5a90fca523b33c5a78b7 |
Empty file.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
# Examples | ||
|
||
```{toctree} | ||
:maxdepth: 1 | ||
|
||
``` | ||
|
||
In `TomoATT/examples` directory, you can find small examples of how to use the library. | ||
|
||
inversion_small : | ||
This is the simplest example which runs inversion on a small problem. | ||
inversion_small_ASCII : | ||
This example is the same as inversion_small but uses ASCII in/output file format. | ||
|
||
Please read the README.md file in each example directory for more information. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,115 @@ | ||
|
||
# | ||
|
||
<br /> | ||
|
||
```{image} ./_static/TomoATT_logo_2.png | ||
:alt: Title logo | ||
:width: 85% | ||
:align: center | ||
``` | ||
|
||
<br /> | ||
<br /> | ||
<br /> | ||
<br /> | ||
<br /> | ||
|
||
|
||
TomoATT is a numerical library for adjoint-state travel-time tomography, which is developed for : | ||
- computing with a very large and fine forward grid, | ||
- large number of earthquake sources and stations dataset in | ||
- an efficient and scalable way on modern HPCs. | ||
|
||
The implemented logics are on the following published articles: | ||
[Ping Tong (2021)](https://agupubs.onlinelibrary.wiley.com/doi/10.1029/2021JB021818), [Jing Chen et. al.(2022)]() | ||
and [Miles Detrixhe and Frédéric Gibou (2016)](https://doi.org/10.1016/j.jcp.2016.06.023). | ||
|
||
Thanks to the efficiency of an eikonal equation solver, the computation of the travel-time is very fast and requires less amount of computational resources. | ||
As an input data for TomoATT is travel times at seismic stations, we can easily prepare a great amount of input data for the computation. | ||
|
||
<br /> | ||
<br /> | ||
|
||
```{image} _static/Esfast_flowchart.drawio.png | ||
:alt: TomoATT flowchart | ||
:width: 65% | ||
:align: center | ||
``` | ||
|
||
|
||
|
||
```{image} _static/vel_anim.gif | ||
:alt: TomoATT velocity fitting | ||
:width: 65% | ||
:align: center | ||
``` | ||
|
||
<br /> | ||
<br /> | ||
|
||
|
||
For modeling a very large and fine grid with numerous seismic events, this library applies 3-layer parallelization, which are: | ||
- layer 1: simulutaneous run parallelization (travel times for multiple seismic sources may be calculated simultaneously) | ||
- layer 2: subdomain decomposition (If the number of computational nodes requires too large memory, we can separate the domain into subdomains and run each subdomain in a separate compute node) | ||
- layer 3: sweeping parallelization (in each subdomain, sweeping layers are also parallelized) | ||
|
||
The details of the parallelization method applied in this library are described in the paper [Miles Detrixhe and Frédéric Gibou (2016)](https://doi.org/10.1016/j.jcp.2016.06.023). | ||
|
||
The image below shows the benchmark result of TomoATT (elapse time for a forward simulation) on a single ~ 64 nodes of Fugaku supercomputer (A64FX processor), which shows a high parallel efficiency. | ||
|
||
<br /> | ||
<br /> | ||
|
||
```{image} ./_static/Fugaku_benchmark.png | ||
:alt: Fugaku benchmark re | ||
:width: 65% | ||
:align: center | ||
``` | ||
|
||
<br /> | ||
<br /> | ||
|
||
|
||
Also, an optionzation for serial computation was also implemented in this library. Currently AVX, AVX2, AVX512 for intel processors and SVE for ARM processors are supported. | ||
CUDA implementation is now under development, which will be available in the future release. | ||
|
||
<br /> | ||
<br /> | ||
|
||
```{image} ./_static/bench_avx_cuda.png | ||
:alt: bench avx and cuda | ||
:width: 65% | ||
:align: center | ||
``` | ||
<br /> | ||
<br /> | ||
|
||
|
||
Regional events (sources within the global domain) and teleseismic events (sources outside the global domain) may be used for inversion. | ||
|
||
|
||
<br /> | ||
<br /> | ||
<br /> | ||
<br /> | ||
|
||
|
||
# Citation | ||
If you use TomoATT for your own research, please cite at least one of the following articles: | ||
- [Ping Tong (2021)](https://agupubs.onlinelibrary.wiley.com/doi/10.1029/2021JB021818), | ||
- [Jing Chen et. al.(2023)](https://doi.org/10.1093/gji/ggad093), | ||
|
||
|
||
|
||
|
||
|
||
```{toctree} | ||
:maxdepth: 2 | ||
:hidden: | ||
|
||
install/index | ||
tutorial/index | ||
examples/index | ||
|
||
``` |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,168 @@ | ||
# use on HPCs | ||
|
||
This page shows how to compile TomoATT on a few HPCs which we have been using. | ||
If you have any experience on compiling TomoATT on other HPCs, your contribution on this page is highly appreciated. So please feel free to contact us. | ||
|
||
## Gekko @ NTU | ||
|
||
### 1. Load necessary modules and select GNU compilers | ||
```bash | ||
module purge && module load cmake gnu/gcc-9.3.0 | ||
``` | ||
|
||
### 2. compiler openmpi and HDF5 with parallel option | ||
`./install_mpi_and_hdf5_local.sh` | ||
will create openmpi and hdf5 executables in external_libs/local_mpi_hdf5/bin | ||
|
||
### 3. Compile TomoATT | ||
```bash | ||
# make a build directory | ||
mkdir build | ||
|
||
# compile TomoATT | ||
cd build | ||
CC=/usr/local/gcc-9.3.0/bin/gcc CXX=/usr/local/gcc-9.3.0/bin/g++ cmake .. -DCMAKE_PREFIX_PATH=$(pwd)/../external_libs/local_mpi_hdf5 | ||
|
||
make -j16 | ||
``` | ||
|
||
Then the executable TOMOATT is created in the build directory. | ||
|
||
|
||
## Fugaku @ RIKEN | ||
|
||
|
||
### 0. start interactive job on Fugaku (for accessing arch64 environment) | ||
|
||
```bash | ||
pjsub --interact -g hp<project_id> -L "node=1" -L "rscgrp=int" -L "elapse=1:00:00" --mpi "max-proc-per-node=12" --sparam "wait-time=600" -x PJM_LLIO_GFSCACHE=/vol0004 --no-check-directory | ||
``` | ||
|
||
|
||
### 1. Load necessary modules | ||
```bash | ||
# prepare spack env | ||
. /vol0004/apps/oss/spack/share/spack/setup-env.sh | ||
# load Fujitsu mpi | ||
spack load /jfzaut5 | ||
# or load gnu 11.2.0 | ||
spack load /nphnrhl /cvur4ou | ||
``` | ||
|
||
|
||
|
||
### 2. Download hdf5 source code and compile it | ||
```bash | ||
|
||
# every file will be placed in external_libs | ||
cd ./external_libs | ||
|
||
# make a local install pass | ||
mkdir local_mpi_hdf5 | ||
|
||
# download hdf5 source | ||
wget https://gamma.hdfgroup.org/ftp/pub/outgoing/hdf5/snapshots/v112/hdf5-1.12.2-1.tar.gz | ||
|
||
#Extract the downloaded directory | ||
tar -xvf hdf5-1.12.2-1.tar.gz && cd hdf5-1.12.2-1 | ||
|
||
# Configure the code. (the pathes to mpicc, mpicxx should vary on the environment) | ||
CC=mpifcc CFLAGS="-Nclang" CXX=mpiFCC CXXFLAGS="-Nclang" ./configure --enable-parallel --enable-unsupported --enable-shared --enable-cxx --prefix=$(pwd)/../local_mpi_hdf5 | ||
|
||
# make | ||
make -j12 && make install | ||
|
||
# now hdf5 executables are in external_libs/local_mpi_hdf5/bin | ||
``` | ||
|
||
or with gnu 11.2.0 | ||
```bash | ||
|
||
# download hdf5 source | ||
wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.13/hdf5-1.13.2/src/hdf5-1.13.2.tar.gz | ||
#Extract the downloaded directory | ||
tar -xvf hdf5-1.13.2.tar.gz | ||
cd hdf5-1.13.2 | ||
# Configure the code. (the pathes to mpicc, mpicxx should vary on the environment) | ||
CC=mpicc CXX=mpic++ ./configure --enable-parallel --enable-unsupported --enable-shared --enable-cxx --prefix=$(pwd)/../local_mpi_hdf5 | ||
# make | ||
make -j12 && make install | ||
|
||
``` | ||
|
||
|
||
### 3. Compile TomoATT | ||
```bash | ||
# cd to TomoATT directory | ||
cd ../.. | ||
|
||
# make a build directory | ||
mkdir build | ||
|
||
# compile TomoATT | ||
cd build | ||
|
||
CC=mpifcc CXX=mpiFCC cmake .. -DCMAKE_PREFIX_PATH=$(pwd)/../external_libs/local_mpi_hdf5 | ||
# or for gnu 11.2.0 | ||
cmake .. -DCMAKE_PREFIX_PATH=$(pwd)/../external_libs/local_mpi_hdf5 | ||
|
||
make -j12 | ||
``` | ||
|
||
### 4. terminalte interactive job | ||
`Ctrl + D` | ||
|
||
|
||
|
||
|
||
<!-- | ||
## ASPIRE 1 @ NSCC | ||
|
||
### 0. load necessary modules | ||
```bash | ||
module purge | ||
export PATH=/app/gcc/9.5.0/bin:$PATH && export LD_LIBRARY_PATH=/app/gcc/9.5.0/lib:$LD_LIBRARY_PATH | ||
module load intel/19.0.0.117 | ||
``` | ||
|
||
### 1. Download hdf5 source code and compile it | ||
```bash | ||
|
||
# download openmpi and hdf5 source code on your LOCAL MACHINE | ||
wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.13/hdf5-1.13.3/src/hdf5-1.13.3.tar.gz | ||
|
||
# then upload it to NSCC (for example) | ||
scp -rC hdf5-1.13.3.tar.gz aspire1:~/(where TomoATT placed)/external_libs/ | ||
|
||
# on ASPIURE 1 | ||
cd external_libs | ||
|
||
mkdir local_mpi_hdf5 | ||
|
||
# extract tar file and cd to the directory | ||
tar -xvf hdf5-1.13.3.tar.gz && cd hdf5-1.13.3 | ||
|
||
# configure the code | ||
CC=mpiicc CXX=mpiicpc \ | ||
./configure --enable-parallel --enable-unsupported --enable-shared --enable-cxx --prefix=$(pwd)/../local_mpi_hdf5 | ||
|
||
# make and install to the prefix | ||
make -j16 && make install | ||
|
||
``` | ||
|
||
### 2. Compile TomoATT | ||
```bash | ||
# cd to TomoATT directory | ||
cd ../.. | ||
|
||
# make a build directory | ||
mkdir build | ||
|
||
# compile TomoATT | ||
cd build | ||
CC=icc CXX=icpc cmake .. -DCMAKE_PREFIX_PATH=$(pwd)/../external_libs/local_mpi_hdf5 | ||
|
||
make -j16 | ||
``` | ||
--> |
Oops, something went wrong.