在 Cloudflare Workers 上使用 Fortran

💡 原文英文,约900词,阅读约需4分钟。
📝

内容提要

文章介绍了在Cloudflare Workers上运行Fortran代码的方法,使用Fortiche工具将Fortran代码编译为WebAssembly模块,并在Cloudflare Workers平台上执行。Fortran在科学计算和处理大型数组和矩阵方面具有优势,被广泛应用于科学应用。文章提供了一个简单的示例和手写数字分类器的代码。

🔎

延伸解读

Fortran 在科学计算中的持久价值

文章指出 Fortran 因其对算术和大数组、矩阵的原生支持,非常适合科学计算。全球最快超级计算机的排名基于 LINPACK 基准测试,该测试最初用 Fortran 编写,用于求解线性方程组。此外,NASA 的 FUN3D 气流计算程序和旅行者号探测器也使用了 Fortran,说明它在高性能计算领域依然活跃。

Fortiche 工具链与编译流程

Fortiche 是 Cloudflare 创建的 Docker 镜像,内部使用 Flang 和 Emscripten。Flang 是 LLVM 的 Fortran 前端,目前需要修补 LLVM 以解决一些问题;Emscripten 则负责将 LLVM 输出编译为与 Cloudflare Workers 兼容的代码。通过 --export-func 参数可以指定要导出的 Fortran 子程序,编译后生成 WebAssembly 模块和 JavaScript 胶水代码。

在 Worker 中调用 Fortran 的注意事项

示例显示,从 JavaScript 调用 Fortran 子程序时,所有参数和返回值都通过指针传递。因此需要为每个整型参数分配 4 字节内存,使用 program.malloc 分配,并通过 HEAP32 视图读写值。调用完成后必须手动释放内存,避免泄漏。这种手动内存管理方式与常规 JavaScript 调用不同,需要开发者留意。

BLAS 与 LAPACK 库的支持

文章提到,手写数字分类器示例依赖 BLAS 库,Fortiche 通过 --with-BLAS-3-12-0 标志提供支持。同时,LAPACK 库也可通过 --with-LAPACK-3-12-0 标志使用。这意味着在 Cloudflare Workers 上运行 Fortran 时,可以直接利用这些成熟的线性代数库,无需自行实现底层数学运算。

❓

Q&A

如何在Cloudflare Workers上运行Fortran代码?

可以使用Fortiche工具将Fortran代码编译为WebAssembly模块,然后在Cloudflare Workers上执行。

Fortiche工具的作用是什么?

Fortiche工具用于将Fortran代码编译为WebAssembly,简化在Cloudflare Workers上的运行。

Fortran在科学计算中有哪些优势?

Fortran在处理大型数组和矩阵方面具有优势,适合进行科学计算和数值编程。

LINPACK基准测试与Fortran有什么关系?

LINPACK基准测试是用Fortran编写的,用于评估超级计算机的性能。

如何编写和编译一个简单的Fortran程序?

可以编写一个简单的Fortran子程序,然后使用Fortiche工具进行编译,生成WebAssembly模块。

Cloudflare Workers如何调用Fortran编写的子程序?

Cloudflare Workers通过加载编译后的WebAssembly模块并调用相应的JavaScript接口来执行Fortran子程序。

🏷️

标签

➡️

继续阅读