2003-10-03
修订历史 | ||
---|---|---|
修订版 1.2 | 2004-10-19 | 修订者: M. W |
1. 修正和新增链接 | ||
修订版 1.1 | 2004-06-21 | 修订者: M. W |
更新和评估的发行版 | ||
修订版 1.0 | 2003-11-18 | 修订者: JP |
文档由 LDP 审查。 | ||
修订版 0.0 | 2003-10-01 | 修订者: M. W |
第一个草案提出 |
本文档《GNU/Linux 上使用自由软件进行科学计算指南》的版权 (c) 归 Manoj Warrier 所有。 允许根据 GNU 自由文档许可证 1.1 版或自由软件基金会发布的任何后续版本复制、分发和/或修改本文档; 没有不变章节,没有封面文字,没有封底文字。 许可证的副本可在此处获得 here
对本文档的内容不承担任何责任。 使用概念、示例、链接和信息的风险完全由您自己承担。 可能存在错误和不准确之处,可能会损坏您的系统、浪费您的时间等... 请谨慎操作,尽管这种情况不太可能发生,但作者不承担任何责任。
所有版权归各自所有者所有,除非另有特别说明。 本文档中使用某个术语不应被视为影响任何商标或服务标志的有效性。 特定产品、软件或品牌的命名不应被视为认可
我没有使用链接中提供的许多软件应用程序。 有太多应用程序做同样的事情,不能指望一个人使用所有这些应用程序。 在一本关于使用 GNU/Linux 进行科学计算的书中,人们会提到自己最喜欢的工具来执行任务并详细描述它。 然而,这是一个 howto,提供了各种可用的自由科学计算工具的链接,可能包含一些承诺很多但交付很少的软件的链接,反之亦然。
本 howto 主要由 http://Scilinux.sourceforge.net 上提供的链接组成,该链接由于名称冲突已被解散。 最好的替代方案似乎是将其制作成 Linux 文档并将其托管在 LDP 站点上。 另一个原因是似乎有很多自由软件应用程序做同样的事情。 我们希望提供可用软件的链接,从而使科学界可以轻松地做出选择,而无需花费太多时间。
在本文档中,我很荣幸地感谢
Linus Trovalds、Richard M. Stallman 及其快乐的伙伴,感谢 Linux、GNU 以及间接拓宽了各种并非真正明显的视角。
来自印度等离子体研究所的大量同事和朋友,感谢他们在不同时间的讨论。
Marcel Bose、Ivan Lamouret、K. Scott Hunziker、Livine Christin、W. Herbert、Simon Pinches 和许多其他人,感谢他们建议本文档中提到的各种链接。
我的妻子 Vasudha 允许我做我想做的事,并用“让我们希望你至少能完成这个项目”之类的评论来鼓励我
Shishir 和 Ashoka 是本文档的共同作者,因为收集这些链接是 Shishir 的想法,并且 Ashoka 总是通过提供链接、建议和第二种观点来做出贡献。 他们也将帮助我维护这个 HOWTO。
GNU/Linux 可能是科学计算的首选平台。 存在各种高级语言、调试工具和其他用于编程的代码开发工具、用于求解各种类型方程的数值子程序、绘图和可视化软件包、可以显示方程和图形的文字处理软件,实际上还有并行编程软件,可以使用现成的 PC 部件和一些硬件来构建超级计算机。 本文档旨在提供一个自由软件列表,用于执行上述任务以及指向关于如何设置和使用这些软件应用程序的教程和其他文档的链接。
本文档的目的不是提供指向 GNU/Linux 系统可用的特定主题的自由软件的链接。 它的目的是展示如何最好地使用 GNU/Linux 来处理科学计算任务。 希望对特定主题感兴趣的人或机构列出、编译可用于该主题的自由软件列表……例如,请参阅 The Random Factory 上的Linux for Astronomy, Linux for Biotechnology 和 Linux for Chemistry 。 另一个包含大量(商业和免费)科学软件链接的站点是Scientific Applications on Linux。 GNU 软件目录还包含指向本 howto 中提供的许多链接以及更多特定主题软件的链接。 您可能还想查看 Freshmeat.net 上的 科学与工程 部分。
提供的软件链接分为
只需在您的 PC 上安装 GNU/Linux 即可使其成为强大的工作站。 然而,各种流行的发行版并没有使它成为理想的科学计算机器所需的所有工具。 本 HOWTO 旨在通过创建对科学计算有用的自由软件列表来填补这一空白。 假定阅读本文档的人员已经拥有一台安装了 Linux 和 GNU 实用程序的 PC。 对于那些没有此类设置并想安装 GNU-Linux 的人,可以查看 GNU/Linux 系统,以获取有关安装 GNU/Linux 的文档链接,以及如何开始使用 GNU/Linux。 最近,Dirk Eddelbuettel 努力创建一个科学计算环境 Quantian,这可能是第一个专为科学家量身定制的 GNU-Linux 发行版。 我查看了最新的版本,它几乎包含了本文档中提到的所有软件包以及许多未提及的软件包。 可以说,如果您拥有任何通过 rpms 管理软件包的 Linux 发行版或任何基于 debian 的系统,您会找到这些软件包的预编译二进制文件,并且不必浪费太多时间来安装它们。
代码开发主要包括编程语言、调试工具、版本管理工具、编译工具和集成开发环境 (IDE),其中上述所有工具都作为一个软件应用程序耦合在一起。
提供了用于科学计算的各种编译器的链接,例如 FORTRAN、C、C++、Java 以及最近的 Python。
GNU Compiler Collection : GNU 的项目,旨在生产世界一流的优化编译器。 它适用于多种架构和不同的环境。 目前,GCC 包含 C、C++、Objective C、GNU Fortran-95、Java 和 Ada 的前端,以及这些语言的库(libstdc++、libgcj 等)。
有关使用各种 GCC 编译器的手册,请查看 The GCC online documentation
g77 :FORTRAN 77 的 GCC 前端。它是一个非常好的 FORTRAN77 编译器。 但是,它没有 -r8 选项,该选项会将程序编译为双精度。 这可能是一个好的编译器设计理念,但在将代码从 SUN / DEC / HP 工作站移植到 Linux 系统时,在许多情况下会带来问题。 g77 手册可在 The Gcc Online documentation 站点上找到。
gfortran。 我很高兴通过邮件收到此链接。 自从我开始使用 GNU C 编译器进行科学计算以来已经有 3 年了,因为当时没有可用的“真正免费”的 FORTRAN-95 编译器。 我感谢 Paul Thomas 提供此链接。
g95。 据报道,上面的 gfortran 和 g95 来自同一 CVS 树的分支。 有一个令人印象深刻的程序列表,可以使用此编译器进行编译和运行。
fort77 和 f2c:fort77 是一个 perl 程序,它透明地调用 f2c 命令(一个 Fortran 到 C 的转换器),因此它可以像真正的 Fortran 编译器一样使用。 Fort77 可用于编译 Fortran、C 和汇编程序代码,并且可以将代码与 f2c 库链接。 如果安装 fort77,还需要安装 f2c 软件包。 这没有“-r8”问题。 您可以从上面的链接下载 fort77 和 f2c。
lush:一种面向对象的编程语言,它结合了解释型语言的灵活性和编译型语言的效率。 它具有与数值库(GSL、LAPACK、BLAS)、图形库(OpenGL)的完整接口,允许创建图形和 3D 动画以及许多其他听起来好得令人难以置信的功能。 我还没有尝试过这个,但它听起来很有希望。
科学 Python:您可能需要为了您的科学计算需求而探索 Python。 Python 是一种解释型的、交互式的、面向对象的编程语言。它有许多用于数值计算、绘图、数据存储的扩展,并结合 Tk 可以让您为您的代码开发非常好的 GUI。最令人兴奋的是它简化了编程,因为它有几乎任何东西(向量、张量、变换、导数、线性代数、傅里叶变换、统计等)的模块可用。您还可以从 Python 包装 C 和 Fortran 库。最后,如果您想编写自己的数值方案,您可能会发现它在 Python 中更简单。还有与 netCDF(可移植二进制文件)、MPI 和 BSPlib(并行编程)的接口。
您可以在这里进一步探索 Python 在科学计算中的应用
科学-Python:用于 Python 上进行科学计算的模块集合。所有必要的模块都可以从这里下载为 tar 文件或 RPM 文件。维护者 Konrad HINSEN 还有一个关于 Python 中的科学计算 的精彩教程。
SciPy:一个用于 Python 的科学工具的开源库。它包括用于图形和绘图、优化、积分、特殊函数、信号和图像处理、遗传算法、ODE 求解器等的模块。
在本节中,给出了主要用于 GCC 和 FORTRAN 的调试工具的链接。据我了解,python 有一个内置的调试模块,但我没有使用过它。调试器的目的是让您在程序执行时查看程序内部发生的事情,或者程序在崩溃时/如果崩溃时正在做什么。
Ftnchek: 一种 FORTRAN 检查器,旨在检测 Fortran 程序中编译器通常不会检测到的错误。因此,最好在 FORTRAN 程序编译没有错误后运行 ftnchek。它的目的是帮助用户查找语义错误。语义错误在 Fortran 语言中是合法的,但是浪费或可能导致不正确的操作。在线 手册 可用。该项目正在寻找志愿者将 ftnchek 提升到 Fortran 90 标准。
gdb :使用 GCC 支持的语言编写的所有程序都可以使用 *gdb* 进行调试,*gdb* 是一个出色的交互式命令行调试器。您可以使用 -g 选项编译您的程序,然后编译您的代码,并将调试信息插入到可执行文件中。它可以启动您的程序,在指定的条件下和指定的位置停止您的程序,检查您的程序停止时发生了什么。在一个包含多个级联调用各种函数的庞大代码中,它可以回溯函数调用。您还可以 下载文档 *使用 GDB 进行调试* 和快速参考卡。
xxgdb: 它是 gdb 调试器的前端。对于 gdb 初学者很有用,因为它将整个 gdb 命令作为按钮列出,并提供一个区域用于查看源代码,可以在其中通过单击鼠标包括断点等,另一个区域用于查看调试结果。
DDD: GNU 数据显示调试器,GNU DDD,是命令行调试器(如 GDB、DBX、WDB、Ladebug、JDB、XDB、Perl 调试器或 Python 调试器)的图形前端。除了“通常”的前端功能(例如查看源文本)之外,它还具有良好的交互式图形数据显示,其中数据结构显示为图形。点击此链接获取 DDD 手册,格式为 postscript / HTML / PDF。
如果您正在进行任何认真的代码开发,那么花一些时间学习使用以下版本控制工具之一(我使用的是 cvs ...)将是值得的。
并发版本系统:CVS 是在 Linux 操作系统上运行的最流行的版本控制系统之一。流行的 Linux 项目,如 Apache、EGCS、GIMP 等,都在使用 CVS 来协调他们的工作...... 这是上面链接的 URL 对他们工作的描述。
关于 CVS 的教程可在 Gentoo Linux 文档 中找到,一本免费的 CVS 书籍可在 这里 找到
项目修订控制系统:PRCS,项目修订控制系统,是一组工具的前端,它(像 CVS 一样)提供了一种将文件和目录集作为一个实体处理的方法,保留整个集合的一致版本。 PRCS 主要由 Paul N. Hilfinger 设计,并由 Luigi Semenzato 和 Josh MacDonald 提供输入和修改。 PRCS 由 Josh MacDonald 编写和维护。它的目的与 SCCS、RCS 和 CVS 类似,但(至少根据其作者的说法)它比任何这些系统都简单得多。此页面是有关 PRCS 最新进展的信息的所在地。
Gbuild:gbuild 是用 Bourne shell 语言编写的脚本,旨在简化软件包维护,允许您自动执行从 CVS 更新代码、编译、构建 tar/rpms/srpms 包的过程。 gbuild 依赖的某些功能的某些外部脚本是用 Perl 编写的。 gbuild 是在 GPL 下发布的。
集成开发环境 (IDE) 对于构建代码非常有用,理想情况下,它应该包含上述所有工具(即编译器、调试器和版本控制工具)。此外,IDE 通常还提供 makefile 生成器、文档帮助、在线帮助手册等。
Kdeveloper :一个易于使用的 Linux C/C++ IDE(集成开发环境)。它支持 KDE/Qt、GNOME、纯 C 和 C++ 项目。该网站有很多文档.....一个高度可浏览的软件开发人员网站。具体来说,KDevelop 管理或提供
C++ 编程所需的所有开发工具,如编译器、链接器、automake 和 autoconf; KAppWizard,它生成完整的、随时可用的示例应用程序; 类生成器,用于创建新类并将它们集成到当前项目中; 文件管理,用于包含在项目中的源文件、头文件、文档等; 使用 SGML 编写的用户手册以及使用 KDE 外观和风格自动生成 HTML 输出; 项目类的自动 HTML 格式的 API 文档,并交叉引用所使用的库; 应用程序的国际化支持,允许翻译人员轻松地将他们的目标语言添加到项目中; KDevelop 还包括 WYSIWYG(所见即所得)的用户界面创建,并带有内置的对话框编辑器; 通过集成 KDbg 调试您的应用程序; 使用 KIconEdit 编辑特定于项目的像素图; 通过将其添加到“工具”菜单中,根据您的个人需求包含您需要的任何其他程序用于开发。
VDKbuilder:VDKbuilder 是一种工具,可帮助程序员在集成环境中构建 GUI 界面、编辑、编译、链接和调试。 使用 VDKBuilder 可以大大缩短开发时间,因为所有与 GUI 构建和信号处理相关的代码都会自动生成、维护和更新。 它是在 GNU 公共许可证下分发的。 访问该站点以下载该软件。
以下所有链接都是用于 Linux 上的科学计算的免费高级语言和数学软件包。 这些软件包通常就像一个数学实验室,可以在其中进行数值计算,并且通常有自己的解释型语言。 它们要么链接到流行的(免费)绘图软件包,要么拥有自己的图形和绘图功能。 它们还提供 I/O 文件的能力,并与 C、C++、Fortran 等其他编程语言连接...... 现在其中一些具有并行编程能力。 我没有包括 MuPAD,一个很好的符号数学软件包,因为它并不是真正的免费的。 请检查他们的 免费许可证 是否适合您。
Octave:一个用于数值计算的优秀软件包。 它使用 gnuplot 进行绘图并提供在线帮助。 它也很容易扩展(即可以使用它自己的语言或使用用 C、C++、Fortran 或其他语言编写的动态可加载模块来编写新的函数、过程)。 详细的手册可在此处 找到。 您可以在此处 找到 一个基于 GNOME 的前端。 它是在 GNU 公共许可证下分发的。
Scilab:另一个出色的数值计算软件包,具有良好的用户界面和非常好的在线可点击帮助。 它的绘图和图形功能也非常令人印象深刻。 它还提供了与 Fortran 和 C 的简单接口。 它有自己的 免费许可证。
Yorick:Yorick 是一种快速的解释型语言,专为科学计算和数值分析而设计。 语法类似于 C,但变量不需要声明。 它提供了一个基于 X 窗口的交互式图形软件包。 支持 X-Y 图、四边形网格、填充网格、单元阵列和轮廓。 您可以将编译的例程嵌入到 Yorick 中,以解决解释器速度太慢的问题。 它也可用作大型物理模拟程序的前后处理器。 类似于教程的手册可在此处 找到。 Yorick 是开源软件,版权归加州大学评议会所有。
Algae:正如上面的链接所描述的那样,Algae 是一种用于数值分析的解释型语言。 它被开发为一种快速而通用的工具,能够处理大型问题。 Algae 包括编程语言 Algae 和解释器 algae。 它的功能包括速度(通常比 octave、RLaB 和 Scilab 快得多)、稀疏数组的存储以及代码分析功能(以检查您的代码花费时间的地方)。 用户手册可在此处 找到。 它是在 GNU 通用公共许可证下分发的。
YACAS:正如上面的链接所描述的那样,“YACAS 是一种易于使用的通用计算机代数系统,一种用于数学表达式的符号操作的程序。它使用自己的编程语言,该语言专为符号和任意精度的数值计算而设计”。 文档(用户手册、教程等)的链接可在此处 找到。 它是在 GNU 通用公共许可证下分发的。
RLAB:上面的链接这样描述它,“Rlab 是一种交互式的、解释型的科学编程环境。 Rlab 是一种非常高级的语言,旨在提供快速原型设计和程序开发,以及轻松的数据可视化和处理”。 它是在 GNU 通用公共许可证下分发的。 作者 Ian Searle 在 Linux Journal 上发表了一篇题为 Rlab 简介 的文章,正如他提醒我们的那样,这篇文章有点过时了,并且还提供了一个 参考手册 。
Maxima:Maxima 是一个符号计算程序。上面的链接将其描述为:“Maxima 是 DOE Macsyma 的后代,它起源于 20 世纪 60 年代末的 MIT。它是唯一一个基于该努力且仍然公开可用并拥有活跃用户社区的系统,这归功于其开源性质。Macsyma 是新一代计算机代数系统的先驱,为 Maple 和 Mathematica 等程序铺平了道路。Macsyma 的这个特定变体由 William Schelter 从 1982 年一直维护到 2001 年去世。1998 年,他获得了在 GPL 下发布源代码的许可”。
R 统计计算项目:R 是一种用于统计计算和图形的语言和环境。它为大型数据阵列的统计分析和图形设施提供了大量的工具集合。R 也是一种完整的有效编程语言。对于计算密集型任务,C、C++ 和 Fortran 代码可以在运行时链接和调用。关于安装、入门、编写扩展等的综合手册可在此处 获取。它以 GNU 通用公共许可证发布。
gTybalt:gTybalt 是迈向自由计算机代数系统的一步。它是面向对象的,允许在 C++ 中进行符号计算。它是高效的,因为使用 gTybalt 开发的解决方案可以用 C++ 编译器编译,并独立于 gTybalt 执行。数学公式使用 TeX 字体进行可视化,并且可以轻松转换为 LaTeX。直到我查看了 gTybalt 手册,我才意识到它具有良好的图形功能。它以 GNU 通用公共许可证发布。
JACAL:正如上面的链接所描述的那样,“JACAL 是一个交互式符号数学程序。JACAL 可以操作和简化包含数字、变量、根式以及代数微分和全纯函数的单值和多值代数表达式的方程、标量、向量和矩阵”。
bc:bc 是一种任意精度数值处理语言。它支持语句的交互式执行。单击此处获取各种格式的手册。它是 GNU 软件,并根据 GNU 通用公共许可证分发。
GNU/Linux 上使用自由软件进行科学计算的最佳情况是 GNU 科学库 GSL。然而,它只有 C 语言的源代码,这会让使用 FORTRAN 的人感到失望。抓住这个机会,建议 GSL 是开始学习使用 C 的另一个原因(除了 GCC C 编译器,以及 C 编程的优势)。此外,数值方法和库的两个最佳源代码存储库是 Netlib 和 GAMS。有一些新的数值软件包正在开发,它们脱离了通常的“编写 FORTRAN 程序,从 INTERNET 获取数值子程序来求解数值”的概念。这种方法的优点和缺点是有争议的,但存在更多像 面向对象数值 GSL 和 GiNaC 这样的选项,这些都是令人兴奋的进展。
Netlib:大量的数值方法免费源代码。Netlib 是源代码存储库,其中包含大量数值方法的源代码。它还有一个活跃的讨论论坛,您可以在其中提交您的查询并及时获得帮助。Netlib 还有一个 并行工具库 和一个按主题搜索功能。
GAMS:可用数学软件指南 GAMS 具有非常有用的搜索功能,可以使用它来搜索关键字(例如:“diffusion”搜索扩散方程求解器)。但是,在 GAMS 上按包浏览显示,他们提供的许多软件都是指向 netlib 存储库的链接。
面向对象数值 一个致力于面向对象数值的网站。它有一个邮件列表、指向免费可用库(当然是 OO)的广泛链接以及免费提供的面向对象科学计算工具。
GNU 科学库 GNU 科学库 (GSL) 是一个用 C 语言从头开始编写的数值例程集合。它为 C 程序员提供了一个应用程序编程接口 (API),并且还允许为非常高级的语言编写包装器。它涵盖了广泛的数值计算主题,有一个良好的手册,具有广泛的可移植性,并根据 GNU 通用公共许可证分发。
GiNaC GiNaC 旨在允许创建需要在其中嵌入符号操作的软件。它通过一组代数功能扩展了 C++,并以递归方式命名为 GiNaC 不是计算机代数系统。它根据 GNU 通用公共许可证 (GPL) 的条款和条件分发。
FFTW FFTW 是一个快速 C 例程集合,用于计算一维或多维离散傅里叶变换。它包括复数、实数和并行变换,并且可以有效地处理任意数组大小。该软件包包括双精度和单精度 FFTW 单处理器以及线程库。
LAPACK LAPACK(线性代数 PACKage)是数值线性代数的标准库。LAPACK 提供了用于求解联立线性方程组、线性方程组的最小二乘解、特征值问题和奇异值问题的例程。LAPACK 用 Fortran77 编写,并使用 egcs 构建。它有很好的文档记录并且被广泛使用(因此经过了广泛的测试)。
SuperLU SuperLU 是一个通用库,它执行 LU 分解,用于直接求解高性能机器上的大型、稀疏、非对称线性方程组。它用 C 编写,可以从 C 或 Fortran 调用。
ARPACK ARPACK 是一组 Fortran77 子例程,旨在解决大规模特征值问题。 用户指南 可用。上面的链接还提供了有关 ARPACK 的并行版本 - PARPACK 和面向对象版本 ARPACK++ 的信息。
计算流体动力学代码 此链接包含公共领域、共享软件和免费软件计算流体动力学代码链接的综合列表,并描述了每个 CFD 代码。
Gnuplot Gnuplot 是一个命令行驱动的交互式函数绘图实用程序。它可以处理曲线(二维)和曲面(三维)。曲面可以漂浮在 3-D 坐标空间中,或作为等高线图。对于 2-d 图,还有许多绘图样式,包括线、点、带点的线、误差线和脉冲。图形可以用任意标签和箭头、轴标签、标题、日期和时间以及键进行标记。它也具有多种绘图功能。它允许以各种格式保存图形,这些格式可以包含在文字处理器中。它可以用于生成出版质量的图。
NCAR 图形 一个非常流行的图形软件包,它有很好的文档记录并且被广泛使用。它提供了创建复杂图的基本要素,作为可以从 Fortran 和 C 调用的函数/例程。有一个贡献的编程接口到 NCAR 图形包:NCL(NCAR 命令语言)。编程接口提供了对复杂图形实用程序(如轮廓、世界地图投影和速度向量)的访问。在大多数情况下,C 接口构建在 Fortran 接口之上……它根据 GNU 公共许可证分发。单击此处转到其所有各种组件的文档。
OpenDX 一个非常好的开源数据 eXplorer。它可以处理大量数据并创建出色的可视化效果。当我想使用一个免费的图形例程来制作 3-D 图并放大、旋转并真正 eXplore 我代码的输出数据时,我偶然发现了这个工具。缺点是从源代码编译真的很有挑战性,并且入门也很困难。但是它附带了出色的文档,一旦我开始使用它,它就是我使用过的最好的工具。
Gri: 它是一种用于科学图形编程的语言。声称 Gri 类似于 LaTeX,因为两者都提供广泛的权力,以奖励容忍学习曲线,这似乎令人兴奋,我个人想检查一下!!查看 Linux Journal 中的以下文章。如果您现在对它印象深刻,请访问 gri 主页,查看下载信息和手册。
MayaVi: 一个用 Python 编写的科学数据可视化器。它根据 BSD 许可证 分发。屏幕截图看起来很有希望。查看上面的链接了解更多详情。
PGPLOT: PGPLOT 是一个 Fortran 77 或 C 可调用子例程包,用于绘制科学 2D 和简单 3D 图。可以在运行时调用这些例程,并将输出重定向到运行时的各种设备。它有很好的文档记录,完整的文档可在上述站点获得。它对于非商业用途是免费的。用户手册可在线获取:PGPLOT 用户手册
PLplot: 这是一个科学绘图函数库,可以从 C、C++、FORTRAN、TCL、PYTHON 调用。 如上所述,PLplot 的功能是:“它可以用于创建标准 x-y 图、半对数图、对数-对数图、等高线图、3D 图、网格图、条形图和饼图。 多个图形(相同或不同大小)可以放置在单个页面上,每个图形中可以有多行。 扩展字符集中有近 2000 个字符。 这包括四种不同的字体、希腊字母和大量的数学、音乐和其他符号。 支持各种输出设备,并且可以通过编写少量设备相关例程轻松添加新设备”。 要下载,请单击此处。
Grace Grace 是一个用于 X Window 系统和 Motif 的 WYSIWYG(所见即所得)二维绘图工具。 Grace 几乎可以在任何版本的 Unix 上运行。 Grace 是 ACE/gr (也称为 Xmgr) 的后代。 它根据 GNU 公共许可证授权。 该链接还包含教程和下载信息。
SciGraphica SciGraphica 是一个用于数据分析和技术图形的应用程序。它完全提供 2D、3D 和极坐标图的绘图功能。 目标是获得一个功能齐全、跨平台、用户友好、可自我增长的科学应用程序。 它是免费和开源的,根据 GPL 许可证发布。
Plotutils:GNU plotutils 包包含用于程序员和技术用户的软件。 它的核心是 libplot,一个强大的 C/C++ 函数库,用于以多种文件格式(矢量和栅格)导出二维矢量图形。 它还可以进行矢量图形动画。 除了 libplot,该软件包还包含用于绘制科学数据的命令行程序。 它们中的许多使用 libplot 来导出图形。
DISLIN DISLIN 是一个高级绘图库,用于将数据以曲线、极坐标图、条形图、饼图、3D 彩色图、表面、轮廓和地图的形式显示出来。
ImLib3D ImLib3D 是一个用于 3D (体积) 图像处理的开源 C++ 库。 它包含最基本的图像处理算法,以及一些更复杂的算法。 它带有一个可选的查看器,该查看器具有多平面视图、动画、矢量场视图和 3D (OpenGL) 多平面视图。
Ptplot:Ptplot 是一个用 Java 实现的 2D 数据绘图仪和直方图工具。 Ptplot 可以作为独立的 applet 或应用程序使用,也可以嵌入到您自己的 applet 或应用程序中。
本节涉及在 PC 上安装 Linux 的教程和文档链接,开始使用 Linux,然后更进一步 - 优化您的 PC 以获得处理能力,使用多处理器(对称多处理 - SMP); 制作一个廉价的、可升级的超级计算 Linux 集群,最后链接到在 Linux 上进行并行编程的软件。
与大多数与 GNU/Linux 相关的文档一样,Linux 文档项目的主页是一个无价的资源。 您可能首先想阅读 Linux 安装 HOWTO。 对于那些想同时安装 Linux 和 Windows 的人,可能想浏览 Linux + Windows HOWTO。 安装 Linux 时,请确保选择安装所有文档。 安装 Linux 后,一个好的、全面的文档,用于开始使用 Linux,是 The Rute Users Tutorial and Exposition,它是 Linux 和类 UNIX 系统的初学者指南。 我想给出一个不太吓人(大小)的链接到一个小的初学者指南,但是 U 会在尝试之后发现这很有用。 您可能还想浏览 Linux 系统管理员指南,并查看 The Linux Administration Made Easy (LAME) guide。 它试图描述 Linux 系统管理员经常遇到的日常管理和维护问题。
无需花费数百万卢比购买超级计算机,就可以获得大量数字运算。 您只需要将所需数量的 CPU(通过一些高速网络)链接在一起,并将 GNU/LINUX 作为底层操作系统。 添加一些免费的消息传递软件,就可以制造出一台有效的并行处理数字运算机器。 这样的集群被称为“Beowulf 集群”。 除了构建成本之外,这种集群的其他优点是,升级成本是最小的。 Linux 集群构建者的两个最佳资源是
这些站点会经常更新集群构建者的有用信息。您还会想阅读 Joe Greenseid 撰写的这篇关于 Linux 集群软件 的优秀文章(及其提供的大量链接)。 我希望浏览这些链接,并在稍后将其包含在本文档中。
其他用于并行处理的免费文档链接是
Beowulf Howto :本文档介绍了 Beowulf 超级计算机架构,并提供了有关并行编程的背景信息,包括指向其他更具体文档和网页的链接。 但是,在此之前,为了理解 Linux 上的并行处理和对称多处理,请查看以下内容
现在,在阅读了上述文档之后,您对并行处理有了一个概念。 并行程序库是 Linux 集群上并行处理的核心。 有各种免费的并行处理库的实现。 由于并行处理完全与性能有关,因此这些库具有一些非常好的功能工具来分析您的并行程序性能。 下面是一组指向这些并行程序库和工具的链接。
Message Passing Interface:MPI 是消息传递库的标准规范。 上述文档提供了大量指向有关该标准的文档等的链接。适用于 Linux 的 MPI 实现 mpich 也可在该站点获得。 有很多关于 Learning to use MPI 的文档。
Local Area Multicomputer - LAM:LAM (Local Area Multicomputer) 是一个 MPI 编程环境和开发系统,用于网络上的异构计算机。 借助 LAM,专用集群或现有网络计算基础设施可以充当一台并行计算机来解决一个问题。 LAM 在应用程序开发周期中具有广泛的调试支持,并且为生产应用程序提供最佳性能。 LAM 具有 MPI 通信标准的完整实现。 您可以从 here 下载源代码(tar-zipped,rpm)或二进制文件。 还可以在 here 找到大量 MPI 教程链接和一个“ LAM 入门”教程
Parallel Virtual Machine :正如 PVM 主页所描述的那样,它是一个软件程序包,允许通过网络连接的 Unix 和/或 NT 计算机的异构集合用作一台大型并行计算机。 因此,可以通过使用多台计算机的聚合能力和内存,更具成本效益地解决大型计算问题。 该软件非常可移植。 可通过 netlib 免费获得源代码,该源代码已在从笔记本电脑到 CRAY 的所有设备上进行了编译。
Ganglia:Ganglia 是加州大学伯克利分校计算机科学系开发的开源集群监视和执行环境。 正如上面的链接所描述的那样,“Ganglia 在 16 节点集群上安装和使用起来就像在 512 节点集群上使用一样简单,这已通过其在多个 500+ 节点集群上的使用得到证明”。 它不仅可以链接集群中的节点,还可以将集群链接到其他集群。
那些不使用 LaTeX 并发现它具有挑战性并且需要 WYSIWYG 文字处理器的您,请密切关注 OpenOffice ,它已经发布了其 openoffice 软件的 1.2 版本。 它的工具可能可以与市场上最好的工具相媲美。
Latex:LaTeX 是一种高质量的排版系统,具有专为制作技术和科学文档而设计的功能。 LaTeX 是科学文档交流和出版的事实标准。 David R.Wilkin 的入门读物 “Getting Started with LaTeX” 是学习 LaTeX 的一个很好的教程。 对于那些必须使用 WYSIWYG 文档编制工具的人,请查看 LyX。 这是 latex 的前端。 它不如 latex 本身强大,但有助于提供良好的 WYSIWIG。
Lout:类似于 latex 的文档格式化系统。 良好的功能、文档和历史记录。 轻量级并输出 postscript。 感谢 Emiliano Gavilan 提供此链接。
Abiword:正如 AbiWord 主页所说,“AbiWord 适用于输入论文、信件、报告、备忘录等等”。 它赢得了许多奖项,似乎是最好的开源 WYSIWYG 文字处理器。 请查看上面的链接以了解更多信息并下载它。
kword:正如 kword 主页所说,“KWord 是一种类似于 FrameMaker 的文字处理和桌面出版应用程序。 KWord 能够创建要求苛刻且外观专业的文档。 无论您是公司或家庭用户、生产艺术家还是学生,KWord 都将被证明是一个有价值且易于使用的工具,可满足您的所有文字处理和布局需求”。 请查看上面的链接以了解更多信息并下载它。(您可能想了解更多关于整个 koffice 套件的信息)。
KPresenter:KPresenter 是 KOffice 办公实用程序套件的演示工具。 它允许屏幕演示,其中包含人们习惯在昂贵的演示工具中看到的所有装饰。 它还允许诚实的、真实的科学演示,您无需以非主题特定的内容来打动观众 :-)。 最好的一点是可以将演示文稿保存为 html 文件。 它为每个演示文稿幻灯片制作便携式网络图形文件。 凭借一些 html 文件知识,您可以将动画图像作为图像链接放入其中,从而在必要时也可以显示电影。
Xfig :尽管其手册页声称它是一个交互式生成图形的工具......但实际上它远不止于此。除了生成用于阐明您想在海报中表达的内容的图形之外,它还可以帮助您导入和导出各种格式的图形,以各种字体和大小书写文本,生成希腊符号和彩色文本,保存为 LaTeX 图片文件或您的文字处理器支持的任何其他格式,以便包含在您的出版物中,生成海报每一页的 GIF 图像以放置在您的网站上,最后,它生成体积小的 *.fig 文件。我对 xfig 唯一的期望是能够编辑不是 *.fig 格式的导入图片。因此,对于计算机屏幕投影的海报演示,您需要一个具有帧功能的浏览器,一个帧包含内容,另一个帧包含 Xfig 生成的海报(从 Xfig 导出为 *.png 或 *.jpg)。
科学计算有两个并行的数据需求,一个是数据本身的物理值,另一个是管理数据的数据库系统。本文档仅提供指向互联网上数据库资源和免费数据库系统的链接。我个人不使用数据库来处理我的代码生成的数据。 gawk、sed 和其他基本的 Unix 命令(如 grep、head 和 tail)似乎足以处理我生成的任何数据。我认为我应该为大型数据生成器包含此部分。希望有数据库经验的人能让这一部分更好。
ACM SIGMOD:公开可用的数据库软件索引。
MySQL:关系数据库管理系统。
PostgreSQL 正如上面的链接所描述的......PostgreSQL 是一个复杂的对象关系 DBMS,几乎支持所有 SQL 结构,包括子查询、事务和用户定义的类型
同样,这是一个我没有任何经验的部分,希望有经验的人能够为改进本文档做出贡献。 但是,我在下面提供 Sambaran Pahari 和 Deepak Gupta 建议的链接。 从我没有经验的角度来看,这些链接看起来非常好。
The Linux Lab Project(Linux 实验室项目) 一个关于 “Linux 实验室项目” 的网站......关于 Linux 上实验室流程、过程控制、自动化和数据采集的所有内容。 正如上面的链接所说,“Linux 实验室项目旨在帮助人们开发用于 LINUX 的数据收集和过程控制软件。 计划为从硬件支持到应用程序开发的各种应用提供标准化的开发环境。”
Linux 并行端口驱动程序:上面的链接说,“如果您有一个并行端口设备并且想知道是否有可用的 Linux 驱动程序 - 那么这里就是您应该查找的地方”。 听起来是一个自信的声明。