Questions tagged «software»

有关为科学或数值计算而设计或非常适合的库和独立软件的问题。

10
关于可用的快速C ++矩阵库的建议?
是否有人对可用的快速C ++矩阵库有建议? 我的意思是以下内容: 矩阵对象具有直观的界面(例如:建立索引时可以使用行和列) 我可以使用LAPACK和BLAS做的矩阵类做任何事情 易于学习和使用的API 在Linux上安装相对容易(我现在使用Ubuntu 11.04) 对我而言,可用性比现在的速度或内存使用率更为重要,以避免过早的优化。在编写代码时,我总是可以使用一维数组(或STL向量)和适当的索引或指针算法来模拟矩阵,但我最好不要这样做,以免出现错误。我还想将精力集中在要解决的实际问题上,并编程到问题域中,而不是用有限的注意力来记住我以前将矩阵模拟为数组的所有编程技巧。 ,并记住LAPACK命令等等。另外,我必须编写的代码越少,标准化程度越高,效果越好。 稀疏还是稀疏无关紧要;我正在处理的某些矩阵将是稀疏的,但不是全部。但是,如果特定的程序包可以很好地处理密集或稀疏矩阵,则值得一提。 模板对我来说也没有太大关系,因为我将使用标准数字类型,并且不需要存储双精度,浮点型或整数型的东西。很好,但是对于我想做的事情不是必需的。

8
记录科学软件的好方法是什么?
很多时候,当我继承或遇到其他人编写的科学代码(或偶而甚至是我自己的工作)时,我注意到文档稀疏或不存在。如果幸运的话,我会看到翔实的评论。如果我很幸运,甚至还有Doxygen注释和Doxyfile,这样我就可以使用函数接口和一些格式化的HTML进行查阅。如果我非常幸运,除了Doxygen和源文件注释之外,还有PDF手册和示例,我很欣喜,因为它使我的生活变得非常轻松。 哪些信息和工具可用于记录源代码?因此,对于科学软件,哪些信息和工具可用于记录与该源代码一起的数据和结果?

11
发表强调软件的论文的场所
软件是计算科学的基础部分,并且日益被视为科学记录的必要部分。鉴于使用现有代码和经过良好测试的代码的价值,似乎有必要尽可能广泛地交流有用代码的存在并赞扬其创建者。在学术环境中,这意味着发表一些主要针对软件的论文。 谁可以在哪里发表主要着眼于计算软件的学术著作?完全清楚地说,我指的是可能不包含任何新的数学,算法等的作品-它们实际上专注于软件。 我也想听听那些向这些期刊提交过此类论文的人的来信,他们的经历是什么样的,以及他们推荐的场所。 给出的答案摘要: 数学软件交易 科学编程 SIAM科学计算期刊(SISC)软件部分 数值软件档案 开放式研究计算 计算机物理通讯 工程软件的进步 统计软件杂志 化学理论与计算杂志 生物学和医学的源代码 一号 国际量子化学杂志 流行病学 科学与工程计算 计算化学 地球科学模型开发 机器学习研究杂志 数学编程计算 开源软件杂志

8
如何确保模拟结果和论文中的结果始终保持同步?
在我的一篇论文中,我列出了一些数字结果以及一些数字。我想做的是确保论文中的数值结果始终与代码一致。现在,我只是将模拟结果的数值结果直接复制到纸张中,这非常简单且技术含量低,但容易出错,因为我可能会错误地复制结果,或者忘记将纸张结果与代码输出。 有没有一种很好的方法可以使我在论文中引用的数值结果与我的代码生成的结果保持同步?(在这里,我认为执行代码很容易且实用,只要我想更新论文即可。)这些数值结果不一定适合表格形式。有时,手稿中有表格,但更常见的是,我在方程式中将仿真参数列为数字。例如: y∗=(y∗1,…,y∗n)y∗=(y1∗,…,yn∗)\begin{align} \mathbf{y}^{*} = (y_{1}^{*}, \ldots, y_{n}^{*}) \end{align} 我想替换初始条件y ∗的元素y∗y∗\mathbf{y}^{*}用实际参数我在模拟中使用了实际参数,该模拟对常微分方程组进行了数值积分。使用一个表来处理一次性数据(例如本例)似乎是多余的,而且墨水过多。 我认为数字是一种更简单的情况:只要“构建”文档(从LaTeX源,Markdown,RST等),就可以通过执行代码来开始构建过程。但是,如果人们有更好的建议可以使模拟生成的图形与我的论文保持同步,那么我很乐意听到它们。


