incomp-flame-post/tuning_results.md
ignis 78fbedc9a1
All checks were successful
CI Test Suite / run-tests (push) Successful in 1m14s
Deploy Documentation / build-and-deploy (push) Successful in 56s
feat: implement transpose block size auto-tuning and benchmark
- Added benchmark_transpose.f90 to measure blocked transpose performance.
- Added tune_blocksize.py to auto-detect grid sizes, benchmark valid block size candidates, and apply the optimal value.
- Updated makefile to support benchmark targets and default BLOCKSIZE=16 based on autotuning.
- Saved tuning results and system specifications to tuning_results.md.
2026-06-05 13:25:17 +00:00

1.9 KiB

Transpose Block Size Auto-Tuning Results

This document contains the performance tuning results for the 2D transpose block size (BLOCKSIZE) in the compact finite difference schemes, along with the detailed system specification on which the benchmark was performed.

1. System Specifications

Parameter Value
CPU Model Intel(R) Xeon(R) CPU E5-2696 v2 @ 2.50GHz
CPU Topology 1 Socket / 12 Cores / 24 Threads
Installed RAM 62 GiB
OS / Kernel Ubuntu 24.04.4 LTS (Noble Numbat) / Linux 6.8.0-111-generic x86_64
MPI Compiler GNU Fortran (Ubuntu 13.3.0-6ubuntu2~24.04.1) 13.3.0 (via mpif90)

2. Tuning Configuration

  • Grid Resolution: NX=512, NY=256, NZ=256
  • Tuning Mode: Isolated performance benchmark (benchmark_transpose)
  • Benchmark Iterations: 3 per candidate block size
  • Target Operations: Blocked 2D transpose (ddx) in compact schemes

3. Autotuning Results

The autotuner evaluated all mathematically valid divisors of NY (256) that are \ge 4:

Block Size Compile Time (s) Avg Run Time (s) Relative Difference Status
4 2.46 0.276665 +53.1% SUCCESS
8 2.47 0.206591 +14.3% SUCCESS
16 2.59 0.180668 Best SUCCESS
32 2.42 0.190675 +5.5% SUCCESS
64 2.42 0.239433 +32.5% SUCCESS
128 2.44 0.291365 +61.3% SUCCESS
256 2.44 0.355095 +96.5% SUCCESS

4. Conclusion & Action

  • Optimal Block Size: BLOCKSIZE=16 achieved the minimum runtime of 0.180668 seconds.
  • Action: The optimal block size was automatically applied to code/makefile.
  • Correctness Verification: Correctness was verified via make test using BLOCKSIZE=16, and all derivative computations passed numeric tolerance checks successfully without any issues.