【问题标题】:Build a standalone Octave executable that can run on AWS EC2构建可以在 AWS EC2 上运行的独立 Octave 可执行文件
【发布时间】:2020-06-04 22:20:16
【问题描述】:

我们有一个用 Octave 编写的数学模型,希望在云中运行 - 可能是 AWS EC2 或 ECS 实例。这样做的原因是我们希望从我们的数据库 (ElasticSearch) 中输入数据,而不是依赖一个人的机器来运行分析。我们还试图避免将m 文件重写为 Python 等。

我查看了this question 中的答案,很难相信没有更简单的方法可以将 Octave 脚本(包含多个文件)编译成可以在云中运行的独立程序。有人有这方面的经验吗?

【问题讨论】:

  • 那里的主要答案是正确的。由于没有 Octave 编译器,并且 octave 是一个带有许多编译库的解释器,您需要调整您的范围。一般来说,使用 Octave 数学库的编译程序会比您当前的程序快得多。
  • 为什么需要可执行文件?您可以轻松安装 octave 实例,对吗?例如,如果你有一个 python 文件,想必你也需要在服务器上安装 python,对吧?
  • "一般来说,使用 Octave 数学库的编译程序将比您当前的程序快得多。" - 这完全取决于您的程序将时间花在哪里。如果大部分时间都花在 Octave 的数字运算 BLAS 部分,那么编译语言中的程序不会看到显着的加速。

标签: compilation octave exe


【解决方案1】:

没有执行此操作的 Octave 工具。但我不认为你真的需要它。与其他解释语言(如 Ruby 或 Python)一样,部署基于 Octave 的应用程序的典型方法是在将运行它的机器上安装 Octave 运行时(即 Octave 本身),然后部署您的 M 集合-文件到机器并让它运行这些文件。由于您可以控制您的 EC2 实例,因此这是可行的。

(有一些“冻结”的 Python 应用程序提供完全打包的可部署应用程序和捆绑的 Python 解释器,或 Matlab 的 Matlab 编译器,但没有 Octave 等价物。)

请注意,即使是编译语言也可能需要安装支持运行时。例如,C++ 需要 C++ 运行时(即 Windows 上的 Microsoft Visual C++ Redistributable,或 Linux 上的 GNU 或 CLANG C++ 库),Java 需要 JRE,而“编译的”Matlab 应用程序需要 Matlab 运行时。

如果您希望以单文件方式将应用程序传输到服务器进行部署,请将您的应用程序打包成一个 ZIP 文件,将其复制到服务器,然后在安装位置解压缩。或者您可以使用操作系统的本地包管理器将其打包,并让它声明对 Octave 的依赖。

您链接到的另一个问题中的“一个大型可安装包”方法旨在解决在程序作者无法控制的机器上向非技术最终用户分发 Octave 程序的问题。假设您的员工中有精通技术的人员,并且您控制着要部署到的云虚拟机,因此您可能并没有真正的要求。

您还可以使用 Docker 并将您的应用程序 + Octave 构建到 Docker 容器中,以实现完全独立的部署。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-26
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    • 2010-09-16
    • 1970-01-01
    相关资源
    最近更新 更多