This library provides efficient parallel computation for multidimensional TDMA.
The parallel multi-dimensional TDMA for data of size (nx, ny, nz) using npx*npy*npz processors with this library proceeds through the following steps:
(Modules corresponding to steps (1), (2), and (3))
The PDD algorithm, proposed by Sun et al. (1989), is a method for solving TDMA of diagonally dominant tridiagonal matrices. This library applies this method to CPU multi-dimensional TDMA, reducing data communication between processors, thereby improving computation speed and achieving high scalability.
The repository can be cloned as follows:
Alternatively, the source files can be downloaded through github menu 'Download ZIP'.
Prerequisites to compile TDMA_PDD_CPU are as follows:
Build an example problem after build TDMA_PDD_CPU
Build all
After building the example file, an executable binary, tdma_pdd_cpu
, is built in the run
folder. The input.dat
file in the run
folder is a pre-defined input file, and the tdma_pdd_cpu
can be executed as follows: ``` mpirun -np 8 ./tdma_pdd_cpu >log & ``` Output is the error of PDD method and error would be machine error if you choose appropriated number of grid and processors. Note that in this example, diagonal dominance was forced by setting a=0.1*rand(), b=1, and c=0.1*rand(), where a, b, and c are entries in the tridiagonal matrix.
src
: source files of TDMA_PDD_CPUexample
: validation and performance checking of TDMA_PDD_CPUinclude
: contains header files created after building and required codeslib
: a static library of TDMA_PDD_CPU is created after building and header files of required codes are contained.doc
: documentationrun
: an executable binary file for the example problem is created after buildingPlease use the following bibtex, when you refer to this project.
@article{moon2020application, title={Application of the parallel diagonal dominant algorithm for the incompressible Navier-Stokes equations}, author={Moon, Hojun and Hong, Seungpyo and You, Donghyun}, journal={Journal of Computational Physics}, volume={423}, pages={109795}, year={2020}, publisher={Elsevier} }