如何使用CUDA选择GPU?

费德里科·外邦

我有一台带有2个GPU的计算机;我写了一个CUDA C程序,我需要以某种方式告诉它我想只在2个图形卡中的1个上运行它。我需要输入什么命令,应该如何使用?我相信与cudaSetDevice有关的某种方式,但是我真的找不到如何使用它。

米哈尔·霍萨拉(Michal Hosala)

从的文档中cudaSetDevice应该非常清楚,但是让我提供以下代码片段。

bool IsGpuAvailable()
{
    int devicesCount;
    cudaGetDeviceCount(&devicesCount);
    for(int deviceIndex = 0; deviceIndex < devicesCount; ++deviceIndex)
    {
        cudaDeviceProp deviceProperties;
        cudaGetDeviceProperties(&deviceProperties, deviceIndex);
        if (deviceProperties.major >= 2
            && deviceProperties.minor >= 0)
        {
            cudaSetDevice(deviceIndex);
            return true;
        }
    }

    return false;
}

这就是我遍历所有可用GPU(cudaGetDeviceCount)的方式,以寻找计算能力至少为2.0的第一个。如果找到了这样的设备,那么我就使用了cudaSetDevice所有的CUDA计算,都是在该特定设备上执行的。如果不执行,则cudaSetDeviceCUDA应用程序将在第一个GPU上执行,即具有deviceIndex == 0哪个GPU的那个取决于哪个GPU在哪个PCIe插槽中。

编辑:

在用注释澄清您的问题之后,在我看来,应该适合您根据设备名称选择设备。如果不确定实际的GPU名称,请运行以下代码,该代码会将所有GPU的名称打印到控制台中:

int devicesCount;
cudaGetDeviceCount(&devicesCount);
for(int deviceIndex = 0; deviceIndex < devicesCount; ++deviceIndex)
{
    cudaDeviceProp deviceProperties;
    cudaGetDeviceProperties(&deviceProperties, deviceIndex);
    cout << deviceProperties.name << endl;
}

然后,选择要用于计算的GPU的名称,假设它是"GTX XYZ"从您的main方法中调用以下方法,多亏了它,所有CUDA内核都将在name为的设备上执行"GTX XYZ"您还应该检查返回值-true如果找到了具有该名称的设备,false否则:

bool SetGPU()
{
    int devicesCount;
    cudaGetDeviceCount(&devicesCount);
    string desiredDeviceName = "GTX XYZ";
    for(int deviceIndex = 0; deviceIndex < devicesCount; ++deviceIndex)
    {
        cudaDeviceProp deviceProperties;
        cudaGetDeviceProperties(&deviceProperties, deviceIndex);
        if (deviceProperties.name == desiredDeviceName)
        {
            cudaSetDevice(deviceIndex);
            return true;
        }
    }

    return false;
}

当然,您必须将desiredDeviceName变量的值更改为所需的值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用CUDA选择GPU?

来自分类Dev

如何确定Vulkan使用的是与CUDA相同的GPU?

来自分类Dev

使用多个CUDA GPU

来自分类Dev

如何确定CUDA GPU的性能?

来自分类Dev

CUDA编程:如何使我的Legacy GPU与CUDA 7.5工具包一起使用?

来自分类Dev

如何使用GPU-CUDA代码中的GPU-DMA复制数据?

来自分类Dev

如何选择特定的GPU

来自分类Dev

如何知道我的GPU是否支持CUDA?

来自分类Dev

使用CUDA在与GPU之间复制BIG数据

来自分类Dev

GPU使用情况监控(CUDA)

来自分类Dev

使用GPU / CUDA支持构建PCL库

来自分类Dev

如何使用CUDA将std :: vector <std :: string>复制到GPU设备

来自分类Dev

如何使用Python和Numba获取GPU中CUDA内核的数量?

来自分类Dev

如何使用Cuda将动态特征向量传递给GPU?

来自分类Dev

