gpuDeviceCount
现有 GPU 设备的数量
说明
返回本地机器中存在的 GPU 设备数量,由 GPU 设备驱动程序报告。驱动程序报告的所有设备都会被统计,包括 MATLAB® 中不支持的设备和当前 MATLAB 会话中无法使用的设备。 n
= gpuDeviceCount
示例
统计和查询 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,则可以使用并行池在多个 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
代码块内调用 gpuDevice
。spmd
代码块在每个工作进程上运行 gpuDevice
。
spmd gpuDevice end
使用并行语言功能(例如 parfor
或 parfeval
)将您的计算分配给并行池中的工作进程。如果您在计算中使用启用 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"));
输入参数
countMode
— 设备计数模式
"all"
(默认) | "supported"
| "available"
设备计数模式,指定为下列之一:
"all"
- 计算 GPU 设备驱动程序报告的所有 GPU 设备数量。该计数包括 MATLAB 中不支持的设备和当前 MATLAB 会话中无法使用的设备。"supported"
- 仅计算当前版本 MATLAB 支持的 GPU 设备。"available"
- 仅计算当前 MATLAB 会话中可用的 GPU 设备。
示例: "available"
数据类型: char
| string
输出参量
扩展功能
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
该函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
版本历史记录
在 R2010b 中推出
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)