常见问题

有足够的空闲 GPU,但任务无法分配

  • 可分配 CPU 不足: 为了优化 GPU 和 CPU 的连接,服务器上每个 GPU 核心都有 CPU 亲和性(affinity)设置,即绑定在特定的物理 CPU 上。如果某个物理 CPU 的所有核心都被其他任务分配了,那么对应的 GPU 核心也就没办法再分配了。怀疑出现这种情况的话,可以确认一下同一个节点是否有其他任务占据了大量 CPU 核心。具体查看方法参见集群使用指南中的监控任务状态小节。

  • 可分配内存不足: 节点的内存也有类似的情况,当剩余的可分配内存不足时同样会导致任务无法分配。怀疑出现这种情况的话,可以通过命令打印节点内存占用情况,具体查看方法参见集群使用指南中的查看集群状态小节。

  • 注意 节点计算资源有限,请估计或测试好任务需要的 CPU/memory 资源,谨慎填写任务脚本,避免出现有 GPU 但是其他资源不够导致他人任务长时间排队的情况。

任务输出没有立即写入文件

  • 使用 sbatch 提交的批处理 shell 脚本,中间若调用了其他程序,则可能出现程序输出没有立即被写入输出文件的情况。这是因为 Linux 会对文件输出进行缓冲,直到缓冲区打满后才一次性写入磁盘(这样可以减少磁盘读写次数)。

  • 为了监视程序进度或调试程序,通常需要关闭缓冲。在 bash 脚本中通过以下命令禁用 Python 标准输出(stdout)和标准错误(stderr)的缓冲:

# 设置环境变量 PYTHONUNBUFFERED 的值为 1
export PYTHONUNBUFFERED=1

专用网络接入

  • 有需要的用户请直接联系管理员。