# 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](file:///home/ignis/workspace/incomp-flame-post/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.