High-Performance Computing (HPC) is the use of supercomputers or huge clusters of powerful machines to address computationally complex problems that normal computers cannot handle.
We need HPC because current scientific, technical, and data-intensive issues need huge processing capacity, which regular computers cannot deliver. Parallel computing, scalability, GPU acceleration, distributed memory systems, and performance optimisation are all important subjects.
Parallel programming provides multiple benefits compared to serial programming by distributing tasks across various processors, leading to a notable decrease in total computation time and enabling quicker execution. It effectively makes use of existing computing resources, allowing for large and intricate problems—like simulations or big data analyses—that would be unfeasible on just one processor. Moreover, parallel programming offers scalability since performance can increase by incorporating additional processors and boosts throughput by enabling several tasks or simulations to operate simultaneously.
Graphics Processing Units (GPUs) offer substantial benefits compared to Central Processing Units (CPUs) because of their immense parallelism, allowing for the concurrent execution of thousands of threads, leading to greatly improved computational efficiency for numerical and data-heavy tasks. They provide improved performance per watt, enhancing energy efficiency for extensive computations, and achieve significantly greater memory bandwidth that facilitates rapid data transfer during processing. These traits render GPUs especially adept at speeding up AI, CFD, image processing, and scientific simulations in contrast to conventional CPU architectures.
OpenMP is a parallel programming model for shared memory intended for systems with several CPU cores within one node. It employs straightforward compiler directives to parallelize tasks and loops, facilitating the integration of multithreading into existing codebases. OpenMP is most appropriate for fine-grained parallelism in which all threads utilize a shared memory space.
MPI is a distributed-memory paradigm employed to execute programs on various nodes within a cluster, with each process possessing its own memory. It depends on clear message passing for communication, enabling it to scale effectively to thousands of processors. MPI is extensively utilized in expansive HPC simulations that demand superior performance and significant scalability.
OpenACC is a directive-oriented programming model intended for transferring computations to GPUs and other accelerators. It enables developers to enhance current CPU-based code with few modifications by incorporating straightforward compiler directives. OpenACC is especially beneficial for scientific applications that require GPU acceleration without needing expertise in low-level GPU programming models such as CUDA.
CUDA (Compute Unified Device Architecture) is a programming model and parallel computing platform developed by NVIDIA to enhance computation speeds on their GPUs. It enables developers to create applications that execute thousands of threads at the same time, facilitating high-efficiency computations for scientific, engineering, and AI uses. CUDA allows GPU computing to be utilized via interfaces for C, C++, Fortran, and Python.
The Immersed Boundary Method (IBM) is a computational approach utilized to model fluid-structure interactions by depicting solid boundaries in a fluid environment without needing the computational grid to match the solid's shape. Rather than utilizing body-fitted meshes, IBM incorporates the solid boundary within a static Eulerian grid and applies boundary conditions via supplementary forcing terms, enabling effective and precise management of intricate or dynamic geometries.
In CFD, an Overset grid (also known as a Chimera grid) is a method that employs several overlapping grids to model complex geometries or moving objects. A fixed background grid spans the primary area, whereas body-fitted grids shift with the objects, utilizing interpolated values in the overlapping areas to manage relative motion without needing to remesh.
A meshless technique in CFD is a computational strategy that addresses fluid flow issues without employing a fixed mesh or grid, utilizing a collection of dispersed points (nodes) spread across the domain instead. These techniques calculate flow variables and their derivatives through interpolation between adjacent nodes, rendering them ideal for issues that involve significant deformations, shifting boundaries, free surfaces, or intricate geometries where conventional mesh creation is challenging or costly.
Computational Fluid Dynamics (CFD) is extensively used in blood flow dynamics to examine and forecast hemodynamic performance in arteries, veins, and the heart. Applications encompass analyzing blood flow dynamics, wall shear stress, pressure distribution, and the implications of arterial stenosis or aneurysms, enhancing medical devices such as stents and heart valves, and aiding surgical planning alongside cardiovascular disease studies.
LBM represents the Lattice Boltzmann Method, a mesoscopic computational fluid dynamics (CFD) technique derived from kinetic theory that models fluid flows through particle distribution functions on a discrete lattice.
LBM thrives in parallel settings thanks to its explicit scheme, which allows simple local calculations at each node without significant inter-node reliance during collision phases. This architecture enables extensive parallelism on GPUs, clusters, and supercomputers, utilizing methods like one-step streaming and FP16 precision to reach impressive throughput, including 20 billion cell updates per second on a single H100 GPU. Procedures such as shift-and-swap enhance workload distribution, reducing communication expenses by 20-55% and increasing efficiency by 25-60% compared to other LBM variations.
LBM surpasses conventional solvers such as finite volume methods (FVM) in parallel environments since its localized update rules reduce data transfer requirements, in contrast to FVM's global matrix solutions that impede GPU scalability. It easily manages intricate geometries by designating lattice nodes as either fluid or solid and facilitates quick iterations for exploratory investigations into multiphysics issues. Overall, LBM’s design is more compatible with contemporary hardware’s high concurrency and bandwidth, facilitating larger simulations while requiring less memory and development effort.
Direct Numerical Simulation (DNS) is a CFD method that directly solves the Navier-Stokes (NS) equations without employing any turbulence models, capturing all turbulence scales from the largest to the Kolmogorov scales. DNS demands very high spatial and temporal resolution to accurately represent the complete spectrum of turbulent flow characteristics, which renders it computationally costly and usually restricted to low Reynolds number (Re) flows or basic research. Large Eddy Simulation (LES) directly resolves the larger turbulent scales while modeling the smaller ones with a subgrid-scale model, making LES less computationally intensive than DNS but still more precise than Reynolds-Averaged Navier-Stokes (RANS) methods. LES provides a workable equilibrium between computational expense and physical precision, rendering it appropriate for intricate, high Reynolds number flows where DNS would be unfeasible. Fundamentally, DNS offers the most comprehensive turbulence information but comes with a significant computational expense, whereas LES lowers the cost by simulating small-scale turbulence impacts.