主要内容

gpuDevice

查询或选择一个GPU设备

描述

一个GPUDevice对象表示一个图形处理单元(GPU)在你的电脑。您可以使用GPU MATLAB运行®支持的代码万博1manbetxgpuArray变量或执行CUDA内核使用CUDAKernel对象。

您可以使用一个GPUDevice对象检查你的GPU设备的属性重置GPU设备,或者等待你的GPU完成执行计算。获得一个GPUDevice对象,使用gpuDevice函数。你也可以选择或取消选择您的GPU设备使用gpuDevice函数。如果你有访问多个gpu,使用gpuDevice函数来选择特定的GPU设备上执行代码。

你不需要使用GPUDevice对象在GPU上运行功能。如何使用GPU-enabled函数的更多信息,参见运行在GPU MATLAB函数

创建

描述

gpuDevice显示当前选中的GPU设备的属性。如果没有当前选中设备,gpuDevice选择默认的设备没有清理它。当你想使用这个语法检查你的GPU设备的属性。

例子

D = gpuDevice返回一个GPUDevice表示当前选择的设备对象。如果没有当前选中设备,gpuDevice选择并返回一个默认的设备GPUDevice对象代表设备没有清理它。

例子

D = gpuDevice (indx)选择指定的GPU设备索引indx。如果指定的GPU设备不支持,出现一个错误。万博1manbetx这个语法重置指定的设备和清除它的记忆,即使设备已经当前选择(相当于重置功能)。所有工作空间变量代表gpuArrayCUDAKernel变量现在无效,必须清除工作区或重新定义。

例子

gpuDevice ([]),一个空参数(相对于没有参数),取消选中的GPU设备和清理它的内存gpuArrayCUDAKernel变量。这个语法没有GPU设备选为当前的设备。

输入参数

全部展开

指数的GPU设备,指定为一个整数的范围1gpuDeviceCount

例子:gpuDevice (1);

数据类型:||int8|int16|int32|int64|uint8|uint16|uint32|uint64

属性

全部展开

这个属性是只读的。

GPU设备的名称指定为一个字符数组。分配给设备的名称来源于GPU设备模型。

这个属性是只读的。

指数的GPU设备,指定为一个整数的范围1gpuDeviceCount。使用这个索引选择一个特定的GPU设备。

这个属性是只读的。

计算能力的GPU设备,指定为一个字符数组。在MATLAB使用选定的GPU设备,ComputeCapability必须满足所需的规范GPU计算的需求

这个属性是只读的。

为支持双精度操作,万博1manbetx指定为逻辑值01真正的

自从R2023a

这个属性是只读的。

显卡驱动版本目前使用的GPU设备,指定为一个字符数组。

下载最新的显卡驱动你的GPU英伟达驱动程序下载

自从R2023a

这个属性是只读的。

显卡驱动的操作模型,指定这些值之一:

  • “WDDM”——使用显示操作模式。

  • “太极拳”——使用计算操作模型。“太极拳”禁用Windows®图形和可以提高大规模计算的性能。

  • “N / A”- - - - - -“WDDM”“太极拳”只能在Windows上。在其他操作系统驱动程序模型“N / A”

关于改变的更多信息模型和GPU设备支持万博1manbetx“太极拳”,请参阅英伟达®文档。

这个属性是只读的。

CUDA工具包使用MATLAB的当前版本,版本指定为一个标量值。

这个属性是只读的。

最大支持每个块的万博1manbetx线程数量CUDAKernel执行,指定为一个标量值。

例子:1024年

这个属性是只读的。

最大支持线程的共万博1manbetx享内存块时可以使用CUDAKernel执行,指定为一个标量值。

例子:49152年

这个属性是只读的。

最大大小在每个维度线程阻塞,指定为一个向量。每个尺寸一个线程块不得超过这些维度。此外,线程块大小不得超过的产物MaxThreadsPerBlock

这个属性是只读的。

指定的线程块,最大大小的网格作为一个向量。

这个属性是只读的。

同时执行的线程数量,指定为一个标量值。

这个属性是只读的。

总内存(以字节为单位)在设备上,指定为一个标量值。

这个属性是只读的。

总内存(字节)数据,指定为一个标量值。这个属性只对当前选中的设备是可用的。这个值可以不同于价值报告的NVIDIA由于内存缓存系统管理界面。

自从R2023a

缓存策略的GPU设备,指定为“平衡”,“最低”,或“最大”。缓存策略决定了GPU内存可以缓存加速计算,指定为以下值之一。

  • “最低”——可以缓存的内存量在GPU设备是最小的。

  • “平衡”——可以缓存的内存量GPU设备是平衡的。这一政策提供了一个平衡GPU内存使用和计算性能。

  • “最大”——可以缓存的内存量在GPU设备只有设备的总内存是有限的。

