# Multi-GPU Acceleration for Finite Element Analysis in Structural Mechanics
## 5 Numerical Experiments  
We evaluate the benefits and limitations of using a distributed conjugate gradient iterative solver preconditioned with aggregation AMG using multi-GPU systems. We test the scalability of these techniques using many-core architectures, analyzing the pros and cons compared to efficient multi-core systems using the same approach. The numerical experiments consist of the resolution of finite element models with different discretization sizes until the hardware limitations of many-core architectures do not permit us to address the problem. These experiments cover examples addressing two- and three-dimensional problems using structured and unstructured meshes with different finite elements. We run the numerical experiments using a desktop computer with an Intel Xeon W-2145 CPU at 3.70 GHz with 128 Gb of RAM and four Nvidia Titan V graphics cards. Table 1 summarizes the features and specifications of such devices. The Nvidia Titan V uses the processor GV100 based on Volta architecture, which includes \(21.1\times 10^{9}\) of transistors, 5120 CUDA cores operating from 1200 MHz (base) to 1455 MHz (boost), 12 GB of HBM2 memory operating at 850 MHz, and a memory interface of 3072 bits, which provide a total memory bandwidth of around 652.8 GBps. This graphics card includes specific hardware to perform double-precision floating-point operations in scientific computing. The theoretical computational performance is 12.29 TFLOPS and 6.14 TFLOPS for single- and double-precision floating-point operations, respectively. The thermal design power (TDP) of Nvidia Titan V is around 250 W, which permits us to add the four graphics devices using a high-power PSU. Figure 2 shows the multi-GPU system considering cooling issues: the graphics cards are physically separate to facilitate heat dissipation. We run all the experiments using multi-core and many-core architectures with different computing resources to evaluate the scalability and acceleration. The multi-core numerical experiments use one, two, four, and eight cores. The Intel Xeon W-2145 microprocessor can use two threads per core using multithreading, supporting the operating system running 16 threads concurrently. Multithreading aims to increase the utilization of core resources by exploiting function parallelism and ILP complementary techniques. In our experience, multithreading with the massive use of Arithmetic Logic Units (ALUs) serializes the execution of threads, limiting the theoretical performance using multi-core systems. For this, the experiments do not use more than the maximum number of physical cores. The many-core numerical experiments use one, two, three, or four Nvidia Titan V graphics cards. The source code of the numerical experiments is compiled using NVIDIA CUDA Toolkit 12.6 and runs on a 64-bit Ubuntu 20.04.6 LTS OS with the NVIDIA Driver Version 550.107.02. The battery of experiments consists of three finite element models with different meshes and finite elements. We parameterize these models with the number of divisions _div_ of the geometry. By modifying this parameter _div_, we obtain systems of equations of different sizes, which are solved using the distributed conjugate gradient solver preconditioned with aggregation AMG using multi-core and many-core computing. We specify the geometric parameters and material properties of experiments in Table 2. The stopping criterion of the distributed conjugate gradient is 1 \(\times 10^{-8}\) for all the experiments. We report the wall-clock time for all the numerical experiments. We also present the memory device and the ratio between the setup and solving stages for experiments using many-core architectures. We calculate the speedup for all the experiments of the multi-core system using from one to eight CPUs. These numerical results provide the information to highlight the benefits and limitations of using many-core architectures in structural mechanics problems.