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
对象代表设备没有清理它。
gpuDevice ([])
,一个空参数(相对于没有参数),取消选中的GPU设备和清理它的内存gpuArray
和CUDAKernel
变量。这个语法没有GPU设备选为当前的设备。
输入参数
indx
- - - - - -指数的GPU设备
整数
指数的GPU设备,指定为一个整数的范围1
来gpuDeviceCount
。
例子:gpuDevice (1);
数据类型:单
|双
|int8
|int16
|int32
|int64
|uint8
|uint16
|uint32
|uint64
属性
的名字
- - - - - -GPU设备的名称
字符数组
这个属性是只读的。
GPU设备的名称指定为一个字符数组。分配给设备的名称来源于GPU设备模型。
指数
- - - - - -指数的GPU设备
整数
这个属性是只读的。
指数的GPU设备,指定为一个整数的范围1
来gpuDeviceCount
。使用这个索引选择一个特定的GPU设备。
ComputeCapability
- - - - - -GPU设备的计算能力
字符数组
这个属性是只读的。
计算能力的GPU设备,指定为一个字符数组。在MATLAB使用选定的GPU设备,ComputeCapability
必须满足所需的规范GPU计算的需求。
万博1manbetxSupportsDouble
- - - - - -为支持双精度万博1manbetx
0
|1
这个属性是只读的。
为支持双精度操作,万博1manbetx指定为逻辑值0
为假
或1
为真正的
。
GraphicsDriverVersion
- - - - - -显卡驱动版本在使用
字符数组
DriverModel
- - - - - -显卡驱动的操作模型
“WDDM”
|“太极拳”
|“N / A”
自从R2023a
这个属性是只读的。
显卡驱动的操作模型,指定这些值之一:
“WDDM”
——使用显示操作模式。“太极拳”
——使用计算操作模型。“太极拳”
禁用Windows®图形和可以提高大规模计算的性能。“N / A”
- - - - - -“WDDM”
和“太极拳”
只能在Windows上。在其他操作系统驱动程序模型“N / A”
。
关于改变的更多信息模型和GPU设备支持万博1manbetx“太极拳”
,请参阅英伟达®文档。
ToolkitVersion
- - - - - -CUDA工具包版本
标量
这个属性是只读的。
CUDA工具包使用MATLAB的当前版本,版本指定为一个标量值。
MaxThreadsPerBlock
- - - - - -最大支持的每个块万博1manbetx的线程数
标量
这个属性是只读的。
最大支持每个块的万博1manbetx线程数量CUDAKernel
执行,指定为一个标量值。
例子:1024年
MaxShmemPerBlock
- - - - - -最大支持的共享内万博1manbetx存
标量
这个属性是只读的。
最大支持线程的共万博1manbetx享内存块时可以使用CUDAKernel
执行,指定为一个标量值。
例子:49152年
MaxThreadBlockSize
- - - - - -最大大小在每个维度线程阻塞
向量
这个属性是只读的。
最大大小在每个维度线程阻塞,指定为一个向量。每个尺寸一个线程块不得超过这些维度。此外,线程块大小不得超过的产物MaxThreadsPerBlock
。
MaxGridSize
- - - - - -最大尺寸的网格线
向量
这个属性是只读的。
指定的线程块,最大大小的网格作为一个向量。
SIMDWidth
- - - - - -同时执行线程的数量
标量
这个属性是只读的。
同时执行的线程数量,指定为一个标量值。
TotalMemory
- - - - - -总内存
标量
这个属性是只读的。
总内存(以字节为单位)在设备上,指定为一个标量值。
AvailableMemory
- - - - - -总可用内存数据
标量
这个属性是只读的。
总内存(字节)数据,指定为一个标量值。这个属性只对当前选中的设备是可用的。这个值可以不同于价值报告的NVIDIA由于内存缓存系统管理界面。
CachePolicy
- - - - - -目前GPU设备的缓存策略
“平衡”
|“最低”
|“最大”
自从R2023a
缓存策略的GPU设备,指定为“平衡”
,“最低”
,或“最大”
。缓存策略决定了GPU内存可以缓存加速计算,指定为以下值之一。
“最低”
——可以缓存的内存量在GPU设备是最小的。“平衡”
——可以缓存的内存量GPU设备是平衡的。这一政策提供了一个平衡GPU内存使用和计算性能。“最大”
——可以缓存的内存量在GPU设备只有设备的总内存是有限的。
默认值是“平衡”
设备在“默认”
或“禁止”
计算模式和“最大”
设备在“独家过程”
计算模式。计算模式属性的更多信息,请参阅ComputeMode
。
请注意
重置设备使用
重置
,清理设备使用gpuDevice ([])
,或选择另一个设备使用gpuDevice
重置默认策略的缓存策略。保存和加载文件包含一个垫
GPUDevice
对象不保存缓存策略。你不能设置的设备的缓存策略不是选择。例如,在存储
GPUDevice
对象数组并选择另一个设备,您不能设置的缓存策略GPUDevice
对象。
MultiprocessorCount
- - - - - -流多处理器的数量
标量
这个属性是只读的。
流多处理器的数量目前在设备上,指定为一个标量值。
ClockRateKHz
- - - - - -时钟频率峰值
标量
这个属性是只读的。
时钟频率峰值的GPU kHz,指定为一个标量值。
ComputeMode
- - - - - -计算模式
字符数组
这个属性是只读的。
设备的计算模式,指定为以下值之一。
“默认” |
设备是不受限制,同时和多个应用程序可以使用它。MATLAB可以与其他应用程序共享设备,包括其他MATLAB会话或工人。 |
“独家过程” |
一次只有一个应用程序可以使用设备。而MATLAB的设备选择,其他应用程序不使用它,包括其他MATLAB会话或工人。 |
“禁止” |
设备无法使用。 |
改变你的GPU的计算模式的更多信息设备,查阅英伟达文档。
GPUOverlapsTransfers
- - - - - -为支持重叠转移万博1manbetx
0
|1
这个属性是只读的。
为支持重叠转移,指万博1manbetx定为逻辑值0
或1
。
KernelExecutionTimeout
- - - - - -国旗为长时间运行的内核超时
0
|1
这个属性是只读的。
国旗为长时间运行的内核,超时指定为逻辑值0
或1
。如果1
,操作系统的地方CUDA的上限时间允许内核执行。这一次之后,CUDA驱动次内核并返回一个错误。
CanMapHostMemory
- - - - - -为支持主机内存映射万博1manbetx
0
|1
这个属性是只读的。
为支持主机内存映射万博1manbetx到CUDA地址空间,指定为逻辑值0
或1
。
Device万博1manbetxSupported
- - - - - -为支持设备万博1manbetx
0
|1
这个属性是只读的。
为支持设备,指定的万博1manbetx逻辑值0
或1
。并不是所有的设备都支持;万博1manbetx例如,设备不足ComputeCapability
。
DeviceAvailable
- - - - - -标记可用设备
0
|1
这个属性是只读的。
标记可用设备,指定的逻辑值0
或1
。这个属性表示设备是否可用MATLAB在当前会话。支持万博1manbetx的设备,Device万博1manbetxSupported
的属性0
总是不可用。如果它的设备也可以不可用ComputeMode
属性设置为“独家线程”
,“独家过程”
,或“禁止”
。
DeviceSelected
- - - - - -为当前选中的设备
0
|1
这个属性是只读的。
国旗为当前选中设备,指定的逻辑值0
或1
。
对象的功能
您可以识别、选择重置,或等待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
例子
识别和选择一个GPU设备
这个例子展示了如何使用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环境。
查询计算功能
创建一个对象代表默认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
访问CachePolicy
GPU设备的属性。
D.CachePolicy
ans = '平衡'
改变缓存策略允许缓存的最大内存量的GPU加速计算。
D.CachePolicy=“最大”;D.CachePolicy
ans =“最大”
重置缓存策略默认策略通过设置属性[]
。
D.CachePolicy= [];
调用重置(D)
或选择另一个设备gpuDevice
也重置缓存策略的默认值。
使用多个gpu并行池
如果你有几个gpu,你可以执行你的计算在多个gpu并行使用并行池。
可用来确定数量的gpu用于MATLAB、使用gpuDeviceCount
函数。
availableGPUs = gpuDeviceCount (“可用”)
availableGPUs = 3
开始一个尽可能多的工人提供gpu并行池。为获得最佳性能,MATLAB分配一个不同的GPU默认每个工人。
parpool (“过程”,availableGPUs);
开始平行池(parpool)使用过程的概要文件…连接到平行池(工人数量:3)。
确定每个职工使用GPU,称之为gpuDevice
在一个spmd
块。的spmd
块运行gpuDevice
在每一个工人。
spmdgpuDevice结束
使用并行语言特性,如parfor
或parfeval
,分发计算工人并行池中。如果你使用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”));
版本历史
介绍了R2010bR2023a:更改设备属性
GraphicsDriverVersion
属性添加到显示当前使用的显卡驱动版本。DriverModel
属性添加到显示图形驱动程序在Windows的操作模型。CachePolicy
属性添加到允许更改GPU内存缓存策略。的
DriverVersion
房地产不再是默认显示但你仍然可以查询属性使用点符号。没有删除的计划DriverVersion
财产。
MATLAB命令
你点击一个链接对应MATLAB命令:
运行该命令通过输入MATLAB命令窗口。Web浏览器不支持MATLAB命令。万博1manbetx
你也可以从下面的列表中选择一个网站:
表现最好的网站怎么走吗
选择中国网站(中文或英文)最佳站点的性能。其他MathWorks国家网站不优化的访问你的位置。