GPU Implementation of Finite Difference Solvers

GPU Implementation of Finite Difference Solvers
复制标题

DOI:
10.1109/whpcf.2014.10
复制
发表时间:
2014-11
期刊:
2014 Seventh Workshop on High Performance Computational Finance
影响因子:
--
通讯作者:
M. Giles;E. László;I. Reguly;J. Appleyard;Julien Demouth
M. Giles;E. László;I. Reguly;J. Appleyard;Julien Demouth
中科院分区:
其他
文献类型:
--
作者:
M. Giles;E. László;I. Reguly;J. Appleyard;Julien Demouth

文献摘要

相似文献

本文讨论了在GPU上实施一因素和三因素PDE模型。都考虑了显式和隐式的时间构建方法,后者需要解决多个三对角的方程式的解决方案。由于涉及的少量数据,一个因子模型主要是在计算限制的,而其中的一部分非常好。达到峰值计算能力。性能的关键在于对明确方法的登记册和混音说明的大量使用,以及用于解决隐性求解器的三个基准系统的非标准混合动力托马斯/PCR算法,涉及更多数据,因此涉及更多的数据,因此它们的执行在与主要图形内存的计算和数据通信之间更加平衡。但是,再次有可能在这两种措施上达到理论峰值性能的良好部分。高性能需要特别仔细地注意数据传输中的合并,使用小组换位的局部共享存储器,以及填充以避免共享内存库。计算结果包括与Sandy Bridge和Haswell Intel Xeon处理器的计算进行比较,并使用MultinTimReading进行比较和AVX矢量化。
This paper discusses the implementation of one-factor and three-factor PDE models on GPUs. Both explicit and implicit time-marching methods are considered, with the latter requiring the solution of multiple tridiagonal systems of equations.Because of the small amount of data involved, one-factor models are primarily compute-limited, with a very good fraction of the peak compute capability being achieved. The key to the performance lies in the heavy use of registers and shuffle instructions for the explicit method, and a non-standard hybrid Thomas/PCR algorithm for solving the tridiagonal systems for the implicit solverThe three-factor problems involve much more data, and hence their execution is more evenly balanced between computation and data communication to/from the main graphics memory. However, it is again possible to achieve a good fraction of the theoretical peak performance on both measures. The high performance requires particularly careful attention to coalescence in the data transfers, using local shared memory for small array transpositions, and padding to avoid shared memory bank conicts.Computational results include comparisons to computations on Sandy Bridge and Haswell Intel Xeon processors, using both multithreading and AVX vectorisation.