|
|
本帖最后由 s8ga 于 2026-5-1 17:45 编辑
1. 前言
站内的 CP2K Singularity 镜像都比较老了,最近需要频繁的更换计算节点,所以编译了一份带 全部依赖的CP2K 容器镜像,方便在不同服务器上使用。
使用了 podman构建CP2K 然后使用 apptainer(singularity 的开源版本)打包 sif
1.1 使用环境要求
- 单机:
不需要root、需要足够高的内核版本 (3.8+)
无法在docker内嵌套运行 (可以在 wsl / kvm / vmware 等虚拟化方案内运行) - 集群:
没尝试过
1.2 镜像列表
文件下载链接: https://pan.baidu.com/s/1AdlUGY40yEmDj-M32Q37Xw?pwd=s8ga
- cp2k-opensource-2025.2 (260501添加) (regtest 通过)
标准 2025.2 build
- cp2k-opensource-2025.2-force-avx512 (260501添加) (regtest 通过)
解决了使用 avx2处理器 上构建的 cp2k在 avx512处理器 上使用时
Setting real_kernel for ELPA failed 的问题 (强制编译 ELPA的 AVX512内核就好了)
- cp2k-rocm-2026.1-gfx942 (260501添加) (实验性)
AMD Mi300X 加速版本 (未经充分测试)
- cp2k-mkl-2025.2-experimental (260501添加) (regtest 通过) (实验性)
使用的是Openmpi + mkl 构建方式
存在经验性修补内容,不推荐在生产环境中使用
与Opensource速度基本相同
2.使用指南
- 先将 镜像 下载好,并将你选择的 sif文件 和 apptainer-1.4.5-3.el8-x86_64.run放入服务器你选择的位置
- # 1.首先切换到你放置文件的目录
- cd "Your preferred location"
- # 2.给run文件添加可执行权限
- chmod +x apptainer-1.4.5-3.el8-x86_64.run
- # 3.解压apptainer
- ./apptainer-1.4.5-3.el8-x86_64.run
- # 4.将apptainer source到PATH中
- # 请根据屏幕上面的提示 source指定文件
- # (仅供参考) source /tmp/apptainer-test/apptainer-bundle/activate-apptainer.sh
- # 5.你可以使用 apptainer run 来启动镜像 (下面的例子仅供参考 - 只是显示了cp2k的版本号/编译信息)
- apptainer run cp2k-opensource_2025.2-force-avx512.sif mpirun cp2k.psmp --version | head -n10
- # 或者是使用screen + apptainer shell 方式启动
- screen apptainer shell cp2k-opensource_2025.2-force-avx512.sif
- # 具体使用方式
- # apptainer exec cp2k-opensource_2025.2-force-avx512.sif mpirun -np <Input thread count> cp2k.psmp -i [Your Input].inp -o [Your Output].out
- # 或者是使用screen + apptainer shell 方式启动
- apptainer shell cp2k-opensource_2025.2-force-avx512.sif
- # <在新的shell内部>
- mpirun -np <Input thread count> cp2k.psmp -i [Your Input].inp -o [Your Output].out
- ######################################
- # 6.如果你想运行cp2k的regtest
- apptainer shell cp2k-opensource_2025.2-force-avx512.sif
- # 然后在容器内部运行
- python /opt/cp2k/tests/do_regtest.py --mpiranks 2 --ompthreads 2 --maxtasks $(nproc) --keepalive --workbasedir /tmp --mpiexec "mpirun $MPI_RUNVAR -np {N}" $(dirname $(which cp2k.psmp)) psmp
复制代码- 如果用户重新登录了,只要找到 4提示的sh文件位置,source后正常使用
如果你想看更形象一点的使用demo的话,可以查看这个 Demo
3. 构建镜像
(更详细的信息 请参照 构建程序链接)
(构建过程所有文件已经开源)
构建机要求:
需要有podman, uv,同时需要有良好的网络连接
推荐使用 Debian / WSL2 或 VMWare 进行编译
- 前置条件
- # 0. cd 到 clone下来的目录
- # cd HPC-Container-Factory
- # 1. Python 依赖
- uv venv venv
- uv pip install -r requirements.txt --python ./venv/bin/python
- # 2. 需要 Podman
- podman info
- # 3. 需要 clone spack
- # 下载 Spack v1.1.0 release tarball
- mkdir -p assets
- curl -fSL -o assets/spack-v1.1.0.tar.gz \
- https://github.com/spack/spack/releases/download/v1.1.0/spack-1.1.0.tar.gz
- # 解压出 spack-src/(bootstrap 阶段需要)
- tar -xzf assets/spack-v1.1.0.tar.gz -C assets/
- mv assets/spack-1.1.0 assets/spack-src
- # 4. 激活环境
- source ./activate.sh
- # 5. 准备离线资源 (spack 源代码包)
- python generate.py assets --env cp2k-opensource-2025.2-force-avx512
- # 预计输出
- # [OK] All packages available in mirror
- # 6. 构建
- python generate.py build --app-version cp2k-opensource-2025.2-force-avx512 --network-host
- # 构建过程较慢 大概需要45 min +
- # 预计输出
- # Successfully tagged localhost/cp2k-opensource:2025.2-force-avx512
- # 7. 转换为 SIF文件
- python generate.py build-sif --app-version cp2k-opensource-2025.2-force-avx512
- # 首次使用需要安装apptainer (需要一些时间)
- # 产出文件在 artifacts
- # 8. 运行
- source ./activate.sh
- apptainer shelll artifacts/cp2k-opensource_2025.2-force-avx512.sif
- # 9. [可选] 打包apptainer 便于分发至其他机器
- python generate.py pack-apptainer
- # 产物在 artifact/apptainer-<version>-x86_64.run
复制代码
如果有需要的话,构建产物可以随意分享(MIT协议)
Happy Computing!
|
|