8
科学的工作流程管理系统
谁能推荐我一个好的工作流程管理系统(WMS),最好使用Python?到目前为止,我一直在使用GNU Make,但是它引入了一层我想避免的复杂性。一个好的WMS应该具有以下功能: 与命令行工具和Python脚本轻松集成, 简单易用,重量轻, 处理依赖关系 提供命令行界面, 提供日志记录机制, (可选)提供数据来源。 我知道WMS在生物信息学中非常流行(例如Galaxy),但是我正在寻找更通用的东西。
30 software  python 

9
什么是在C ++中运行参数研究的好方法
问题 我目前正在进行有限元Navier Stokes仿真,并且我想研究各种参数的影响。在输入文件中或通过命令行选项指定了一些参数。其他参数在Makefile中作为标志提供,因此每当我更改这些选项时,都必须重新编译我的代码。我很想获得一些有关系统地探索参数空间的好方法的建议。 是否有有用的C ++ / Python库/框架可以帮助解决此类问题?例如,发现boost.Program_options很有帮助,因为可以使用命令行参数来重载输入文件选项。我还看到有人使用工作文件非常有效地描述每种情况,并且一位同事建议将参数作为注释块写入vtu文件也可以工作。 也许根本不值得花很多时间在这上面吗?只是分散注意力和时间流失,最好只是通过测试过程中的蛮力和特设肌肉吗? 一些想法 我目前主要是手工做事,遇到以下问题: 命名测试用例。我尝试将结果存储在以运行参数命名的文件夹中,并用下划线将其分隔,例如Re100_dt02_BDF1...。如果缩写太多,它们很快就会变长或难以阅读/难以理解。另外,实数参数包括.尴尬/丑陋的a。 记录运行数据。有时我希望看到结果写入终端并也保存到文本文件中。例如,来自StackOverflow的答案有些帮助,但解决方案似乎有点麻烦。 根据参数绘制数据。从各种日志文件中收集相关数据需要花费一些时间,然后我可以将其绘制到一个文件中,如果使用更好的系统,这也许会变得更容易。 记录有关数据的注释。检查结果后,我在文本文件中写了一些注释,但要使其与结果文件夹保持同步有时很困难。

3
BLAS,LAPACK和其他线性代数库的关系是什么?
我一直在研究我一直在从事的项目的C ++线性代数库。我仍然没有掌握的东西是BLAS和LAPACK与其他线性代数库的连接。 浏览关于线性代数库的这篇文章,我发现有趣的是: 一些库独立于BLAS和LAPACK 有些需要BLAS和LAPACK 有些具有BLAS和LAPACK的可选接口 而且据我了解,您可以使用BLAS和LAPACK直接解决线性代数问题 我可以想象有些库只是用C和Fortran编写的BLAS和LAPACK库的C ++接口,而另一些则实现了自己的替代例程,但是 BLAS和LAPACK的可选接口的含义是什么?选择退出后您失去了什么,图书馆正在做什么呢? 是否有任何库提供的不仅仅是接口?例如,UMFPACK用C编写,并且具有BLAS和LAPACK的可选接口。BLAS和LAPACK不能自己做什么UMFPACK(或其他库)?

10
有关选择哪种许可证的软件的建议和经验?
软件开发人员可以根据工作目标选择适当的许可证。 任何人都可以就选择哪种许可证提供一些建议/经验吗? “放弃”所有编码工作作为开源代码的利弊是什么? 如何与希望从研究代码中受益的行业参与者打交道?
26 software 

