Main Content

本页采用了机器翻译。点击此处可查看英文原文。

gpuDeviceCount

现有 GPU 设备的数量

    说明

    示例

    n = gpuDeviceCount 返回本地机器中存在的 GPU 设备数量,由 GPU 设备驱动程序报告。驱动程序报告的所有设备都会被统计,包括 MATLAB® 中不支持的设备和当前 MATLAB 会话中无法使用的设备。

    示例

    n = gpuDeviceCount(countMode) 返回您的机器中的 GPU 设备数量,按照 countMode 进行计数。使用此语法仅计算受支持的 GPU 设备,或仅计算在此 MATLAB 会话中可用的设备。

    示例

    [n,indx] = gpuDeviceCount(___) 还返回任何先前语法的计数 GPU 设备的索引。当您想要选择或检查计数的 GPU 设备时请使用此语法。

    示例

    全部折叠

    确定计算机中可用的 GPU 设备数量及其索引。

    [n,indx] = gpuDeviceCount
    n = 2
    indx =   
         1     2
    

    使用 gpuDeviceTable 查询 GPU 的属性。

    gpuDeviceTable
    ans = 
        Index        Name              ComputeCapability    DeviceAvailable    DeviceSelected
        _____    __________________    _________________    _______________    ______________
    
          1      "TITAN RTX"                 "7.5"               true              false     
          2      "GeForce GTX 1080"          "5.0"               true              true      
    
    

    如果您可以访问多个 GPU,则可以使用并行池在多个 GPU 上并行执行计算。

    要确定 MATLAB 中可用的 GPU 数量,请使用 gpuDeviceCount函数。

    availableGPUs = gpuDeviceCount("available")
    availableGPUs = 3
    

    启动一个并行池,其工作进程数量与可用的 GPU 数量相同。为了获得最佳性能,MATLAB 默认为每个工作进程分配不同的 GPU。

    parpool("Processes",availableGPUs);
    Starting parallel pool (parpool) using the 'Processes' profile ...
    Connected to the parallel pool (number of workers: 3).
    

    要识别每个工作进程正在使用哪个 GPU,请在 spmd 代码块内调用 gpuDevicespmd 代码块在每个工作进程上运行 gpuDevice

    spmd
        gpuDevice
    end

    使用并行语言功能(例如 parforparfeval)将您的计算分配给并行池中的工作进程。如果您在计算中使用启用 gpuArray 的函数,这些函数将在工作进程的 GPU 上运行。有关详细信息,请参阅在 GPU 上运行 MATLAB 函数。有关示例,请参阅 在多个 GPU 上运行 MATLAB 函数

    完成计算后,关闭并行池。您可以使用gcp函数来获取当前并行池。

    delete(gcp("nocreate"));

    如果您想使用不同的 GPU,那么您可以使用 gpuDevice 在每个工作进程上选择特定的 GPU,并使用 GPU 设备索引。您可以使用 gpuDeviceCount 函数获取系统中每个 GPU 设备的索引。

    假设您的系统中有三个可用的 GPU,但您只想使用两个进行计算。获取设备的索引。

    [availableGPUs,gpuIndx] = gpuDeviceCount("available")
    availableGPUs = 3
    
    gpuIndx = 1×3
    
         1     2     3
    
    

    定义您想要使用的设备的索引。

    useGPUs = [1 3];

    启动您的并行池。使用 spmd 代码块和 gpuDevice 将每个工作进程与您想要使用的 GPU 之一关联起来,并使用设备索引。spmdIndex 函数标识每个工作进程的索引。

    parpool("Processes",numel(useGPUs));
    Starting parallel pool (parpool) using the 'Processes' profile ...
    Connected to the parallel pool (number of workers: 2).
    
    spmd
        gpuDevice(useGPUs(spmdIndex));
    end

    作为最佳实践,为了获得最佳性能,请为每个工作进程分配不同的 GPU。

    完成计算后,关闭并行池。

    delete(gcp("nocreate"));

    输入参数

    全部折叠

    设备计数模式,指定为下列之一:

    • "all" - 计算 GPU 设备驱动程序报告的所有 GPU 设备数量。该计数包括 MATLAB 中不支持的设备和当前 MATLAB 会话中无法使用的设备。

    • "supported" - 仅计算当前版本 MATLAB 支持的 GPU 设备。

    • "available" - 仅计算当前 MATLAB 会话中可用的 GPU 设备。

    示例: "available"

    数据类型: char | string

    输出参量

    全部折叠

    GPU 设备的数量,以正标量返回。

    GPU 设备的索引,以数值向量形式返回。indx 的每个元素都是一个计数的 GPU 设备的设备索引。使用设备索引选择或使用 gpuDevice 函数查询 GPU 设备。

    扩展功能

    版本历史记录

    在 R2010b 中推出