默认值是“平衡”设备在“默认”“禁止”计算模式和“最大”设备在“独家过程”计算模式。计算模式属性的更多信息,请参阅ComputeMode

请注意

  • 重置设备使用重置,清理设备使用gpuDevice ([]),或选择另一个设备使用gpuDevice重置默认策略的缓存策略。

  • 保存和加载文件包含一个垫GPUDevice对象不保存缓存策略。

  • 你不能设置的设备的缓存策略不是选择。例如,在存储GPUDevice对象数组并选择另一个设备,您不能设置的缓存策略GPUDevice对象。

这个属性是只读的。

流多处理器的数量目前在设备上,指定为一个标量值。

这个属性是只读的。

时钟频率峰值的GPU kHz,指定为一个标量值。

这个属性是只读的。

设备的计算模式,指定为以下值之一。

“默认” 设备是不受限制,同时和多个应用程序可以使用它。MATLAB可以与其他应用程序共享设备,包括其他MATLAB会话或工人。
“独家过程” 一次只有一个应用程序可以使用设备。而MATLAB的设备选择,其他应用程序不使用它,包括其他MATLAB会话或工人。
“禁止” 设备无法使用。

改变你的GPU的计算模式的更多信息设备,查阅英伟达文档。

这个属性是只读的。

为支持重叠转移,指万博1manbetx定为逻辑值01

这个属性是只读的。

国旗为长时间运行的内核,超时指定为逻辑值01。如果1,操作系统的地方CUDA的上限时间允许内核执行。这一次之后,CUDA驱动次内核并返回一个错误。

这个属性是只读的。

为支持主机内存映射万博1manbetx到CUDA地址空间,指定为逻辑值01

这个属性是只读的。

为支持设备,指定的万博1manbetx逻辑值01。并不是所有的设备都支持;万博1manbetx例如,设备不足ComputeCapability

这个属性是只读的。

标记可用设备,指定的逻辑值01。这个属性表示设备是否可用MATLAB在当前会话。支持万博1manbetx的设备,Device万博1manbetxSupported的属性0总是不可用。如果它的设备也可以不可用ComputeMode属性设置为“独家线程”,“独家过程”,或“禁止”

这个属性是只读的。

国旗为当前选中设备,指定的逻辑值01

对象的功能

您可以识别、选择重置,或等待GPU设备使用以下功能:

gpuDeviceCount GPU设备数量
重置 重置GPU设备和清晰的记忆
等待(GPUDevice) 等待GPU计算完成

还可以使用以下功能:

parallel.gpu.GPUDevice.isAvailable (indx) 返回逻辑1真正的如果指定的GPU指数indx支持和万博1manbetx选择的能力。indx可以是一个整数或一个整数向量;默认索引是当前的设备。
parallel.gpu.GPUDevice.getDevice (indx) 返回一个GPUDevice对象没有选择它。

函数的完整列表,使用方法功能上的GPUDevice对象:

方法(“parallel.gpu.GPUDevice”)

你可以得到帮助在任何对象的功能使用下面的命令:

帮助parallel.gpu.GPUDevice。functionname

在哪里functionname函数的名称。例如,要获取帮助isAvailable类型:

帮助parallel.gpu.GPUDevice.isAvailable

例子

全部折叠

这个例子展示了如何使用gpuDevice识别并选择您想要使用的设备。

确定多少GPU设备可用在你的电脑,使用gpuDeviceCount函数。

gpuDeviceCount (“可用”)
ans = 2

当有多个设备,第一个是默认的。你可以检查它的属性gpuDeviceTable函数来确定是您想要使用的。

gpuDeviceTable
ans =2×5表索引名称ComputeCapability DeviceAvailable DeviceSelected _____ _____________ _________________ 1售予* * *“NVIDIA RTX A5000”“8.6”真假2”住宅区P620”“6.1”真正的事实

如果第一个设备设备要使用,你可以继续。运行在GPU计算,使用gpuArray启用的功能。有关更多信息,请参见运行在GPU MATLAB函数

使用另一个设备,电话gpuDevice与其他设备的索引。

gpuDevice (2)
ans = CUDADevice属性:名称:“方形住宅区P620”指数:2 ComputeCapability:“6.1”SupportsDouble: 1 GraphicsD万博1manbetxriverVersion:“511.79”DriverModel:“WDDM”ToolkitVersion: 11.2000 MaxThreadsPerBlock: 1024 MaxShmemPerBlock: 49152 (49.15 KB) MaxThreadBlockSize: [1024 1024 64] MaxGridSize: [2.1475 e + 09年65535 65535]SIMDWidth: 32 TotalMemory: 2147287040 (2.15 GB) AvailableMemory: 1615209678 (1.62 GB) CachePolicy:“平衡”MultiprocessorCount: 4 ClockRateKHz: 0 ComputeMode:“违约”GPUOverlapsTransfers: 1 KernelExecutionTimeout: 1 CanMapHostMemory: 1 DeviceSupported: 1 DeviceAvailable: 1 DeviceSelected: 1

