Abstract
We examine large-eddy-simulation modeling approaches and computational performance of two open-source computational fluid dynamics codes for the simulation of atmospheric boundary layer flows that are of direct relevance to wind energy production. The first code, NekRS, is a high-order, unstructured-grid, spectral element code. The second code, AMR-Wind, is a second-order, block-structured, finite-volume code with adaptive mesh refinement capabilities. The objective of this study is to co-develop these codes in order to improve model fidelity and performance for each. These features will be critical for running ABL-based applications such as wind farm analysis on advanced computing architectures. To this end, we investigate the performance of NekRS and AMR-Wind on the Oak Ridge Leadership Facility supercomputers Summit, using 4 to 800 nodes (24 to 4,800 NVIDIA V100 GPUs), and Crusher, the testbed for the Frontier exascale system, using 18 to 384 Graphics Compute Dies on AMD MI250X GPUs. We compare strong- and weak-scaling capabilities, linear solver performance, and time to solution. We also identify leading inhibitors to parallel scaling.
1. Introduction
Atmospheric boundary layer (ABL) flows are an important part of everyday life. Aside from being a primary driver of vertical exchanges in moisture, aerosols, and atmospheric gases, the ABL affects practical aspects of life—including the transportation system, renewable energy generation, pollution dispersion, noise propagation, and transmission of electromagnetic signals. ABL flows are turbulent, and the state of the turbulence is affected by density stratification that arises in large part from surface heating and cooling. Additionally, Coriolis effects caused by planetary rotation and curvature complicate the flow. Furthermore, regional-scale weather patterns and terrain add complexity to the ABL. Significant research effort is applied to ABL flows because of their importance and complexity (Moeng, 1984; Berg and Kelly, 2020; Beare et al., 2006; Sullivan et al., 2008; Kosović and Curry, 2000; Pedersen et al., 2014; Mirocha, 2020; Churchfield and Moriarty, 2020). This work focuses on numerical computation of ABL flows using large-eddy simulation (LES), where the governing physics equations are solved in filtered form such that the larger, energy-containing eddies are directly resolved, and the remaining “subgrid-scale” (SGS) turbulence is modeled. LES was born out of ABL research roughly five decades ago (Lilly, 1962; Smagorinsky, 1963), and continues to evolve and improve.
Wind energy is a prime example of an application driven by the ABL. Generation of electrical energy from farms of wind turbines at night in the stable ABL is a particularly interesting situation. The winds tend to be stronger, so generation is higher. With decreased turbulence, wind turbine wakes persist for longer distances, significantly affecting wind farm efficiency and fatigue loads on waked wind turbines. With this example in mind, researchers wish to increase grid resolution to reduce reliance on the SGS turbulence model, but they also wish to increase the overall domain size to encompass the wind farm, which commonly extends many kilometers horizontally. Increased domain size is desirable in many other applications besides wind energy. For example, LES can be used to study deep convection, which happens over a large geographical extent many kilometers into the atmosphere, and there is a push toward LES of regional-scale weather.
High-fidelity LES of the turbulent ABL is dependent on massively parallel high-performance computing (HPC). HPC architectures are evolving from traditional homogeneous x86-CPU-based computing. For example, the world’s second fastest computer (as of June 2022), the supercomputer Fugaku at the RIKEN Center for Computational Science, is built around Fujitsu’s custom ARM A64FX processor and does not use a GPU. Alternatively, the U.S. Department of Energy (DOE) has embraced a hybrid CPU-GPU approach for its leadership-class computing. Summit, the world’s seventh fastest computer (November 2023 TOP500 list (TOP500, 2023)), has nodes that house two IBM POWER9 CPUs (each with 22 cores) and six NVIDIA V100 GPUs and is capable of 200 × 1015 floating-point operations per second (FLOPS). Similarly, DOE’s first exascale-class supercomputers, those capable of at least 1018 FLOPS, will be hybrid CPU-GPU–based systems. Frontier, the world’s first exascale-class supercomputer at the Oak Ridge Leadership Computing facility, has nodes that house one AMD CPU and 4 AMD MI250X GPUs.
This collaborative effort had its genesis in a 2015 DOE workshop report (Sprague et al., 2017), where it was noted that the transition to exascale computing brings many opportunities in computational fluid dynamics (CFD), as well as significant challenges. Two of the grand challenge opportunities described in that workshop report are relevant to this paper: the simulation of boundary layer turbulence over large areas and the simulation of an entire wind farm under realistic atmospheric flow conditions. The transition to GPU-accelerated computing is significant for those performing CFD for numerical weather forecasting or for LES of ABL flows. While hybrid CPU-GPU processing potentially enables dramatically faster computing (at low power), legacy CPU-based codes need significant overhauls or rewrites to run effectively in a CPU-GPU environment (Robinson and Sprague, 2020; Sprague et al., 2017).
Several groups have introduced CFD codes for LES of atmospheric flows with an emphasis on GPU calculations. While early efforts in weather forecasting on GPUs focused at O(100) m resolution (see, e.g., Schalkwijk et al. (2015)), more recent efforts have performed high-fidelity GPU-based LES on O(1) m grid sizes. Van Heerwaarden et al. (2017) introduced the MicroHH 1.0 incompressible-flow solver directed at atmospheric flow; the solver is based on finite-difference spatial discretization and a split-operator time integration. The authors showed that for problem sizes that fit, a single GPU had performance similar to that of 32 CPU cores. Sauer and Muñoz-Esparza (2020) introduced the FastEddy LES model that was created for CPU and GPU systems. FastEddy solves the fully compressible Navier–Stokes (NS) equations using finite-difference spatial discretization and explicit Runge–Kutta time integration. The authors showed excellent scaling on up to 32 GPUs and argued that one GPU provides performance similar to that of 256 CPU cores. Recent high-order incompressible flow codes using fast tensor-product operator evaluation include ExaDG (Arndt et al., 2020), SPECHT_FS (Huismann et al., 2019), and deal. ii (Krank et al., 2017). ExaDG and deal. ii use a discontinuous Galerkin formulation, whereas SPECHT_FS uses a continuous Galerkin formulation similar to that in Nek5000/RS, which is described below.
In this paper we examine LES modeling approaches and computational performance of two open-source, incompressible-flow, GPU-oriented CFD codes that employ fundamentally different spatial discretization and data structures. The first is NekRS (Fischer et al., 2022), which is an updated version of the Nek5000 code. Nek5000/RS is a high-order, unstructured-grid, spectral-finite-element CFD code. The second is AMR-Wind, which is part of the ExaWind simulation suite (Sharma et al., 2024; Sprague et al., 2020). AMR-Wind is a second-order, block-structured, finite-volume-method CFD code with adaptive mesh refinement (AMR) capabilities and is built on the AMReX library, a software framework for massively parallel, block-structured applications. Both of these codes are part of the DOE Exascale Computing Project, which is supporting the development of GPU-ready applications for exascale-class supercomputers (ECP, 2017; Alexander et al., 2020).
We compare NekRS and AMR-Wind predictions and performance on the well-known GEWEX (Global Energy and Water Cycle Experiment) Atmospheric Boundary Layer Study (GABLS) stably stratified benchmark LES case (Beare et al., 2006), which is illustrated in Figure 1. The flow comprises a quiescent mean flow above Illustration of an atmospheric boundary layer simulation with tracer particles for the GABLS benchmark problem. (Simulation by Lindquist et al. (2021)). NekRS (HPF, SMG) and AMR-Wind at three grid refinement levels for potential temperature at time 6 h. NekRS (HPF, SMG) and AMR-Wind: velocity magnitude and potential temperature at each hour, 1 h, 2 h,…,9 h.


