>

在 HPC 集群上复现 RetinaSim

最近,我接手了一项颇具挑战性的任务:在一台高性能计算(HPC)集群上完整复现一篇名为《Physics-informed deep generative learning for quantitative assessment of the retina》的论文,其核心代码库是 RetinaSim。这项工作的目标不仅仅是简单地运行代码,而是要在一个与开发者原始环境可能截然不同的、受严格管理的计算环境中,完整地重现其复杂的软件栈和模拟流程。 我们的战场是一个典型的HPC集群,名为“Barkla2”,它运行着 Rocky Linux 9,并使用 Slurm 作为作业调度器。这意味着所有操作都必须通过命令行完成,并且任何耗时较长的计算任务都必须作为批处理作业提交,而不能直接在登录节点上运行。RetinaSim 项目本身是一个复杂的混合体,它融合了 Python 脚本作为主流程控制,同时依赖于一个用 C++ 编写的高性能流体动力学模拟器(Reanimate)和一个用 .NET(C#)编写的血管生成程序(RetinaGen)。这种异构的技术栈几乎注定了在新的环境中会遇到各种意想不到的编译和运行时问题。 我的第一步是获取代码并制定一个初步的 Slurm 脚本。代码通过 git clone 获取,其目录结构清晰地展示了各个子模块。初步分析 README 和 CMakeLists.txt 等文件后,我了解到编译 Reanimate 需要 CMake 和 C++ 编译器,而 RetinaGen 则需要 .NET SDK。Python 部分则依赖于一份 requirements.txt 文件。 基于这些信息,我编写了第一个版本的 Slurm 脚本。这个脚本的目标是按顺序完成所有准备工作:加载必要的环境模块(如 GCC 编译器、CMake、Python),创建 Python 虚拟环境并安装依赖,然后编译 C++ 和 .NET 子模块,最后尝试运行主 Python 脚本 main.py。这是一个标准的、看似直接的流程,然而,现实很快就给了我第一击。 第一次失败:找不到 CMakeLists.txt 当我提交第一个作业后,几秒钟内它就失败了。检查错误日志,我看到了一个熟悉而又基础的错误信息:CMake Error: The source directory "..." does not appear to contain CMakeLists.txt。这个错误的意思是,CMake 在我指定的目录中没有找到它的核心配置文件 CMakeLists.txt。 ...

十二月 28, 2025 · 4 分钟 · 663 字 · Tategoto Azarasi