13、Finch:用于有限元和有限体积法的Julia领域特定语言与代码生成

Finch:用于有限元和有限体积法的Julia领域特定语言与代码生成

1. 引言

在大规模数值求解偏微分方程(PDEs)时,需要在利用问题或硬件细节的高度优化代码与易于适应变化的可扩展代码之间进行权衡。随着技术的快速发展和向异构系统的转变,可扩展代码的价值日益凸显,这促使人们从高性能计算专家编写的手写代码转向通过高级领域特定语言(DSL)生成的代码。此外,对于中等规模的问题,虽然需要良好的性能,但开发最优代码的成本可能并不合理,此时领域科学家需要自己开发软件或从通用库中拼凑代码。同时,在多物理系统中,有限元(FE)或有限体积(FV)等离散化方法的选择也非常重要,不同方面的系统可能更适合不同的方法。

目前已经有许多用于求解PDEs的DSL。一端是高级选项,如Matlab工具箱和Comsol,它们通用性强,不需要高水平的编程技能,但缺乏可定制性,底层代码通常对用户隐藏且难以修改。另一端是低级库,如Nektar++和deal.II,它们提供针对特定目的优化的可定制组件,但需要用户具备更多的编程输入和技能,也难以修改代码以适应变化。

本文介绍的Finch是一种用于求解PDEs的DSL,旨在成为一种折中的解决方案。它具有离散化无关性,目前支持有限元和有限体积方法,目标是使领域科学家能够为从小型笔记本电脑模拟到需要现代超级计算机可扩展性的大型系统等各种问题创建高效代码。实现这一目标的两个关键思想是模块化软件设计和为外部软件框架生成代码。

1.1 模块化软件设计

Finch不依赖于单一的通用代码,而是使用一组模块来提供适应问题需求或资源的灵活性。例如,它支持多种离散化方法,包括FE(CG和DG变体)和FV,以及数值工具,如PETSc的线性求解器、基于

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值