Add OpenMP parallelization to Fortran compute kernels
Add !$omp parallel do collapse(2) directives to all triple-loop stencil kernels (fderivs, fdderivs, fdx/fdy/fdz, kodis, lopsided, enforce_ag/enforce_ga) across all ghost_width variants. Add !$omp parallel workshare to RK4/ICN/Euler whole-array update routines. Build system: add -qopenmp to compile and link flags, switch MKL from sequential to threaded (-lmkl_intel_thread -liomp5). Runtime: set OMP_NUM_THREADS=96, OMP_STACKSIZE=16M, OMP_PROC_BIND=close, OMP_PLACES=cores for 96-core server target. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -11,18 +11,30 @@
|
||||
import AMSS_NCKU_Input as input_data
|
||||
import subprocess
|
||||
import time
|
||||
import os
|
||||
|
||||
## OpenMP configuration for threaded Fortran kernels
|
||||
## OMP_NUM_THREADS: set to number of physical cores (not hyperthreads)
|
||||
## OMP_PROC_BIND: bind threads to cores to avoid migration overhead
|
||||
## OMP_STACKSIZE: each thread needs stack space for fh arrays (~3.6MB)
|
||||
if "OMP_NUM_THREADS" not in os.environ:
|
||||
os.environ["OMP_NUM_THREADS"] = "96"
|
||||
os.environ["OMP_STACKSIZE"] = "16M"
|
||||
os.environ["OMP_PROC_BIND"] = "close"
|
||||
os.environ["OMP_PLACES"] = "cores"
|
||||
## CPU core binding configuration using taskset
|
||||
## taskset ensures all child processes inherit the CPU affinity mask
|
||||
## This forces make and all compiler processes to use only nohz_full cores (4-55, 60-111)
|
||||
## Format: taskset -c 4-55,60-111 ensures processes only run on these cores
|
||||
#NUMACTL_CPU_BIND = "taskset -c 0-111"
|
||||
#NUMACTL_CPU_BIND = "taskset -c 16-47,64-95"
|
||||
NUMACTL_CPU_BIND = "taskset -c 8-15"
|
||||
#NUMACTL_CPU_BIND = "taskset -c 8-15"
|
||||
NUMACTL_CPU_BIND = ""
|
||||
|
||||
## Build parallelism configuration
|
||||
## Use nohz_full cores (4-55, 60-111) for compilation: 52 + 52 = 104 cores
|
||||
## Set make -j to utilize available cores for faster builds
|
||||
BUILD_JOBS = 96
|
||||
BUILD_JOBS = 16
|
||||
|
||||
|
||||
##################################################################
|
||||
|
||||
Reference in New Issue
Block a user