Skip to content

Commit

Permalink
update CP2K OOM instruction
Browse files Browse the repository at this point in the history
  • Loading branch information
Cloudac7 committed Nov 12, 2024
1 parent c25e260 commit af8da95
Showing 1 changed file with 38 additions and 3 deletions.
41 changes: 38 additions & 3 deletions docs/usage/apps/cp2k.md
Original file line number Diff line number Diff line change
Expand Up @@ -146,14 +146,49 @@ CP2K 是可用于DFT计算和分子动力学模拟的强大软件包。它支持

## 已知问题

### 内存泄漏
### 内存 OOM 问题排查

一些版本可能存在严重的内存泄漏 Issue,若遇到此问题,建议用户关闭 ELPA 功能,使用 Scalapack 进行对角化。
请首先检查所申请内存是否足够,若所运行计算可以跑满整个节点,请设置 `#SBATCH --mem=251G`

一些版本可能存在严重的内存泄漏 Issue,若遇到内存 OOM 问题,建议用户关闭 ELPA 功能(特别是使用 DIIS 做对角化的情况),使用 Scalapack 进行对角化。

```
&GLOBAL
PREFERRED_DIAG_LIBRARY SL
&END GLOBAL
```

若仍然存在问题,建议尝试降低每个节点上的核数,即调整 `--ntasks-per-node` 为更低的值。
若仍然存在问题,请进一步按照以下步骤进行测试:

1. 若为多节点并行任务,请调查任务是否正确并行在每个节点上,当使用 `mpirun` 时,一般需要确保 `-np` 的值为所有节点的进程总数(通常使用 `popt` 或者 `OMP_NUM_THREADS=1` 时为核数)

2. 检查输入参数中交换关联泛函部分的 `MAX_MEMORY` 设置(单位为MB),若该值太大则需要根据节点总量适当缩减。
例如采用杂化泛函进行模拟时,

```
&XC
&HF
&MEMORY
MAX_MEMORY 1500
EPS_STORAGE_SCALING 0.1
&END
&END
&END XC
```
具体数值请根据体系情况进行测试,确保不会造成OOM
3. 使用psmp版本并尝试提高OMP线程数,以减少总进程数,线程间可以共享内存
例如总共申请64核,采用16个进程,每个进程4个线程:
```bash
...
#SBATCH -N 1
#SBATCH --ntasks-per-node=64
...
export OMP_NUM_THREADS=4
mpirun -np 16 cp2k.psmp -i input
```
4. 若问题仍然存在或者出现了意料之外的报错(此时请恢复到 `popt` 版本),建议尝试降低每个节点上的核数,即调整 `#SBATCH --ntasks-per-node` 为更低的值。

0 comments on commit af8da95

Please sign in to comment.