如何解决如何在 slurm 上获得多个相同类型的 GPU?
如何使用相同类型但不直接指定该类型的多 GPU 创建作业?我的实验有一个限制,即所有 GPU 都具有相同的类型,但这种类型可以是我们想要的任何类型。
目前我只能使用多 GPU 创建一个实验,并准确说出我想要的类型:
--gres=gpu:gres_type:amount
如果我不指定 gres_type
,那么有时我会得到混合的 GPU 包(比如说 2x Titan V 和 2x Titan X)。
解决方法
如果您足够幸运,集群在托管 GPU 的节点类型方面是一致的,并且节点的 features
正确指定并允许区分托管不同 GPU 类型的节点,您可以使用 --constraint
参数。
为了论证起见,我们假设托管 titanV
的节点具有 haswell
个 CPU,托管 titanX
的节点具有 skylake
个 CPU,并且这些被定义为特征。然后,您可以请求
--gres=gpu:2
--constraint=[haswell|skylake]
如果上述情况不适用于您的用例,您可以提交两个作业并只保留最早开始的一个。为此,为您的作业指定一个相同的名称,并使用 singleton
依赖项。
写一个这样的提交脚本
#!/bin/bash
#SBATCH --dependency=singleton
#SBATCH --job-name=gpujob
# Other options
scancel --state=PENDING --jobname=gpujob
# etc.
并用
提交两次$ sbatch --gres=gpu:titanX:2 submit.sh
$ sbatch --gres=gpu:titanV:2 submit.sh
每个作业将只分配一种类型的 GPU,第一个启动的将取消另一个。这种方法可以扩展到超过两种 GPU 类型。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。