目录

解决QuantumATK运行性能和内存消耗问题

问题概述

衡量 QuantumATK 计算运行性能的指标是正确运行计算得到结果的时间长短。计算性能的限制因素主要来自于:

一般情况下,我们总是优先选择将中间结果保存在内存中,这也是计算设置的默认选项。在发生问题时,存在两种情况,一种是 QuantumATK 给出内存溢出错误:

对于明确的内存溢出错误信息,可以考虑:

用户层面影响计算性能的主要因素

算法与模型

不同的算法、不同的模型、不同的分析等计算性能相差很大:

并行计算

要获得任何高性能软件的最佳性能,需要对所涉及的计算和使用的硬件有一定的深入了解。因此,对于使用的硬件和并行方法,优化您的 QuantumATK 模拟非常重要。然而,下面章节给出了一些关于 QuantumATK 算法和选项的提示,也可能有助于解决内存或速度问题。

减少内存消耗

一般情况

对于分子和块体构型

对于器件构型

提升运行速度

一般情况

对于分子和块体构型

ATK 2015 中为 AlgorithmParameters 中的 density_matrix_method 引入了两个新增参数:processes_per_kpointbands_above_fermi_level

1   algorithm_parameters = AlgorithmParameters(
2       density_matrix_method=DiagonalizationSolver(
3                                                   bands_above_fermi_level=20,
4                                                   processes_per_kpoint=2
5                                                   ),
6       )

下图展示了使用 32 个 k 点进行 InGaAs 块体构型完整 SCF 运行时间的关系图。默认情况下,您最多可以并行超过 32 个 mpi 进程(红线)。您可以运行以下脚本来快速检查计算中使用了多少个 k 点:

1   mk = MonkhorstPackGrid(4,4,4)
2   irriducible_kpoints = mk.kpoints()
3   print(len(irreducible_kpoints), ' irreducible kpoints')

通过设置 processes_per_kpoint,您现在可以进一步推动并行(蓝线)。

图:在 Xeon E5-2687W @ 3.1GHz 16固化/节点集群上运行的 InGaAs 合金的 199 基准图。时序对应于完整的 SCF 周期(19 步内收敛)。

注意

  • 空带的最佳使用数量取决于几个因素,包括 LCAO 计算器中指定的电子温度。
  • 性能改进随系统的大小增强。对于 < 100 个原子的小型系统,您可以保持默认参数。

对于器件构型

实际上,您可以调整许多参数获得器件构型的最佳性能,有些取决于您正在研究的体系和所使用的方法。

参考