硬件编辑器
所有计算机程序(包括 OghmaNano)都运行在物理计算硬件上。任何一台计算机中都可能存在许多不同的硬件组合:有些计算机有大量 CPU 核心,而另一些只有一个。类似地,计算机的内存容量、硬盘空间以及 GPU 也各不相同。为了帮助用户尽可能发挥 OghmaNano 的性能,提供了一个硬件编辑器,用户可以在其中配置 OghmaNano 在任意给定计算机上的行为。可通过仿真选项卡窗口访问(见 ??)。
如果你点击该按钮,将会打开硬件编辑器窗口(见 ??)。
硬件窗口由多个选项卡组成,使用户能够编辑配置并对你的设备进行基准测试。
CPU/GPU 配置选项卡
此选项卡用于配置 OghmaNano 如何与 GPU 和 CPU 交互,相关内容在下表中描述。正如本手册其他部分所详细说明的,OghmaNano 分为两部分:计算后端 oghma_core.exe,以及图形用户界面 oghma_gui.exe;这两部分的行为都可以在此进行微调。
- Number of threads used by the backend: 这是 OghmaNano 的 oghma_core.exe 可使用的最大线程数。它决定:可同时运行的拟合数量;可同时运行的优化仿真的最大数量;用于 FDTD 仿真的最大线程数;可同时生成的 DoS 缓存文件的最大数量;可同时运行的频域点数量。
- Maximum number of core instances: 这将设置 GUI 可启动的 oghma_core.exe 实例的最大数量。如果正在进行参数扫描,则该参数将控制可同时执行的仿真数量上限。如果 Number of threads used by the backend 被设置为 4,并且正在执行 FDTD 仿真,那么若将 Maximum number of core instances 设置为 8,则 GUI 将启动 8 个 oghma_core.exe 实例,每个使用 4 个线程,因此需要 32 个 CPU 核心。
- Stall time: 有时在无人值守的超算上运行 OghmaNano 时它会停止运行,可能是由于 IO 错误或网络错误。此选项可用于设置单次仿真的最大时长。这里的单次仿真指单条 JV 曲线、单次时域仿真或单次频域仿真,但不包括整个拟合过程(拟合会涉及运行成千上万个单独仿真)。例如若设置为 2000 秒,则若某次 JV 仿真耗时超过 2000 秒,求解器将退出。实际上任何单个仿真通常只需几秒钟,因此该选项在出现严重问题时充当硬性兜底。
- Max fit run time: 这是 oghma_core.exe 可驻留在内存中的最大时间。如果任何仿真或拟合耗时超过该值将被终止,同样这是一个防止仿真无限运行的兜底机制。默认值为 4 天。
- Steel CPUs: 有时在共享 PC 上运行 OghmaNano 时,当另一位用户占用了大量核心,你可能启动了仿真。过一段时间后,其他用户的仿真结束,计算机会出现空闲 CPU。如果该选项设置为 True,则 OghmaNano 会监控空闲 CPU 的数量,并在有更多可用时使用它们。
- Min CPUs: 与上面的 Steel CPUs 选项配合使用,用于设置将使用的最少 CPU 数量。
- Store DoS on disk: OghmaNano 会将查找表存储到磁盘以加速仿真;如果该选项设为 false,则这些查找表不会被存储。
- OpenCL GPU acceleration: 启用或禁用 GPU 加速,主要用于 FDTD 仿真期间。
- GPU name: 选择要使用的 GPU。
牛顿缓存
当运行包含大量 ODE 的仿真时,例如具有大量陷阱态和大量空间点的 1D 器件,或运行 2D OFET 仿真时,每个电压步可能需要一段时间来计算。这是因为求解器必须使用牛顿法对每个电压步求解直到收敛。对于每个求解步,都必须构建雅可比矩阵、对矩阵求逆并与残差相乘,并计算对所有求解变量的更新。这会导致每步耗时显著(2000ms)。一种绕开这种开销的方法是将先前计算过的答案存储在磁盘上;当用户要求求解器计算一个已经计算过的问题时,可以直接从磁盘调出答案而不是重新计算。这在 OLED 设计中非常有用:当你尝试优化器件的光学结构但保持电学结构不变时,可以在已预先计算的电学解基础上运行新的光学仿真。配置选项在下表中给出。
使用牛顿缓存存在额外开销,因此我只建议在电学问题求解确实非常慢时使用它。从技术上讲,牛顿缓存通过对费米能级与电势的 MD5 求和来生成电学问题的哈希值,然后与磁盘上的内容进行比较。如果找到预先计算的答案,则将费米能级/电势更新为磁盘上的值。缓存存储在 oghma_local cache 中,每个预先求解的解都作为一个新的二进制文件存储。每次仿真运行都会生成一个索引文件,用于存储该仿真中的所有 MD5 和。缓存满后,OghmaNano 会基于索引文件批量删除仿真结果。
- Maximum cache size: 设置缓存的最大大小(MB)。我建议约 1Gb。
- Minimum disk free: 设置使用缓存所需的最小磁盘可用空间。该选项用于防止缓存填满磁盘,我会将其设置为约 5Gb。
- Number of simulations to keep: 这将设置要保留的仿真运行的最大数量,我建议设置在 20 到 100 之间。
- Enable cache: 启用或禁用牛顿缓存,默认且推荐的选项是 False。
硬件基准测试
在硬件窗口左上角(见 ??)有一个名为 Hardware benchmark 的按钮。如果点击它,OghmaNano 将对你的硬件进行基准测试,测试结果如(见 ??)。该测试会评估你的 CPU 计算 sin、exp 以及分块分配/释放内存的能力。它会显示执行几千次操作所用的时间以及一个 R(即 Roderick)值。其定义为 R=在你的 PC 上完成计算所需时间/在我的 PC 上完成计算所需时间。因此更小的值表示你的 PC 比我的更快。我的 PC 是 2017 年的 Lenovo thinkpad,CPU 为 Intel(R) Core(TM) i7-4900MQ CPU @ 2.80GHz。所以多数现代计算机都应更快。如果你的 CPU 性能很好但仿真比我的 YouTube 视频更慢,那么这几乎总是由于较差的 IO 速度导致的,例如病毒防护软件、将仿真存储在 OneDrive 上、使用网络驱动器、使用慢速 USB 存储等。