In addition to investigating these codes’ ability to represent ABL physics, an objective of this study is to co-develop these codes in order to improve model fidelity and performance, features that will be critical for running ABL-based applications such as wind farm analysis on advanced computing architectures. By careful cross-comparison, both codes have made significant advances. This article focuses on performance. A future article will address subgrid-scale modeling for LES of the ABL. Here we investigate the scalability of NekRS and AMR-Wind on the Oak Ridge Leadership Computing Facility supercomputer Summit, using 4 to 800 nodes (p = 24 to 4,800 NVIDIA V100 GPUs). We provide iteration counts, average time per step, and the real-time ratio (ratio of wall-clock time to physical time), as well as detailed performance metrics. We additionally include a limited set of timing data for the two codes on Crusher, using up to 384 Graphics Compute Dies (GCDs) on AMD MI250X GPUs (one MPI rank per GCD).
The paper is organized as follows. The next section describes the codes and gives an overview of the numerical approaches used. We then discuss the numerical setup of the simulations. We provide detailed studies comparing the codes’ performance and scaling. We conclude with a brief summary.
2. Description of codes
The numerical results are based on LES, which requires enhanced dissipation to provide an energy drain at the grid scale. Consequently, the incompressible NS and potential temperature equations are solved in a spatially filtered resolved-scale formulation, expressed in nondimensional form as
The SGS modeling in Nek5000/RS is based on the work of Sullivan et al. (1994), where the SGS stress tensors
Here the fluctuating (isotropic) part is taken into account through the use of either a high-pass filter (HPF) (Stolz et al., 2005) or a Smagorinsky (SMG) model based on the fluctuating strain rate. For the former model, which is not eddy-viscosity based, ν t in equation (7) is by definition equal to zero. On the other hand, Sullivan et al. (1994) derive the expression for ν T so that the law-of-the-wall behavior can be recovered in the absence of any resolved turbulence.
The SGS modeling in AMR-Wind is based on the work of Smagorinsky (1963), where a single partial differential equation for subgrid-scale kinetic energy is solved, and from that a subgrid-scale eddy viscosity is computed. The Boussinesq eddy viscosity hypothesis is then invoked to obtain the subgrid-scale stress tensor and heat flux vector.
In the following subsections we discuss the details of the numerical approaches of Nek5000/RS and AMR-Wind. For simplicity, we use u
i
, p, and θ, dropping the overbar notation from
2.1. Nek5000/RS
Nek5000 is a spectral element code that is used for a wide range of thermal-fluids applications. It employs high-order spectral elements (Patera, 1984) in which the solution, data, and test functions are represented as locally structured Nth-order tensor-product polynomials on a set of E globally unstructured curvilinear hexahedral brick elements. The approach yields two principal benefits. First, for smooth functions such as solutions to the incompressible NS equations, high-order polynomial expansions exhibit rapid convergence with approximation order, often yielding a significant reduction in the number of unknowns (n ≈ EN3) required to reach engineering tolerances. Second, the locally structured forms permit local lexicographical ordering with minimal indirect addressing and, crucially, the use of tensor-product sum factorization to yield low O(n) storage costs and O(nN) work complexities (Orszag, 1980).
NekRS (Fischer et al., 2022) is a GPU-accelerated version of Nek5000 that targets high performance on forthcoming exascale platforms. For performance portability, NekRS is written in C++/OCCA (Medina et al., 2014). Several key kernels are based on highly tuned OCCA kernels coming from the development work of Warburton and co-workers in the libParanumal library (Chalmers et al., 2020). Specific attention in NekRS has been given to ensure scalability to p = 104–105 ranks and beyond (Fischer et al., 2021). NekRS retains access to the standard Nek5000 interface, which allows users to leverage existing user-specific source code such as statistical analysis tools for turbulence.
Time integration in Nek5000/RS is based on a semi-implicit splitting scheme using kth-order backward differences (BDFk) to approximate the time derivative coupled with implicit treatment of the viscous and pressure terms and kth-order extrapolation (EXTk) for the remaining advection and forcing terms. This approach leads to independent elliptic subproblems comprising a Poisson equation for the pressure, a coupled system of Helmholtz equations for the three velocity components, and an additional Helmholtz equation for the potential temperature. The pressure Poisson equation is obtained by taking the divergence of the momentum equation and forcing
With the given time-splitting, we recast (8)–(10) into weak form and derive the spatial discretization by restricting the trial and test spaces to be in the finite-dimensional space spanned by the spectral-element basis. The discretization leads to a sequence of symmetric positive definite linear systems for pressure, velocity, and temperature. Velocity and temperature are diagonally dominant and readily addressed with Jacobi-precondition conjugate gradient iteration. 1
The pressure Poisson solve is treated with GMRES using p-multigrid as a preconditioner. Details of the formulation can be found in Fischer and Lottes (2004); Fischer et al. (2017); Phillips et al. (2022).
NekRS supports several features to accelerate performance, including overlapped communication and computation during operator evaluation, which yields a 10%–15% performance gain for NS simulations; FP32 local-operator inversion and residual evaluation for the Chebyshev-accelerated Schwarz-based p-multigrid; and projection of the velocity and pressure solutions onto the space of prior solutions to generate an initial guess, which can yield a 1.5–2-fold NS performance gain (Fischer, 1998). On the NVIDIA A100, the OCCA-based kernels are close to the bandwidth-limited roofline and sustain 2.1–2.2 TFLOPS (FP64) for the Poisson operator, and 3.1–3.8 TFLOPS (FP64) for the advection operator. In the pressure preconditioner, the forward Poisson operator on the coarser multigrid levels realizes 2.5–3.9 TFLOPS (FP32), and the Schwarz smoother sustains 2.5–5.1 TFLOPS (FP32). (The lower values are for smaller values of N that are used in the p-multigrid V-cycle.) Comparable values are realized on the NVIDIA V100s on Summit, save that they are ≈1.5 times lower than those on the A100. Sustained flop rates for the full NS solver are
2.2. AMR-wind
AMR-Wind is a spatially and temporally second-order accurate finite-volume code. Important aspects of the discretization are discussed below; for more details readers can see the work of Almgren et al. (1998) since the discretization is similar to the incompressible-flow solver IAMR. Velocity, scalar quantities, and gradients of pressure are located at cell centers, whereas pressure is located at nodes. Partial staggering combined with an approximate projection method yields linear systems that are well studied, have small-bandwidth stencils, and can be efficiently solved with standard techniques such as geometric multigrid. These discretization choices give a well-balanced mix of both efficiency and accuracy. In addition to the spatial staggering there is staggering in time similar to a Crank–Nicolson formulation. The time discretization is
The advection term is formed by extrapolating in time by using a Godunov method (Almgren et al., 1998). Specifically, the velocity is first extrapolated in space (to the faces) and in time to n + 1/2 in a predictor step. MAC projection (Bell et al., 1991) is applied to ensure that the face velocities are divergence free, which takes the form
The intermediate velocity
3. Simulations
We consider a stable ABL in which the ground temperature (at z = 0) is cooler than the air temperature and where the ground temperature continues to cool over the duration of the simulation. Here, we give full details of the numerical setup. The simulation domain is Ω = L
x
× L
y
× L
z
= 400 m × 400 m × 400 m, with x the streamwise direction, y the spanwise direction, and z the vertical direction. Simulations are initialized (at t = 0) with constant velocity in the streamwise direction equal to geostrophic wind speed of U = 8 m/s. The initial potential temperature is 265 K in 0 ≤ z ≤ 100 m and linearly increased at a rate of 0.01 K/m in 100 m
Periodic boundary conditions (BCs) are used in the streamwise and spanwise directions. At the top boundary (z = 400 m), a stress-free, rigid lid is applied for momentum, and the heat flux for the energy equation is set consistent with the 0.01 K/m temperature gradient initially prescribed in the upper region of the flow. At the bottom boundary, we perform simulations with impenetrable traction BCs for the velocity where the specified shear stress comes from Monin–Obukhov similarity theory (Monin and Obukhov, 1954). For the energy equation, a heat flux is applied that is derived from the same theory and a specified potential temperature difference between the flow at a height, z1, and the surface. The surface temperature is from the GABLS specification following the rule θ b (t) = 265 − 0.25 t, where t is in hours. Because the boundary conditions are periodic (lateral) or the mass flow rate through the boundaries is zero (top and bottom), pressure boundary conditions are not needed.
In Nek5000/RS, the implementation of the traction BCs for the horizontal velocity components is performed in the context of the log-law for which we follow the approach of Grotjans and Menter (1998) and Kuzmin et al. (2007), which is appropriate for finite element methods based on a weighted residual formulation. The traction BCs imposed on the tangential velocity are based on the horizontally averaged slip velocity that develops at the boundary and the law of the wall and is effected through the use of the mean-field eddy viscosity model of Sullivan et al. (1994). The approach originally used by Schumann (1975b) is used to convert the horizontally averaged traction to local values based on the local slip velocity in each of the horizontal directions.
In AMR-Wind, the periodic BCs in the x and y directions and the slip boundary on the top wall are applied. On the bottom wall, Dirichlet BCs in the normal direction and inhomogeneous Neumann BCs in the x and y directions are applied. The inhomogenous Neumann BC is set using the expression for τ, the total wall shear stress, and q, the total waIn ll heat flux, in (18). The stresses are specified at the terrain boundary following Moeng (1984). The wall stress vector is defined as
The traction boundary conditions used in the two codes, NekRS and AMR-Wind, for the momentum equation along the lower wall were implemented in the same way as described in equations (18) and (19); the only difference is that the MFEV decomposition is used in NekRS but not in AMR-Wind.
The range of scales in these simulations is evident in Figure 2, which shows variations in potential temperature on a horizontal x-y slice at the height z = 100 m for resolutions Δx = 3.12 m, 1.56 m, and 0.78 m, respectively from left to right, for the differing codes/models. For AMR-Wind, the grid size is uniform in each direction. For NekRS, the element size is uniform in each direction; and Δx represents the average grid spacing given by 400 m/(E∗N), where E∗ is the number of elements in the x-, y-, or z-direction and N is the local polynomial order. The number of elements is
Figure 3 shows profiles of the horizontally averaged streamwise,
We remark that, while the initial focus for the current work was on co-development of performant GPU-based solvers for ABL simulations, the careful validation and cross-checking of the SGS models have also led to significant developments. For example, the improvement in the NekRS SGS model, which was realized by moving away from the HPF model in favor of the Smagorinsky model for the isotropic stress term, is a direct outcome of this collaborative effort. A more detailed exploration of resolution and model influence on the results is ongoing and will be the subject of a forthcoming paper.
4. Performance
Problem setup for strong- and weak-scaling studies.
4.1. Performance tuning and profiling
We begin with performance optimization, profiling analysis, and CPU versus GPU comparisons. NekRS GPU performance tuning on Summit is demonstrated in detail in the work of (Fischer et al., 2022; Min et al., 2022). The base libParanumal kernels have their origins in the work of Warburton and co-workers (Chalmers et al., 2020; Świrydowicz et al., 2019; Chalmers and Warburton, 2020; Abdelfattah et al., 2021). A key algorithmic component is the Chebyshev-accelerated Schwarz-based p-multigrid for the pressure solve (Phillips et al., 2022), which is performed in 32-bit precision (e.g., as done by Fehn et al. (2018)) to reduce injection-bandwidth pressure on the Summit network interface cards. Communication for the nearest-neighbor communication (direct-stiffness summation in the finite element or spectral element context (Deville et al., 2002)) is overlapped with computation whenever it proves to be effective, which can yield as much as 10%–15% savings in NS applications. At the strong-scale limit of
SS10:
pw+device MPI: 7.37e-05s / bi-bw: 18.2GB/s/rank
pw+device MPI: 5.16e-05s / bi-bw: 50.1GB/s/rank
pw+device MPI: 3.84e-05s / bi-bw: 16.8GB/s/rank
pw+host MPI: 2.46e-05s / bi-bw: 1.8GB/s/rank
SS11:
pw+device MPI: 4.38e-05s / bi-bw: 30.6GB/s/rank
pw+device MPI: 3.47e-05s / bi-bw: 74.4GB/s/rank
pw+device MPI: 2.74e-05s / bi-bw: 23.6GB/s/rank
pw+host MPI: 1.66e-05s / bi-bw: 2.7GB/s/rank
Here, SS10 indicates Slingshot 10, and SS11 indicates Slingshot 11, which shows about a 1.5× improvement over SS10. The listings also show which communication mode was used. We see that pw + device, which stands for pairwise device-to-device exchange (i.e., via GPU-direct), is used in most instances. The pw + host, which indicates the use of pairwise exchanges via the host, is used only in the case of many short messages, which is typically the scenario at the coarsest levels of the p-multigrid solver.
AMR-Wind performance optimization.
The computational cost contributors for AMR-Wind are shown graphically in Figure 4 in red colors. This figure shows the time spent performing the various equation solves and other operations during a timestep both as absolute time per timestep or percent of a timestep as a function of number of GPU processors used. NekRS vs AMR-Wind GPU cost breakdown on Summit (top) and Crusher (bottom), using n = 5123 and 2,000 steps.
The key observations are as follows: • The elliptic solves of the MAC projection and approximate pressure projection are leading computational cost contributors. Both solves use geometric multigrid with some differences. For instance, MAC projection is a cell-centered solve with a 7-point stencil whereas the approximate pressure projection is a node-centered solve with a 27-point stencil. This leads to differences in the coarsening and refining algorithms, smoothers, and boundary conditions. • The MAC projection step in AMR-Wind is not completely necessary. It is used mainly in computing the advection term in the momentum and scalar predictors, which requires velocities on cell faces at the n + 1/2 time level. Godunov extrapolation is used to obtain these velocities, but then MAC projection makes them divergence free. This MAC projection step is not necessary but extends the stability range to CFL numbers up to about 2. Excluding the MAC projection step, the AMR-Wind computation time becomes more in line with NekRS. In fact, for the case using 4 GPU nodes on Crusher, excluding the MAC projection step would make AMR-Wind faster than NekRS. The same is not true on more nodes or on Summit, however. • Figure 4 also shows that the percentage of total time spent on the elliptic solves increases as the number of nodes increases because the elliptic solve is highly communication dependent. • The other linear system solves are the predictor for the velocity transport equation and the solves for scalar transport equations, such as potential temperature or subgrid-scale kinetic energy. There is a separate solve for each of the three components of the vector velocity equation. Each of these is a Helmholtz solve using a 7-point stencil. The solver is BiCG. Typically, when running atmospheric LES, there are five Helmholtz solves per timestep. • Other function calls comprise source term calculations, boundary conditions, planar averaging, communication (excluding linear solve communication), linear solve setup, and copying solution arrays. • Overall, Crusher is providing better performance than Summit. This is partly because there are more GPUs per node (8 versus 6) but also because AMR-Wind’s mesh partitioning strategy is more ammenable to GPU counts that are powers of two. For example, a problem size of 5123 is more easily partitioned by 8 GPUs/node than 6 GPUs/node. With 16 Crusher nodes (128 GPUs) a time per timestep of t
step
= 0.11 s is achieved with AMR-Wind. With further scaling out with Summit the lowest time per timestep was 0.128 s on 128 Summit nodes (768 GPUs), as discussed below.
For NekRS, we start the GPU analysis with NVIDIA’s profiling tools. NVIDIA’s Nsight System summarizes kernel-level metrics for critical kernels. This tool identified that a bulk of total solution time for NekRS is spent evaluating the dealiased advection operator (subCycleStrongCubatureVolumeHex3D) both for the velocity vectors and for the temperature. Other leading consumers are the gather-scatter operations. Largely missing from this kernel-level analysis, however, is the time spent in the pressure preconditioner, which is separated across many kernels for the various levels of p-multigrid.
Each NekRS job tracks basic runtime statistics using a combination of MPI Wtime and cudaDeviceSynchronize or CUDA events. These are output every 500 timesteps unless the user specifies otherwise. From these, we collect aggregate timing breakdowns, roughly following the physical substeps of advection, pressure, and viscous thermal updates, plus tracking of known communication bottlenecks such as the pMG coarse-grid solve for the pressure preconditioner. Figure 4 shows the cost breakdown for this type of analysis over node counts ranging from 4 to 16. At lower node counts, the bulk of the NekRS time is spent in the makef and makeq (advection) routines, which are respectively responsible for setting up the right-hand sides of the viscous thermal updates for the momemtum and energy equations. To allow a larger CFL, the ABL simulations of viscous thermal updates use characteristics-based timestepping, which involves solving a sequence of hyperbolic subproblems on the interval [tn−2, t n ] (one for each velocity component and one for temperature) (Maday et al., 1990; Patel et al., 2019). Each subproblem takes several substeps using the dealiased advection operator, which performs quadrature on a 11 × 11 × 11 grid in each element. These substeps are thus compute intensive but not communication intensive, so they scale relatively well. The velocitySolve and scalarSolve, which involve communication-free diagonal preconditioning for conjugate gradient solution of (9)–(10), show similar scaling behavior. As with AMR-Wind, we see clearly in Figure 4 that the pressure solve does not scale as well as the other components.
We remark that Figure 4 indicates a significant amount of time is spent in udfExecuteStep. The majority of that cost results from the recently adopted mean-field eddy viscosity model (7), which requires several planar averages per timestep and is currently implemented as a user-defined function. For these calculations, which have low pressure and velocity iteration counts, the frequently called planar average utility has a significant impact on runtime (about 20%). Planar averaging is typically a postprocessing operation that is not performed on every step, but clearly it will need to be optimized in this LES application.
NekRS runtime benchmark results associated with Figure 4.
Figure 5 shows CPU and GPU strong-scaling performance for each code on Summit. The upper figures show standard time vs. node-count plots, which clearly indicate that it is easier to strong-scale on the CPU. On Summit, however, that point is moot given that one needs 128 nodes using a CPU-only configuration in order to get to the same time per step as using 4 nodes with 6 GPUs each (i.e., a factor of 32 difference in required node-hours to do the same work). NekRS and AMR-Wind: CPU vs. GPU performance on Summit: 100 steps average from 200 step runs for n = 5123.
4.2. Strong- and weak-scaling performance
We next consider GPU-only performance on Summit using a single V100 per MPI rank. Figure 6, top, shows performance in terms of t
step
for strong scaling as a function of the number of of GPUs, P, in the left column and as a function of number of points per rank, n/P, in the center column. Weak-scaling performance is presented in the right column. The wall-time figure also shows the ideal speedup curves scaling as P−1. The lower plots show parallel efficiency, NekRS vs. AMR-Wind strong and weak scaling on Summit GPUs.
We see that at the lower resolution of n = 5123, the performance of the two codes is within a factor of 2 of each other out to p = 78. From the efficiency figures we can see that both curves have dropped below 80% efficiency by that point, so a more realistic point of comparison would be at p = 66 given that users would typically not run this relatively small case on p > 66. We note that p = 66 corresponds to n/P = 2M, which is a typical strong-scaling limit for NekRS on current-generation GPU platforms.
NekRS GPU vs. AMR-Wind GPU strong-scaling performance study.
NekRS GPU vs. AMR-Wind GPU weak-scaling performance study with fixed mesh density and resolution per GPU.
Figure 6, right, shows weak-scaling results for n/p = 2.2 M and 4.4 M. For the heavily loaded cases, AMR-Wind is within a factor of 1.6 of NekRS, but this figure increases to roughly a factor of 2 for the 2.2 M points-per-GPU case. The weak-scaling efficiency reaches 80% at around p = 2000 GPUs for all the cases save the AMR-Wind case with n/p = 2.2 M, which crosses the 80% mark at p ≈ 1100.
Tables 4 and 5 provide a detailed breakdown of several of the key metrics for the code performance, including iteration counts (v i , p i , T i , for the respective velocity, pressure, and temperature iterative solvers), t step , parallel efficiency (Peff), and the wall-time to physical-time ratio (r t ). This last quantity is of particular interest since it must be smaller than unity for weather modeling applications. We also note that P is denoted by gpu in the tables. We see from Table 4 that, for a fixed value of n/P, r t effectively doubles with each doubling of (linear) resolution. The reason for this increase is that the number of timesteps must also double whenever the number of points in each direction is doubled (for fixed domain size). Throughout the table, we see that roughly two iterations are required per timestep for each of the linear solvers, indicating that the preconditioners are robust with respect to mesh size, although NekRS does show some increase in iteration count in the weak-scaling results.
We remark that AMR-Wind supports block-structured adaptive mesh refinement, which means that static grids do not leverage one of its main features. It is nonetheless highly performant on this problem. Moreover, AMR-Wind has a significant performance boost when the number of ranks is a power of 2, as seen in Table 4 for the n = 10243 case for p = 512 and in the n = 20483 case for p = 4096. In the former case, the parallel efficiency jumps from 49% to 67% as P changes from 480 to 512. In the latter, it jumps from 40% for p = 3840 to 51% for p = 4096. These performance gains derive from the block decompositions used in AMR-Wind, which favor block sizes (and, thus, processor counts) that are powers of 2.
We close with a scaling comparison of Summit and Crusher performance for NekRS in Figure 7. The upper figures show standard strong scaling as a function of the number of ranks on the left (one GPU or GCD per rank) and as a function of n/P on the right. The lower plots show the timing for the makef kernel (left), which evaluates the nonlinear advection term and does not require communication, and for the coarse-grid solve (right), which is communication dominated. The coarse-grid problem, which has roughly E degrees of freedom (with E = 262144 in this case), is solved by using algebraic multigrid (hypre) on the host CPUs (one CPU per MPI rank). The performance for these two platforms is remarkably similar. NekRS GPU strong-scaling comparison on Crusher and Summit.
5. Conclusion
We presented detailed profiling and timing results for two CFD codes, NekRS and AMR-Wind, applied to the GABLS atmospheric boundary layer test problem, which is of direct relevance to wind farm modeling and weather forecasting. Strong and weak scaling were demonstrated on up to p = 4800 NVIDIA V100 GPUs on OLCF’s Summit. For NekRS, wall-clock times of about 0.1 s per timestep were observed for n/P = 2M, which is the 80% efficiency point across a range of problem sizes. For the 5123, 10243, and 20483 resolutions, 0.1 s per timestep corresponds to ratios of wall-clock to simulated time of 1.8, 3.6, and 7.1, respectively. AMR-Wind was generally within a factor of 1.4–2.0 of the performance of NekRS over the range of interest, which is partly attributal to the fact that the incompressibility constraint for AMR-Wind requires two elliptic-system solves per timestep whereas NekRS requires only one. For both codes, strong scaling is ultimately inhibited by these intrinsically communication-intensive elliptic solves. For NekRS it was shown that a single GCD of the MI250X on Crusher is delivering performance that is comparable to a single V100 on Summit.
Simulation differences between NekRS and AMR-Wind were observed to follow the expected results for high- versus low-order discretizations, namely, that at a given refinement level the high-order case retains more high-frequency signal than does its low-order counterpart. We note that the second-order AMR-Wind algorithms were chosen for their robustness in addressing two challenging problems: two-phase air-water flows where the density ratio at the interface is a thousand (Kuhn et al., 2023) and coupling with an unstructured-grid solver through overset meshes (Sharma et al., 2024).
While both codes solve the acoustically incompressible Navier–Stokes equations, the codes use fundamentally different discretizations, different linear-system solvers, and different GPU-abstraction layers. Despite these differences, the strong-scaling results demonstrate the same fundamental opportunities and challenges on GPUs. First, if there are enough degrees of freedom on each GPU rank, GPU simulations can be dramatically faster than CPUs on a per-node basis. However, whereas both codes show a more typical (and good) range of ideal strong scaling on CPUs, GPU strong-scaling efficiency quickly degrades with the move to more GPU ranks. As described, this poor strong-scaling performance is tied to the elliptic-system linear solves and shows that further research is required to improve strong scaling of incompressible-flow computational fluid dynamics on GPUs.
In this work we performed careful subgrid-scale model and wall model comparisons between the two codes to realize comparable results. We employed state-of-the-art, physically accurate models that are currently available in the literature. More detailed modeling questions are part of an ongoing investigation and will be presented in a future paper.
Footnotes
Declaration of conflicting interests
The author(s) declared no potential conflicts of interest with respect to the research, authorship, and/or publication of this article.
Funding
The author(s) disclosed receipt of the following financial support for the research, authorship, and/or publication of this article: This research was supported in part by the Exascale Computing Project (17-SC-20-SC), a joint project of the U.S. Department of Energy Office of Science and the National Nuclear Security Administration, responsible for delivering a capable exascale ecosystem, including software, applications, and hardware technology, to support the nation’s exascale computing imperative. Funding was also provided by the U.S. Department of Energy, Office of Energy Efficiency and Renewable Energy, Wind Energy Technologies Office. This work was authored in part by the National Renewable Energy Laboratory, operated by Alliance for Sustainable Energy, LLC, for the U.S. Department of Energy (DOE) under Contract No. DE-AC36-08GO28308. The research used resources at the Oak Ridge Leadership Computing Facility at Oak Ridge National Laboratory, which is supported by the Office of Science of the U.S. Department of Energy under Contract DE-AC05-00OR22725. The research also used computational resources sponsored by the DOE Office of Energy Efficiency and Renewable Energy and located at the National Renewable Energy Laboratory. The views expressed in the article do not necessarily represent the views of the DOE or the U.S. Government. The U.S. Government retains and the publisher, by accepting the article for publication, acknowledges that the U.S. Government retains a nonexclusive, paid-up, irrevocable, worldwide license to publish or reproduce the published form of this work, or allow others to do so, for U.S. Government purposes.
Notes
Author biographies
Misun Min is a Computational Mathematician in the Mathematics and Computer Science Division at Argonne National Laboratory. She holds a Ph.D. in Applied Mathematics from Brown University, where she studied spectral methods for PDEs. Dr. Min is the Argonne PI for the Center for Efficient Exascale Discretizations, which is supported as part of DOE’s Exascale Computing Project. Her research focuses on high-order methods for challenging PDE-based applications. A major part of her effort is directed towards performance and scalability, whether using millions of CPUs or tens of thousands of GPUs. Dr. Min’s software developments include spectral element codes for electromagnetics (NekCEM), lattice-Boltzmann methods (NekLBM), and fluid-thermal transport (Nek5000/RS). She developed the first GPU-enabled variant of the Nek code suite using OpenACC for NekCEM simulations on OLCF’s Titan. Dr. Min has led the scaling efforts for Nek5000/RS, with problems exceeding two billion spectral elements on DOE’s leadership computers.
Michael Brazell is a Computational Scientist at the National Renewable Energy Laboratory (NREL) working in the Computational Science Center. He holds a Ph.D. in Mechanical Engineering from Clarkson University where he studied higher-order finite-element methods for computational fluid dynamics. As a postdoctoral researcher at the CFD Laboratory at the University of Wyoming, Dr. Brazell continued research along these lines applying higher-order methods to wind turbine and rotorcraft flows. At NREL, he is a key developer of the AMR-Wind code funded by the U.S. Department of Energy (DOE) Exascale Computing Project and the DOE Office of Energy Efficiency and Renewable Energy. He has also worked with NREL’s advanced wind turbine and wind farm controls group to couple real time wind data with CFD for controls applications.
Ananias Tomboulides is a Professor of Mechanical Engineering at the Aristotle University of Thessaloniki and also an Argonne affiliate. He has a long-standing collaboration with the Mathematics and Computer Science Division at Argonne National Laboratory and is one of the main developers of the open-source CFD code Nek5000/NekRS, with contributions in the areas of low Mach number combustion, multiphase boiling flows, high-order RANS models and moving mesh developments for the simulation of flows in internal combustion engines. He has served as Chairman of ERCOFTAC (the European Research Community On Flow, Turbulence And Combustion) and is a member of the Editorial Board of the Journal Flow Turbulence and Combustion (FTAC). His group has been involved in two European Centers of Excellence funded by EuroHPC, one in Exascale Combustion (CoEC) and another one in Exascale CFD (CEEC).
Matthew Churchfield is a Distinguished Member of the Research Staff at the National Renewable Energy Laboratory (NREL) working in the National Wind Technology Center. He holds a Ph.D. in aeronautical engineering from Purdue University where he studied turbulence modeling for aircraft trailing vortex flow fields. Dr. Churchfield specializes in computational fluid dynamics of wind farm and atmospheric flows, focusing mainly on large-eddy simulations. He currently is the NREL PI for a U.S. Department of Energy (DOE) project involving hurricane boundary layers and hurricane impacts to offshore wind farms and in the recent past, he was the NREL PI for a DOE project developing method to couple mesoscale and microscale atmospheric flow models. Dr. Churchfield was a chief member of NREL’s effort to develop its first-generation wind-farm large-eddy simulation tool, the Open FOAM-based Simulator fOr Wind Farm Applications (SOWFA). More recently, he has been involved in the multi-laboratory effort to develop the ExaWind next-generation wind farm simulation tools, which was supported by the DOE Exascale Computing Project and the DOE Office of Energy Efficiency and Renewable Energy.
Paul Fischer is a Blue Water Professor in Computer Science and in Mechanical Science and Engineering at the University of Illinois, Urbana Champaign, and is also a senior scientist at Argonne National Laboratory. He has pioneered the development of spectral element methods for high-performance simulations of turbulence, including the development of Nekton 2.0, which was the first commercial software for distributed-memory parallel computers. The research variant, Nek5000, is a prior Gordon Bell winner and has scaled to millions of ranks on Mira and Sequoia. It is used by over 500 researchers in industry and academia. Fischer’s current research is focused on advanced preconditioners for GPU-based solutions of PDEs and reduced-order models for turbulent flows with applications to industrial problems.
Michael Sprague is a Chief Wind Computational Scientist and Distinguished Member of Research Staff at the National Renewable Energy Laboratory (NREL) near Boulder, Colorado. Dr. Sprague has been Principal Investigator for several U.S. Department of Energy (DOE) supported projects in high-fidelity modeling and high-performance computing for wind energy, including ExaWind, which was part of the DOE Exascale Computing Project. He is currently Director of the DOE Office of Science FLOWMAS Energy Earthshot Research Center. Before coming to NREL in 2010, Dr. Sprague was an assistant professor and founding faculty member in applied mathematics at the University of California, Merced. He graduated with a PhD in Mechanical Engineering from the University of Colorado at Boulder and Bachelor of Science degree from the University of Wisconsin-Madison.
