MATLAB 帮助中心
本页采用了机器翻译。点击此处可查看最新英文版本。
现有 GPU 设备的数量
n = gpuDeviceCount
n = gpuDeviceCount(countMode)
[n,indx] = gpuDeviceCount(___)
n = gpuDeviceCount 返回本地计算机中存在的 GPU 设备数量,由 GPU 设备驱动程序报告。驱动程序报告的所有设备都会被统计,包括 MATLAB® 中不支持的设备和当前 MATLAB 会话中无法使用的设备。
n
示例
n = gpuDeviceCount(countMode) 返回您的计算机中的 GPU 设备数量,按照 countMode 进行计数。使用此语法仅计算受支持的 GPU 设备,或仅计算在此 MATLAB 会话中可用的设备。
countMode
[n,indx] = gpuDeviceCount(___) 还返回任何先前语法的计数 GPU 设备的索引。当您想要选择或检查计数的 GPU 设备时请使用此语法。
indx
全部折叠
确定计算机中可用的 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函数。
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,请在 gpuDevice 代码块内调用 spmd。spmd 代码块在每个工作单元上运行 gpuDevice。
gpuDevice
spmd
spmd gpuDevice end
使用并行语言功能(例如 parfor 或 parfeval)将您的计算分配给并行池中的工作单元。如果您在计算中使用启用 gpuArray 的函数,这些函数将在工作单元的 GPU 上运行。有关详细信息,请参阅在 GPU 上运行 MATLAB 函数。有关示例,请参阅 在多个 GPU 上运行 MATLAB 函数。
parfor
parfeval
gpuArray
完成计算后,关闭并行池。您可以使用gcp函数来获取当前并行池。
gcp
delete(gcp("nocreate"));
如果您想使用不同的 GPU,那么您可以使用 gpuDevice 在每个工作单元上选择特定的 GPU,并使用 GPU 设备索引。您可以使用 gpuDeviceCount 函数获取系统中每个 GPU 设备的索引。
假设您的系统中有三个可用的 GPU,但您只想使用两个进行计算。获取设备的索引。
[availableGPUs,gpuIndx] = gpuDeviceCount("available")
gpuIndx = 1×3 1 2 3
定义您想要使用的设备的索引。
useGPUs = [1 3];
启动您的并行池。使用 spmd 代码块和 gpuDevice 将每个工作单元与您想要使用的 GPU 之一关联起来,并使用设备索引。spmdIndex 函数标识每个工作单元的索引。
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。
完成计算后,关闭并行池。
"all"
"supported"
"available"
设备计数模式,指定为下列之一:
"all" - 计算 GPU 设备驱动程序报告的所有 GPU 设备数量。该计数包括 MATLAB 中不支持的设备和当前 MATLAB 会话中无法使用的设备。
"supported" - 仅计算当前版本 MATLAB 支持的 GPU 设备。
"available" - 仅计算当前 MATLAB 会话中可用的 GPU 设备。
示例: "available"
数据类型: char | string
char
string
GPU 设备的数量,以正标量返回。
GPU 设备的索引,以数值向量形式返回。indx 的每个元素都是一个计数的 GPU 设备的设备索引。使用设备索引选择或使用 gpuDevice 函数查询 GPU 设备。
全部展开
backgroundPool
ThreadPool
该函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
在 R2010b 中推出
arrayfun | feval | gpuDevice | CUDAKernel | gpuDeviceTable | gpuArray
arrayfun
feval
CUDAKernel
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
欧洲
亚太
联系您当地的办事处