【问题标题】:Slow execution time for CUDA initialization in Azure Batch VMAzure Batch VM 中 CUDA 初始化的执行时间很慢
【发布时间】:2021-06-22 20:41:45
【问题描述】:

我遇到了在 Azure Batch 的一个 VM 中运行某些 CUDA 程序的初始化时间缓慢的问题。

经过一些故障排除后,我做了一个简单的测试,运行这个调用,如下面的代码所示。

#include <stdio.h>
#include <cuda.h>
#include <cuda_runtime_api.h>
#include <time.h>

clock_t start, end;
double cpu_time_used;

int main()
{
    CUresult result;
    printf("CUDA version %d \n", CUDA_VERSION);    
    start = clock();
    result = cuInit(0);
    if (result != CUDA_SUCCESS) {
        printf("cuInit failed with error code %d: %s\n", result, cudaGetErrorString(result));
        return 1;
    }
    end = clock();
    cpu_time_used = ((double) (end - start)) / CLOCKS_PER_SEC;    
    printf("cuInit took %f seconds to execute \n", cpu_time_used); 
    return 0;
}

平均大约需要 1.9 秒。

一些规格:

  • NVidia 驱动程序:460.32.03
  • CUDAToolkit:10.2
  • Azure Batch:nc6、Tesla K80

作为比较,相同的代码在我的桌面 (Windows) 以及另一个自定义 Azure VM(nc6,不是 Azure Batch)上运行,结果相似,为 0.03 秒。 (cudatoolkit 10.2)

-- 更新 1--

通过 Torch 调用 CUDA 初始化也显示出明显的延迟(对于第一次调用),如此测试所示:

run: 0, import torch: 0.430, cuda_available: 4.921
run: 1, import torch: 0.000, cuda_available: 0.000
run: 2, import torch: 0.000, cuda_available: 0.000
run: 3, import torch: 0.000, cuda_available: 0.000
max time for import torch: 0.43 s,  max time for cuda_available: 4.92 s
torch.version 1.7.1+cu101 torch.version.cuda: 10.1

导入torch代码为:

import torch

cuda_available 代码是:

torch.cuda.is_available()

我的问题是 Azure Batch 为 CUDA 初始化正常行为所花费的时间?

【问题讨论】:

    标签: azure cuda pytorch torch azure-batch


    【解决方案1】:

    VirtualMachineConfiguration 模式下的 Azure Batch 在内部分配虚拟机规模集。 Azure Batch 分配的底层硬件没有区别。进一步调查:

    1. 您的样本集有多大?您的开始时间是否可以在不同 Batch 池中的不同 VM 之间重现?也许您的虚拟机或 GPU 性能不佳或性能下降。
    2. nvidia-smi 在相关计算节点上告诉您什么?是否存在任何潜在的硬件故障?
    3. 您是在使用 Azure Batch 任务,还是远程进入 VM 并以交互方式执行任务?

    【讨论】:

    • 感谢指点。为了节省空间 - 相关点是第 3 项)远程进入 VM 并按照 sn-ps through shell 中的描述执行脚本。
    • 如果您可以评论在该 VM 中进行远程处理时进行基本 cuda 调用所花费的长时间,我会很感兴趣 - 可能驱动程序未正确安装或配置(坏 VM)跨度>
    • 您是否运行了nvidia-smi 并查看 GPU 是否报告了健康问题?你可以在 Batch 中的另一个 GPU 节点上重现吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-31
    • 1970-01-01
    • 1970-01-01
    • 2012-10-06
    • 1970-01-01
    • 1970-01-01
    • 2016-10-18
    相关资源
    最近更新 更多