×

研究用于数值方法和有限差分格式的C++可变模板。 (英语) Zbl 1466.65061号

摘要:本文研究了可变模板在数值方法和有限差分格式中的应用。特别地,介绍了一种在C++和CUDA中基于数组计算的表达式模板框架中定义多元函数的有效方法。该方法的优点之一是易于计算领域的用户使用。用户可以使用任意数量的输入参数定义和使用自己的函数,而无需了解模板编程。对于三个不同的函数,将所提出的方法对不同大小的数组的效率与C++中的其他实现以及Fortran中的实现进行了比较。对C++实现进行了Roofline分析。此外,对于不同的编译器,还展示了该方法在编译时间、可执行文件大小以及矢量化状态方面的性能。对使用CUDA的图形处理单元(GPU)进行了类似的比较,并展示了该方法的效率。结果表明,对于任何数组大小,本方法在计算时间、编译时间和可执行文件大小方面都有很好的性能。此外,可变模板还用于定义线性和非线性有限差分格式。将三种有限差分格式的性能与普通C实现进行了比较。结果表明,针对非线性方案提出的方法与普通C实现具有相同的性能。最后,作为一个实际应用,进行了两个数值模拟,即在CPU上模拟铅酸蓄电池的放电过程和在GPU上使用高阶加权ENO格式模拟二维Riemann问题。

MSC公司:

6500万06 含偏微分方程初值和初边值问题的有限差分方法
65-04 与数值分析有关的问题的软件、源代码等
35-04 偏微分方程相关问题的软件、源代码等
65日元10 特定类别建筑的数值算法
PDF格式BibTeX公司 XML格式引用
全文: 内政部

参考文献:

