Lua 和 Fortran(或 Python)I/O

计算科学 表现 正则
2021-11-27 18:16:20

我正在编写一个全球气候模拟软件系统。我的想法如下:

最重要的是,我使用 D 连接到操作系统,这是一种用于编译时代码生成的非常强大的语言。D 代码获取环境变量,找到必要的输入数据,然后根据配置文件,启动 Lua 代码。

Lua 是一种在许多游戏中使用的非常快的语言,它的好处是它提供了一定的动态性,考虑到语言没有类型,变量可以有任何类型 - 这非常好,必须考虑多态性。(我知道fortran可以支持多态,但是Lua舒服)

最后,我想在计算时将多态数据转换回静态数据,并调用 Fortran 或 Python 方法,甚至可能是 C。为此,我将根据要求使用管道或 fifos。

我的问题是: Fortran / C / Python 可以处理管道和 fifo 而不损失其速度吗?

2个回答

这可能不是您要寻找的答案,但我还是想说明一下:您对编程语言的选择会带来两个困难,您将在程序增长时遇到这些困难。

首先,您会发现尝试耦合不同的语言是有代价的。它们可以互操作,但总会有一些怪癖,随着软件的增长,您会发现令人讨厌的不兼容性(例如,结构布局、名称修改等),结果会花费您大量时间,精力和耐心。你结合的语言越少,你一年内的白发就越少。事后看来,您的程序可能会慢 5%,这似乎是一个很小的代价。

其次,D 和 Lua 可能是很好的语言,但它们并没有被广泛使用。如果这是一个您确定永远不会与任何人共享的项目,那么这不是问题。如果您预计其他人最终会合作或使用它,您必须预计他们不了解 D 和/或 Lua。他们也可能不同意您的选择,并且每次他们不得不触摸用这些语言编写的一段代码时都会让您感到悲伤。您可能必须用这些语言培训他们,并且您可能不得不接受这样一个事实:如果您想分发软件,您将失去大量潜在用户,因为他们不愿意处理他们所使用的非传统语言不习惯。

我绝对会推荐反对LUA。尽管您可能从游戏社区听说过,但它不一定是用于科学计算的快速或精心设计的语言。

如果您可以管理它,CUDA 可能是最佳选择,因为它具有 GPU 加速的优势,可以显着提高气候模拟等复杂应用程序的计算能力。