Skip to content

Commit

Permalink
deploy: d7cc20c
Browse files Browse the repository at this point in the history
  • Loading branch information
github-actions[bot] committed Jul 20, 2023
0 parents commit 4097c4c
Show file tree
Hide file tree
Showing 74 changed files with 23,042 additions and 0 deletions.
4 changes: 4 additions & 0 deletions .buildinfo
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 added .nojekyll
Empty file.
Binary file added _images/Esfast_flowchart.drawio.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added _images/Fugaku_benchmark.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added _images/TomoATT_logo_2.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added _images/bench_avx_cuda.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added _images/vel_anim.gif
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
15 changes: 15 additions & 0 deletions _sources/examples/index.md.txt
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.
115 changes: 115 additions & 0 deletions _sources/index.md.txt
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

```
168 changes: 168 additions & 0 deletions _sources/install/Use_on_HPCs.md.txt
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
```
-->
Loading

0 comments on commit 4097c4c

Please sign in to comment.