在您指定的标准中,我认为我所知道的最接近的项目将是佛罗里达大学的稀疏矩阵集合。人们通常使用此数据集来比较稀疏的线性代数求解器,并且您可以使用非常好的Web界面,MATLAB界面或Java GUI按应用程序,非零数,矩阵尺寸等进行过滤。我已经看到了论文中列出的这些问题的表格,以及与4到8个线性代数求解器的求解器运行时比较。
我同意编译这样的数据库将是有用的,而且,我认为用友联稀疏矩阵收集方法来编译数据是一个很好的方法,对于任何考虑实现这一想法的人来说都是一个很好的开始。实际上,只要可以访问所有求解器,运行所有问题似乎都不是什么大难题。如果您可以使用求解器,并且具有安装了所有必需软件的可靠的标准参考机,则应该运行脚本并收集数据。在我看来,困难在于,如果不是开源软件,人们将不得不向您提供他们的软件。如果它是商业性的,您可以购买它,甚至可能让人们捐赠该软件,COIN-OR项目。但是,如果它既不是商业软件也不是开放源代码的研究软件,那么您需要说服人们参与其中,他们可能不信任第三方来公平地评估他们的软件。
我还知道,在优化中,有可下载的问题数据库(想到了CUTEr
)和用于优化的测试问题书。我见过很多人(例如,我特别想起Ruth Misener在AIChE 2011上的演讲),将他们的优化求解器与其他求解器在演示文稿中的问题数据库上进行比较;我不确定什么会公开发布。我知道优化中存在进行大规模比较的传统(很多求解器,很多问题)。我只是认为没有可用的在线数据库。
我认为重要的另一件事是,我们在这里区分方法和软件实现。在科学计算中,我们都会根据计算复杂性指标或我们遇到的各种问题来讨论哪种方法更快或更慢。但是,当要定量测量计算时间时,除非有人计算一种特定算法中的FLOP数量,否则必须在软件中实施该算法,然后以某种方式(例如内存使用量,挂钟执行时间等)测量性能。 )。在查看计算复杂度或FLOP计数时,评估一种方法的性能是有意义的,因为我们不需要实现来测量这些事情,但是在我们对实际挂钟运行时间感兴趣的那一刻,谈论方法就是仅用作抽象的口语设备。(例如,
我提出了方法和软件之间的区别,因为在这样的数据库中,我还可以看到随着时间的推移跟踪软件改进的可能性。因此,例如,使用PETSc或PyCLAW之类的东西,或正在测试的任何软件,很有趣的是,看看哪些问题受到软件升级的正面(或负面!)影响。对于试图确定升级其代码的金钱和人力成本是否值得的研究人员而言,这可能很有用。这种区别很重要的另一个原因是,好的方法可能会被错误地实施。我认为这种可能性有助于人们在分享研究代码时保持沉默。
我认为这个想法有什么用(我希望从中得到一些东西,并且愿意在获得博士学位后做出贡献),强调软件和方法之间的区别非常重要,因为如果我们正在运行测试问题,那么我们将要发布软件的结果。