【发布时间】:2016-01-02 15:55:01
【问题描述】:
我的集群中有一个主机,有 8 个Nvidia K80s,我想设置它,以便每个设备最多可以运行 1 个进程。以前,如果我在主机上运行多个作业并且每个作业都使用大量内存,它们都会尝试访问同一个设备并失败。
我通过 nvidia-smi -c 3 将所有设备设置为计算模式 3 (E. Process),我相信这样可以使每个设备只能接受来自一个 CPU 进程的作业。然后我运行 2 个作业(每个作业只占用设备上 12 GB 内存中的大约 ~150 MB)没有指定 cudaSetDevice,但第二个作业因 ERROR: CUBLAS_STATUS_ALLOC_FAILED 而失败,而不是转到第二个可用设备。
我正在根据this 网站的解释对我的假设进行建模,并希望每个作业都可以级联到下一个设备上,但它不起作用。有什么我遗漏的吗?
更新:我在多个不同的实例中使用gpuArray 运行Matlab,它正确地将Matlab 作业级联到不同的设备上。因此,我相信我在操作系统级别正确设置了计算模式。除了cudaSetDevice,还有什么会迫使我的CUDA 代码锁定到设备0?
【问题讨论】:
标签: cuda