Dynamic relaxation is an analysis method that can be used to find the static equilibrium state of a structure undergoing large displacements. Due to the algorithm's iterative nature, which derives from a damped dynamic oscillations approach, it can take considerable time when solving models with dense node counts. This research looks at a vectorised dynamic relaxation implementation, executed on a graphics card's processing unit (GPU) for the most computationally demanding calculations, and compared to traditional computations on the central processing unit (CPU), to determine if time savings can be found with the change in processor type. The programming language Python and module PyCUDA are utilised on a desktop graphics card with over two thousand shader cores, and compared to a quad-core processor using the same code layout. A vectorised formulation for bar elements and reduced degree-of-freedom beam elements is used, to analyse the absolute and relative run-times for three benchmark cases. It is found that for models with low node counts, the CPU is faster, while for medium to highly dense models, the GPU acceleration can reduce absolute run-times by a factor of three to just over eight. Most benefit is gained when the executed code allows the GPU cores to be overloaded, such that complex calculations involving large arrays of data can be spread over the many cores. This was evident in the GPU load demand, which increased steadily with increasing node count but remained below 100%, while the CPU was readily activated to maximum load for even simple models. The time savings are of interest to architects, engineers and researchers utilising the dynamic relaxation method with medium to complex models, as the benefits can be harnessed with minimal code alteration.
Read full abstract