Weather Research and Forecasting Model (WRF) 是一款用于大气建模和业务预报的数值天气预报模型。由于其构建过程涉及一系列依赖项,通常较为复杂。本Docker镜像intel/intel-optimized-wrf:latest旨在简化WRF的部署和运行流程,推荐在第4代Intel® Xeon®可扩展处理器上使用以获得最佳性能。
1. 检查硬件配置
运行镜像前需确定主机物理CPU数量,可通过以下命令查看:
bashlscpu
2. 运行Docker镜像
根据CPU数量指定容器可使用的CPU核心范围,基本命令格式如下:
bashdocker run --cpuset-cpus <num>-<num> -it --name wrf-hpckit -v <path_to_run_file>/run.sh:/home/run.sh -v <local_directory_to_get_logfiles>:/log wrf-hpckit:latest
参数说明:
--cpuset-cpus <num>-<num>:限制容器使用的CPU核心范围,如0-3表示使用第1至第4个CPU核心(从0开始编号),或1,3表示使用第2和第4个CPU核心-v <path_to_run_file>/run.sh:/home/run.sh:挂载本地run.sh脚本到容器内-v <local_directory_to_get_logfiles>:/log:挂载本地目录用于存储WRF生成的日志文件3. 创建run.sh脚本
需创建run.sh脚本以下载WRF基准测试数据并配置运行参数。以下示例基于8 CPU的第4代Intel® Xeon®可扩展处理器:
bash#!/bin/bash # 下载CONUS-12km基准测试数据 wget -c https://www2.mmm.ucar.edu/wrf/users/benchmark/v44/v4.4_bench_conus12km.tar.gz tar -zxf v4.4_bench_conus12km.tar.gz # 链接测试文件到WRF运行目录 ln -sf /v4.4_bench_conus12km/* /WRF/run ln -sf /v4.4_bench_conus12km/wrfbdy_d* /WRF/run ln -sf /v4.4_bench_conus12km/wrfinput_d* /WRF/run ln -sf /v4.4_bench_conus12km/*.dat /WRF/run ln -sf /v4.4_bench_conus12km/namelist.input.restart /WRF/run/namelist.input ln -sf /v4.4_bench_conus12km/wrfrst_d01_2019-11-26_23:00:00.ifort /WRF/run/wrfrst_d01_2019-11-26_23:00:00 # 配置并行计算参数 export PROCESS_PER_NODE=4 export OMP_NUM_THREADS=2 export I_MPI_PIN_DOMAIN=auto export I_MPI_PIN_ORDER=bunch export OMP_PROC_BIND=close export OMP_PLACES=threads export KMP_BLOCKTIME=10 export KMP_STACKSIZE=128M export WRF_NUM_TILES=48 # 设置系统资源限制 ulimit -S -s unlimited ulimit -S -m unlimited ulimit -S -d unlimited # 运行WRF cd /WRF/run mpiexec.hydra -genvall -n $PROCESS_PER_NODE -ppn $PROCESS_PER_NODE ./wrf.exe
注意:可通过修改下载链接更换基准测试数据集,其他WRF测试案例可参考:[***]
4. 关键变量配置说明
run.sh脚本中的环境变量需根据硬件配置调整,核心原则:PROCESS_PER_NODE * OMP_NUM_THREADS 应等于物理CPU数量。主要变量说明:
| 变量 | 说明 |
|---|---|
| PROCESS_PER_NODE | 每节点MPI进程数,应与硬件核心数对应 |
| OMP_NUM_THREADS | 每个进程的OpenMP线程数,设置并行区域的初始线程数 |
| I_MPI_PIN_DOMAIN | 控制进程线程在节点内的绑定范围 |
| I_MPI_PIN_ORDER | 定义MPI进程到域的映射顺序 |
| OMP_PROC_BIND | 控制线程亲和性策略,决定线程是否可在不同位置间移动 |
| OMP_PLACES | 指定OpenMP程序执行时可用的位置列表 |
| KMP_BLOCKTIME | 线程完成并行区域后等待睡眠的时间(毫秒) |
| KMP_STACKSIZE | 为每个并行线程分配的私有栈大小(支持b/k/m/g/t为单位) |
| WRF_NUM_TILES | 网格分块数量,最优值取决于模型特性和硬件 |
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
不支持 push
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务