或者,您可以确定有多少GPU设备可用,检查他们的一些属性,并选择一个设备使用MATLAB®桌面。在选项卡,环境区域,选择平行>选择GPU环境

gpuDevice2.png

创建一个对象代表默认GPU设备和查询其计算能力。

D = gpuDevice;D.ComputeCapability
ans = ' 8.6 '

查询所有可用的GPU设备的计算能力。

idx = 1: gpuDeviceCount D = gpuDevice (idx);流(1,“设备%我ComputeCapability % s \ n”,D.Index D.ComputeCapability)结束
设备1 ComputeCapability 8.6设备2 ComputeCapability 6.1

比较GPU的计算功能和可用性设备在您的系统使用gpuDeviceTable

gpuDeviceTable
ans =2×5表索引名称ComputeCapability DeviceAvailable DeviceSelected _____ _____________ _________________ 1售予* * *“NVIDIA RTX A5000”“8.6”真假2”住宅区P620”“6.1”真正的事实

改变你的GPU的缓存策略。

创建一个对象代表默认GPU设备。

D = gpuDevice
D = CUDADevice属性:名称:“英伟达RTX A5000”指数:1 ComputeCapability:“8.6”SupportsDouble: 1 GraphicsDri万博1manbetxverVersion:“511.79”DriverModel:“太极拳”ToolkitVersion: 11.2000 MaxThreadsPerBlock: 1024 MaxShmemPerBlock: 49152 (49.15 KB) MaxThreadBlockSize: [1024 1024 64] MaxGridSize: [2.1475 e + 09年65535 65535]SIMDWidth: 32 TotalMemory: 25553076224 (25.55 GB) AvailableMemory: 25145376768 (25.15 GB) CachePolicy:“平衡”MultiprocessorCount: 64 ClockRateKHz: 0 ComputeMode:“违约”GPUOverlapsTransfers: 1 KernelExecutionTimeout: 0 CanMapHostMemory: 1 DeviceSupported: 1 DeviceAvailable: 1 DeviceSelected: 1

访问CachePolicyGPU设备的属性。

D.CachePolicy
ans = '平衡'

改变缓存策略允许缓存的最大内存量的GPU加速计算。

D.CachePolicy=“最大”;D.CachePolicy
ans =“最大”

重置缓存策略默认策略通过设置属性[]

D.CachePolicy= [];

调用重置(D)或选择另一个设备gpuDevice也重置缓存策略的默认值。

如果你有几个gpu,你可以执行你的计算在多个gpu并行使用并行池。

可用来确定数量的gpu用于MATLAB、使用gpuDeviceCount函数。

availableGPUs = gpuDeviceCount (“可用”)
availableGPUs = 3

开始一个尽可能多的工人提供gpu并行池。为获得最佳性能,MATLAB分配一个不同的GPU默认每个工人。

parpool (“过程”,availableGPUs);
开始平行池(parpool)使用过程的概要文件…连接到平行池(工人数量:3)。

确定每个职工使用GPU,称之为gpuDevice在一个spmd块。的spmd块运行gpuDevice在每一个工人。

spmdgpuDevice结束

使用并行语言特性,如parforparfeval,分发计算工人并行池中。如果你使用gpuArray使计算函数,这些函数运行在GPU上的工人。有关更多信息,请参见运行在GPU MATLAB函数。例如,看到的运行在多个gpu MATLAB函数

当你完成了你的计算,关闭平行池。您可以使用gcp函数获得当前并行池。

删除(gcp (“nocreate”));

如果你想使用一个不同的gpu的选择,那么你可以使用gpuDevice选择一个特定的GPU在每个工人,利用GPU设备索引。您可以获得的指数GPU设备系统中使用gpuDeviceCount函数。

假设你有三个gpu可在您的系统,但是你想用只有两个计算。获取设备的指标。

[availableGPUs, gpuIndx] = gpuDeviceCount (“可用”)
availableGPUs = 3
gpuIndx =1×31 2 3

定义要使用的设备的指标。

useGPUs = [1 3];

开始你的平行池。使用一个spmd块和gpuDevice把每个工人和一个您想要使用gpu,使用设备索引。的spmdIndex识别每个工人的指数函数。

parpool (“过程”元素个数(useGPUs));
开始平行池(parpool)使用过程的概要文件…连接到平行池(工人数量:2)。
spmdgpuDevice (useGPUs (spmdIndex));结束

作为一项最佳实践,和最佳性能,为每个工人分配不同的GPU。

当你完成了你的计算,关闭平行池。

删除(gcp (“nocreate”));

版本历史

介绍了R2010b

全部展开