5
是否有可以从符号公式自动生成数字精度浮点C例程的软件?
给定实变量的实函数,是否有可用的软件能够自动生成数字精确代码,以在配备IEEE 754算法的机器上对所有输入进行函数计算? 例如,如果要评估的实函数为: 该软件将考虑灾难性的取消操作,并可能考虑对某些输入集进行输出表查找,以避免计算精度下降。 或者,是否存在可以生成基于纯表的查找例程以高精度计算给定函数的软件?

3
如何在Mac上安装Fortran编译器?(OS X 10.x,x> = 4)
相关问题:科学计算和HPC中Mac OS的状态 计算科学中的大量软件包都是用Fortran编写的,并且Fortran并没有消失。还需要Fortran编译器来构建其他软件包(一个值得注意的示例是SciPy)。 但是,Mac OS X不包括Fortran编译器。我应该如何在计算机上安装Fortran编译器?
25 software  fortran 

5
PETSc和Trilinos之间的主要区别是什么?
据我所知,美国能源部的两个大型通用计算科学软件框架是 PETSc和Trilinos。乍一看,它们看起来很相似,只是语言上的差异(C与C ++)不同。这两个框架之间的主要区别是什么?应该选择哪些因素来影响一个因素?(忽略机构偏见和现有基础结构。)

8
哪种软件适合用于并行调试?
我现在不运行任何并行代码,但是我希望将来使用OpenMP和MPI的混合运行并行代码。对于我来说,运行串行项目时,调试器是非常宝贵的工具。 谁能推荐并行调试器(或多个调试器)用于调试并行软件?自由软件将是更可取的选择,但请毫不犹豫地提及有效的商业软件。

5
为了使我的计算研究具有可重复性,我应该在期刊文章中(或在线发布)包括哪些材料?
可重复性在计算科学研究中变得越来越重要。(例如,请参见《科学》杂志的Roger Peng的这篇文章;我也知道其他此类文章和网站。)但是,我不清楚我应该在期刊文章(或在线文章)中包含多少信息来制作我的计算研究具有可重复性(假设没有其他障碍,例如知识产权协议)。是否有任何指南,如果没有,人们是否可以建议研究人员应采取哪些步骤来使他们的计算科学研究可重复? 答案中特别有用的是实现这些建议的可能方法-从根本上说,工作流。最好是与系统无关或基于Linux的工作流。此外,讨论您所经历的任何相关个人经历也将有所帮助。 在我的特殊情况下,我正在写一篇理论论文,其中包含一些示例计算,这些计算很简单,可以在MATLAB中完成。我认为,在这种情况下,包括MATLAB脚本,并注意计算机上特定版本的MATLAB,足以确保可重复性。但是,我敢肯定还有更复杂的场景,有关如何进行可重复研究的建议对于将来的项目很有帮助。

12
是否可以使用Octave学习MATLAB编程?
此问题是从“交叉验证” 迁移而来的,因为可以在“计算科学堆栈交换”上回答。 迁移 7年前。 我想学习MATLAB编程,这样我就可以自己进行一些研究/分析,也可以研究/修改一些我在网上找到的MATLAB脚本。 但是,问题是我买不起MATLAB。据我所知,GNU Octave与MATLAB兼容。但是,Octave面临的挑战是文档非常稀疏。 因此,一方面,MATLAB过于昂贵(-ve),但在线上却有很多不错的文档,教程和脚本(+),而Octave是免费的(例如在啤酒中),尽管(可以理解)它缺少全面的文档,等等。 。 我正在考虑下载和安装Octave,但要使用MATLAB文档(和脚本)来帮助我开始。我知道Octave和MATLAB之间存在一些差异-我想弄清楚的是,差异是否足够大以阻止我的努力(有效)“使用Octave学习MATLAB”。 欢迎任何建设性的反馈。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.