This directory contains a concise benchmark designed for validating FPGA offloading of the Thomas algorithm, primarily employed for solving linear equation systems structured within a tridiagonal matrix.
Benchmark Setup
The benchmark defines a domain measuring 1 \text{cm} \times 0.5 \text{cm} (easting \times northing),
discretized in a 10 \times 5 grid. Each grid cell initially
contains a specific concentration. The concentration in the left domain half is set to 6.92023 \times 10^{-7}, while in the right half to
2.02396 \times 10^{-8}, creating an horizontal concentration discontinuity at
the center of the grid. These initial concentrations are read from headerless csv file init_conc.csv.
A diffusion time step is simulated with the
heterogeneous 2D-ADI approach detailed in the
ADI_scheme.pdf file. The x component of the
diffusion coefficients, read from headerless csv file alphax.csv ranges from \alpha = 10^{-9} to 10^{-10} (distributed randomly), while the
y-component is held constant at 5 \times 10^{-10}. Closed
boundary conditions are enforced at all domain boundaries, meaning that concentration cannot enter or exit
the system, or in other terms, that the sum of concentrations over the domain must stay constant. The benchmark simulates a single iteration with a
time step (\Delta t) of 360 seconds.
Usage
To generate new makefiles using the -DTUG_NAAICE_EXAMPLE=ON option in CMake,
compile the executable, and run it to generate the benchmark output, follow
these steps:
-
Navigate to your project's build directory.
-
Run the following CMake command with the
-DTUG_NAAICE_EXAMPLE=ONoption to generate the makefiles:cmake -DTUG_NAAICE_EXAMPLE=ON .. -
After CMake configuration is complete, build the
naaiceexecutable by runningmake:make naaice -
Once the compilation is successful, navigate to the build directory by
cd <build_dir>/naaice -
Finally, run the
naaiceexecutable to generate the benchmark output:./naaice
Output Files
Thomas_<n>.csv
These files contain the values of the tridiagonal coefficient matrix A, where:
Aarepresents the leftmost value,Abrepresents the middle value, andAcrepresents the rightmost value of one row of the matrix.
Additionally, the corresponding values of the right-hand-side vector b are
provided.
Since the 2D-ADI BTCS scheme processes each row first and then proceeds column-wise through the grid, each iteration is saved separately in consecutively numbered files.
BTCS_5_10_1.csv
The result of the simulation, separated by whitespaces!