常见问题#

如果您遇到的问题没有在下面解决,请参阅 Discourse server。要提交错误报告或开启功能请求,请联系 open an issue on Github

我更新了 AiiDA 的版本,但现在它不再工作了。我该怎么办?#

首先,确保您的守护进程没有运行。可以使用 verdi daemon status 检查。如果您发现守护进程仍在运行,这很可能就是问题所在,因此请先使用 verdi daemon stop 停止守护进程。important 每次要 update your AiiDA installation 时,都应**先结束所有正在运行的进程,并在此之前停止守护进程。使用 verdi daemon start 重新启动守护进程。

我收到 MissingEntryPointErrorMultipleEntryPointError 异常,提示无法找到特定的 entry point。如何解决这个问题?#

这通常是由过期的 entry point 缓存引起的。例如,当你更新了 AiiDA 安装或使用 pip install 安装了新插件时,就会发生这种情况。确保同时重启所有守护进程,以确保守护进程也能接收到更改。

我更新了 WorkChainCalcJob 或其他 Python 代码的代码,但守护进程似乎没有接收到这些更改?#

每次更改代码时,都应重新启动守护进程,以使更改生效。每个守护进程工作者实际上都是自己的系统进程,有自己的 Python 解释器实例,由于我们不支持自动热===交换,所以守护进程工作者不会自动检测代码中的更改。只需调用 verdi daemon restart 即可。

我更新了 WorkChainCalcJob 或其他 Python 代码的代码,但我的 Python shell 实例似乎无法接收这些更改?#

verdi shell 是自己的 Python 解释器,不会自动检测代码更改。只需重新加载 shell 即可解决问题。

为什么计算作业在远程计算机上运行时间很长,而实际计算时间应该很快?#

首先,确保计算不是在调度程序的队列中等待,而是正在运行或已经完成。如果 AiiDA 更新计算仍然需要很多时间,有几种解释。首先,如果你运行了很多进程,你的守护进程可能只是忙于管理其他计算和 workflow。如果不是这样,你可能看到了AiiDA的engine内置节流机制的影响。为了确保 AiiDA 守护进程不会让远程计算机或它们的调度程序超载,对守护进程工作者打开 SSH 连接或轮询调度程序的频率有内置限制。要确定最小传输间隔和作业轮询间隔,请分别使用 verdi computer configure show <COMPUTER>computer.get_minimum_job_poll_interval()。您可以使用

$ verdi computer configure <TRANSPORT_TYPE> <COMPUTER> --safe-interval=<NUMBER_OF_SECONDS>

In [1]: computer.set_minimum_job_poll_interval(NUMBER_OF_SECONDS)

不过要注意,如果间隔时间太短,守护进程工作者可能会向远程机器和/或调度程序发送垃圾邮件,这可能会对机器本身造成不利影响,或导致账户被封。不过要注意,如果间隔时间太短,守护进程工作者可能会向远程机器和/或调度程序发送垃圾邮件,这可能会对机器本身造成不利影响,也可能导致账户被封,具体取决于远程机器的政策。importance 的另一个注意事项是,每个守护进程都会保证遵守每个守护进程的时间间隔,但不会保证遵守所有守护进程的时间间隔。也就是说,如果安全时间间隔设置为 60 秒,则任何单个程序员都能保证每分钟最多打开一次与该机器的连接,但如果有多个活跃的守护进程程序员,则每分钟访问该机器的次数可能会超过一次。

为什么在本地运行正常的进程在提交给守护进程时会出现异常?#

这几乎总是由 import 问题引起的。要确定到底是什么问题,首先执行 set the loglevelDEBUG 命令:

$ verdi config set logging.aiida_loglevel DEBUG

然后使用 verdi daemon restart 重启守护进程,使更改生效。在另一个终端运行命令 verdi daemon logshow,查看守护进程的日志输出,然后再次提交有问题的计算或 workflow。

如果根本原因确实是由于 import 问题,则可能会在守护进程日志中显示为 ImportError 异常。要解决这些问题,请确保正在运行的所有 Python 代码都能正确执行 import,这意味着它们是 PYTHONPATH 的一部分。确保在启动 shell 时自动正确定义了 PYTHONPATH,例如,如果您使用的是 bash,请将其添加到 .bashrc 并完全重置守护进程。例如,进入包含定义进程的文件的目录,然后运行

$ echo "export PYTHONPATH=\$PYTHONPATH:$PWD" >> $HOME/.bashrc
$ source $HOME/.bashrc
$ verdi daemon restart

为什么默认情况下不启用缓存?#

缓存的设计目的是以不显眼的方式工作,节省时间和宝贵的计算资源。然而,这种设计是一把双刃剑,因为用户可能没有意识到这一功能,他们的计算结果可能会让用户措手不及。

缓存机制有一些限制和注意事项,需要 import 理解。详情请参考 限制与准则 部分。

启用了 MFA 的远程计算机的 SSH 密钥对过期时会发生什么情况?#

在一些超级计算中心,连接远程计算机需要进行多因素身份验证(MFA)。通常情况下,在建立与此类计算机的连接时,需要生成一个有效期有限的 SSH 密钥对。例如,瑞士国家超级计算中心(CSCS)就是这种情况。

当 SSH 密钥对过期时,AiiDA 将无法连接到远程计算机。这将导致在该计算机上提交的所有计算暂停。要重新启动,需要生成一个新的 SSH 密钥对,并使用 verdi process play --all 播放暂停的进程。通常,这就是我们需要做的–AiiDA会重新建立与计算机的连接,并继续进行计算。

How to back up AiiDA data?#

The most convenient way to back up an AiiDA profile is to use the verdi --profile <name> storage backup command. For more information, see Backing up your data.