[1] https://www.boost.org/doc/libs/1_72_0/libs/numeric/ublas/doc/index.html。
[2] http://www.openfoam.org。
[3] http://www.overtureframework.org。
[4] http://www.dun-project.org。
[5] https://www.cs.virginia.edu/stream/peecee/Bandwidth.html。
[6] K.Alexander和T.Eitan,无黎曼问题求解器的气体动力学二维黎曼问题的求解,Numer。方法偏微分方程,18(2002),第584-608页,https://doi.org/10.1002/num.10025。 ·Zbl 1058.76046号
[7] M.S.Aln \aes、J.Blechta、J.Hake、A.Johansson、B.Kehlet、A.Logg、C.Richardson、J.Ring、M.E.Rognes和G.N.Wells,FeniCS项目1.5版,架构。Numeri.软件,3(2015),https://doi.org/10.11588/ans.2015.100.20553。
[8] A.Aragon,用于高性能计算的任意库张量的C++11实现,Compute。物理。社区。,185(2014),第1681-1696页,https://doi.org/10.1016/j.cpc.2014.01.005,由1引用。
[9] P.Aubert、N.Di Ceísareí和O.Pironneau,《使用表达式模板在c++中进行自动分化》和。应用于流控制问题,计算。视觉。科学。,3(2001),第197-208页,https://doi.org/10.1007/s007910000048。 ·Zbl 0966.68029号
[10] D.S.Balsara和C.W.Shu,精度越来越高的保单调加权非振荡格式,J.Compute。物理。,160(2000),第405-452页·Zbl 0961.65078号
[11] W.Bangerth、D.Davydov、T.Heister、L.Heltai、G.Kanschat、M.Kronbichler、M.Maier、B.Turcksin和D.Wells,文本交易。II库,版本8.4,J.Numer。数学。,24 (2016). ·Zbl 1348.65187号
[12] W.Bangerth、R.Hartmann和G.Kanschat达成协议。II-通用面向对象有限元库,ACM Trans。数学。软件,33(2007)·Zbl 1365.65248号
[13] M.Blatt和P.Bastian,《应用并行计算》中的迭代求解器模板库。《科学计算的最新进展》,B.K\ragstro¨m、E.Elmroth、J.Dongarra和J.Wasöniewski编辑,《计算讲义》。科学。4699,Springer,纽约,2007年,第666-675页。
[14] M.Blatt和P.Bastian,《关于有限元方法迭代求解器的通用并行化》,国际计算杂志。科学。工程,4(2008),第56-69页。
[15] H.Bode,《铅酸电池》,电化学学会系列,威利,纽约,1977年。
[16] V.Esfahanian、A.B.Ansari和F.Torabi,使用模型降阶模拟铅酸蓄电池,《电源杂志》,279(2015),第294-305页。
[17] H.Gu、T.V.Nguyen和R.E.White,《铅酸电池的数学模型:放电、休息和充电》,《电化学学会杂志》,1374(1987),第2953-2960页。
[18] G.Guennebaud等人,Eigen v3,网址:http://eigen.tuxfamily.org, 2010.
[19] J.Haördtlein、A.Linke和C.Pflaum,《快速表达模板》,载于《计算科学》2005年,V.S.Sunderam、G.D.van Albada、P.M.A.Sloot和J.J.Dongarra编辑,《计算课堂讲稿》。科学。3515,柏林施普林格,2005年,第1055-1063页。
[20] W.D.Henshaw,《序曲:求解重叠网格上运动几何图形中偏微分方程的面向对象系统》,载于《第一届AFOSR动态运动会议论文集》,1996年,第281-290页。
[21] K.Iglberger、G.Hager、J.Treibig和U.Ruíde,《表达式模板重访:当前方法的性能分析》,SIAM J.Sci。计算。,34(2012),第C42-C69页,https://doi.org/10.1137/10830125。
[22] H.Jasak、A.Jemcov和U.Kingdom,OpenFOAM:复杂物理模拟的C++库,《数值动力学耦合方法国际研讨会论文集》,2007年,第1-20页。
[23] A.Logg,K.-A.Mardal,和G.N.Wells,eds.,《用有限元法自动求解微分方程》,Lect。注释计算。科学。Eng.84,Springer,柏林,2012年,https://doi.org/10.1007/978-3-642-23099-8。 ·Zbl 1247.65105号
[24] T.Malas、A.Ahmadia、J.Brown、J.Gunnels和D.Keyes,在IBM Blue Gene/P PowerPC\textup450处理器上优化流式数字内核的性能,国际高性能计算杂志。申请。,27 (2012), https://doi.org/10.1177/1094342044795。
[25] C.W.Schulz-Rinen、J.P.Collins和H.M.Glaz,二维气体动力学黎曼问题的数值解,SIAM J.Sci。计算。,14(1993),第1394-1414页,https://doi.org/10.1137/0914082。 ·Zbl 0785.76050号
[26] C.W.Shu和S.Osher,本质上非振荡冲击捕获方案的有效实现,J.Compute。物理。,77(1988),第439-471页·Zbl 0653.65072号
[27] D.Vandevorde、N.M.Josuttis和D.Gregor,《C++模板:完整指南》,第二版,Addison-Wesley,Reading,MA,2017年。
[28] T.Veldhuizen,表达式模板,C++报告,7(1995),第26-31页。
[29] H.Versteeg和W.Malalasekera,《计算流体动力学导论:有限体积法》,培生教育,伦敦,2007年。
[30] W.B.Gu、C.Y.Wang和B.Y.Liaw,铅酸电池中耦合电化学和传输过程的数值建模,J.electrochemical Soc.,144(1997),第2053-2061页。
[31] S.W.Williams、A.Waterman和D.A.Patterson,《屋顶线:浮点程序和多核架构的洞察视觉性能模型》,加州大学伯克利分校,加利福尼亚州伯克利,2008年。
此参考列表基于出版商或数字数学图书馆提供的信息。其项与zbMATH标识符进行启发式匹配,可能包含数据转换错误。在某些情况下,zbMATH Open的数据对这些数据进行了补充/增强。这试图尽可能准确地反映原始论文中列出的参考文献,而不要求完整或完全匹配。