数字代码结果数据库

计算科学 pde 测试
2021-12-08 22:42:29

在数值方法文献中,许多研究论文包括对新算法变体的描述,然后是一些测试问题,将新方法与一种或两种现有方法进行比较。这使得很难确定

  • 新方法将如何处理其他感兴趣的问题
  • 新方法将如何与其他现有方法进行比较

当然,对于决定是否采用新方法的人来说,这两个问题通常都很关键。为了改善这种情况,如果可能的话,让人们用他们的方法运行大量的测试问题(参见这个问题)并将结果编目到数据库中以便与其他方法进行比较,这似乎是可取的。然后,科学家或工程师可以查询数据库,可能指出哪些解决方案/问题特征对他们最重要(准确性、效率、定性属性等),并对数据库中所有方法的性能进行定量比较。

我意识到实现这个想法有很多困难(主要是:让人们实际运行所有这些问题,并测量计算成本)。但我的问题是:是否存在这样的结果数据库?(比如在某个特定的子领域)或者在任何地方都实施了这样的方法?

到目前为止发布的两个答案都是关于问题数据库的。我在问结果数据库。

4个回答

在您指定的标准中,我认为我所知道的最接近的项目是佛罗里达大学稀疏矩阵集合人们经常使用这个数据集来比较稀疏线性代数求解器,您可以通过非常好的 Web 界面、MATLAB 界面或 Java GUI 按应用程序、非零数、矩阵维数等进行过滤。我已经看到论文中列出了这些问题的表格,以及求解器运行时间与 4 到 8 个线性代数求解器的比较。

我同意编译这样的数据库会很有用,此外,我认为用于编译数据的 UF 稀疏矩阵收集方法是一个很好的方法,对于任何想要实现这个想法的人来说都是一个很好的开始。在实践中,运行所有的问题似乎不是什么大困难,只要你能接触到所有的求解器;如果您可以访问求解器,以及安装了所有必要软件的可靠标准参考机,那么应该是运行脚本和收集数据的问题。在我看来,困难在于让人们给你他们的软件,如果它不是开源的。如果它是商业的,你可以购买它,甚至可能让人们捐赠软件,硬币或项目。但如果研究软件既不是商业也不是开源的,那么你需要说服人们购买这项工作,他们可能不相信第三方会公平地评估他们的软件。

我还知道,在优化方面,有可下载的问题数据库(我想到了CUTEr )和用于优化的测试问题书籍。我见过人们(例如,我特别想到了 Ruth Misener 在 AIChE 2011 上的演讲)在演示文稿中比较他们的优化求解器与其他求解器的问题数据库;我不确定什么会公开发布。我知道大规模比较的优化有一个传统(许多求解器,许多问题);我只是不认为有可用的在线数据库。

我认为重要的另一件事是我们在这里区分方法软件实现. 在科学计算中,我们都根据计算复杂度指标或我们对各种问题的经验来讨论哪些方法更快或更慢。然而,在定量测量计算时间时,除非计算特定算法中的 FLOP 数,否则必须在软件中实现该算法,然后以某种方式测量性能(内存使用情况、挂钟执行时间等) .)。在查看计算复杂度或 FLOP 计数时评估方法的性能是有意义的,因为我们不需要实现来衡量这些事情,但是当我们对实际挂钟运行时间感兴趣时,谈论方法是仅用作抽象的口语设备。(例如,

我提出方法和软件之间的这种区别是因为在这样的数据库中,我还可以看到随着时间的推移跟踪软件改进的可能性。因此,例如,对于诸如 PETSc 或 PyCLAW 之类的东西,或者任何正在测试的软件,看看软件升级会对哪些问题产生积极(或消极!)影响会很有趣。这对于试图决定是否值得任何潜在的金钱和人力成本来升级他们的代码的研究人员可能很有用。这种区别很重要的另一个原因是,一个好的方法可能执行得不好。我认为这种可能性导致人们有​​时在分享他们的研究代码时保持沉默。

我认为无论这个想法是什么(我希望它有什么结果,并且愿意在我获得博士学位后做出贡献),强调软件和方法之间的区别很重要,因为如果我们正在运行测试问题,我们就是将发布软件的结果。

已经尝试创建一个“困难”积分列表以进行数值计算(参见 Walter Gautschi、R​​obert Piessens 等人的论文),但没有正式的数据库。

在 ODE 领域,有IVP 测试集,即初始值问题的测试集。

我不熟悉这样的数据库,但我认为很难以有用的方式定义。在我看来,更好的系统是以可运行的形式发布代码,以便用户可以扩展以进行尽可能全面的测试。在社区存储库方面,GertVdE 提到的IVP 测试套件还包含驱动程序代码,用于针对测试问题运行多个已发布的 ODE/DAE 求解器。在我的出版物中,我尝试发布用于创建分析输出数据并创建出现在论文中的图表和表格的代码和所有脚本。

基准问题的计算气动声学研讨会对气动声学问题也有类似的目标。他们首先提前提出一组基准问题,然后让人们使用自己的方法解决这些问题并比较结果。例如,这是第四次会议的记录:http ://www.archive.org/details/nasa_techdoc_20040182258

尽管据我所知,他们并没有比较他们的代码相互之间的效率,但他们主要关注的是准确性。