如何使用 SLURM 在带有 CUDA 的 GPU 网格上运行多个作业

来自分类Dev

如何在Windows 10上使用anaconda提示安装pytorch FROM SOURCE(已启用cuda的旧gpu弃用的CUDA cc 3.5)?

来自分类Dev

获得CUDA Thrust以使用您选择的CUDA流

来自分类Dev

当我使用推力:: counting_iterator时,如何为推力1.7(CUDA 5.5)选择后端?

来自分类Dev

TensorFlow选择要在多个GPU中使用的GPU

来自分类Dev

如何使用Direct2D的D2D1CreateFactory()选择GPU?

来自分类Dev

如何使Nvidia CUDA正常工作?(用于Blender中的GPU渲染)

来自分类Dev

如何了解CUDA / GPU中SASS分析的结果

来自分类Dev

从Linux内核的角度来看,用户程序如何与CUDA GPU通信?

来自分类Dev

如何使Nvidia CUDA正常工作?(用于Blender中的GPU渲染)

来自分类Dev

如何配置用于xserver的iGPU和用于CUDA的nvidia GPU

来自分类Dev

从 Linux 内核的角度来看,用户程序如何与 CUDA GPU 通信?

来自分类Dev

使用CUDA在GPU上并行处理简单算法

来自分类Dev

使用为Maxwell GPU上的计算能力3.7编译的CUDA?

来自分类Dev

使用CUDA在GPU上并行处理简单算法

Related 相关文章

  1. 1

    如何使用CUDA选择GPU?

  2. 2

    如何确定Vulkan使用的是与CUDA相同的GPU?

  3. 3

    使用多个CUDA GPU

  4. 4

    如何确定CUDA GPU的性能?

  5. 5

    CUDA编程:如何使我的Legacy GPU与CUDA 7.5工具包一起使用?

  6. 6

    如何使用GPU-CUDA代码中的GPU-DMA复制数据?

  7. 7

    如何选择特定的GPU

  8. 8

    如何知道我的GPU是否支持CUDA?

  9. 9

    使用CUDA在与GPU之间复制BIG数据

  10. 10

    GPU使用情况监控(CUDA)

  11. 11

    使用GPU / CUDA支持构建PCL库

  12. 12

    如何使用CUDA将std :: vector <std :: string>复制到GPU设备

  13. 13

    如何使用Python和Numba获取GPU中CUDA内核的数量?

  14. 14

    如何使用Cuda将动态特征向量传递给GPU?

  15. 15

    如何使用 SLURM 在带有 CUDA 的 GPU 网格上运行多个作业

  16. 16

    如何在Windows 10上使用anaconda提示安装pytorch FROM SOURCE(已启用cuda的旧gpu弃用的CUDA cc 3.5)?

  17. 17

    获得CUDA Thrust以使用您选择的CUDA流

  18. 18

    当我使用推力:: counting_iterator时,如何为推力1.7(CUDA 5.5)选择后端?

  19. 19

    TensorFlow选择要在多个GPU中使用的GPU

  20. 20

    如何使用Direct2D的D2D1CreateFactory()选择GPU?

  21. 21

    如何使Nvidia CUDA正常工作?(用于Blender中的GPU渲染)

  22. 22

    如何了解CUDA / GPU中SASS分析的结果

  23. 23

    从Linux内核的角度来看,用户程序如何与CUDA GPU通信?

  24. 24

    如何使Nvidia CUDA正常工作?(用于Blender中的GPU渲染)

  25. 25

    如何配置用于xserver的iGPU和用于CUDA的nvidia GPU

  26. 26

    从 Linux 内核的角度来看,用户程序如何与 CUDA GPU 通信?

  27. 27

    使用CUDA在GPU上并行处理简单算法

  28. 28

    使用为Maxwell GPU上的计算能力3.7编译的CUDA?

  29. 29

    使用CUDA在GPU上并行处理简单算法

热门标签

归档