主要内容

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

GPUDeviceManager

命名空间: parallel.gpu

GPU 设备管理器

描述

parallel.gpu.GPUDeviceManager 广播指示何时选择、取消选择或重置 GPU 设备的事件。使用 parallel.gpu.GPUDeviceManager 设置通知,当您的 GPU 设备被选中、取消选中或重置时通知您,而无需调用 gpuDevice 或监控存储在 GPU 上的数据。您还可以使用 parallel.gpu.GPUDeviceManager 在选择 GPU 时自动更改 GPU 设置。

创建对象

描述

gdm = parallel.gpu.GPUDeviceManager.instance 访问 GPU 设备管理器 gdm,该管理器广播指示何时选择、取消选择或重置 GPU 设备的事件。

示例

注意

您只能使用给定的 MATLAB 会话中可用的一个 parallel.gpu.GPUDeviceManager 实例。

属性

全部展开

选定的 GPU 设备,指定为 GPUDevice 对象。如果没有选择 GPU 设备,则该属性为空的 GPUDevice 数组。

属性:

GetAccess
public

方法

全部展开

事件

事件名称触发事件数据事件属性
DeviceSelected选择 GPU 设备后触发。

parallel.gpu.GPUDeviceEventData

属性:

  • DeviceIndex - 所选 GPU 设备的索引。

NotifyAccess: private

ListenAccess: public

DeviceDeselecting在取消选择 GPU 设备之前触发。

parallel.gpu.GPUDeviceEventData

属性:

  • DeviceIndex - 正在取消选择的 GPU 设备的索引。

NotifyAccess: private

ListenAccess: public

注意

当您重置 GPU 设备时,软件会触发 DeviceDeselecting,然后触发 DeviceSelected

有关使用事件的更多信息,请参阅本页上的示例和事件和侦听程序概述

示例

全部折叠

创建一个 parallel.gpu.DeviceManager 对象。

gdm = parallel.gpu.GPUDeviceManager.instance
gdm = 
  GPUDeviceManager with properties:

    SelectedDevice: [0×0 parallel.gpu.CUDADevice]

选择一个 GPU 设备并使用 GPU 设备管理器检查所选的 GPU 设备。

gpu = gpuDevice;
gdm.SelectedDevice
ans = 
  CUDADevice with properties:

                 Name: 'NVIDIA RTX A5000'
                Index: 1 (of 2)
    ComputeCapability: '8.6'
          DriverModel: 'TCC'
          TotalMemory: 25544294400 (25.54 GB)
      AvailableMemory: 25120866304 (25.12 GB)
      DeviceAvailable: true
       DeviceSelected: true

  Show all properties.

创建一个 parallel.gpu.DeviceManager 对象。

gdm = parallel.gpu.GPUDeviceManager.instance;

创建当选择或取消选择 GPU 设备时软件调用的回调函数。这些函数显示 GPU 的设备索引以及它是否已被选中或取消选择。即使不使用,回调函数也必须定义至少两个输入参量:事件源和事件数据。有关详细信息,请参阅事件和侦听程序概述

selectedMessage = @(source,event) disp("GPU device " + event.DeviceIndex + " selected.");
deselectedMessage = @(source,event) disp("GPU device " + event.DeviceIndex + " deselected.");

创建事件监听器,绑定到 GPU 设备管理器 DeviceSelectedDeviceDeselectinggdm 事件,调用回调函数。

selectedListener = listener(gdm,"DeviceSelected",selectedMessage);
deselectedListener = listener(gdm,"DeviceDeselecting",deselectedMessage);

要检查回调函数和监听器是否配置正确,请选择和取消选择您的 GPU。

gpuDevice;
GPU device 1 selected.
gpuDevice([]);
GPU device 1 deselected.

要删除监听器,请删除监听器对象。

delete(selectedListener)
delete(deselectedListener)

创建一个 parallel.gpu.DeviceManager 对象。

gdm = parallel.gpu.GPUDeviceManager.instance;

setCachePolicy 函数创建一个函数句柄。本示例末尾定义的 setCachePolicy 函数将选定 GPU 的缓存策略更改为 'maximum'

selectedFcn = @(source,event) setCachePolicy(source);

创建一个事件监听器,绑定到 GPU 设备管理器 DeviceSelectedgdm 事件,调用回调函数 selectedFcn。当选择新的 GPU 设备时,软件将缓存策略设置为 'maximum'gpuDevice 对象的 cachePolicy 属性决定了可以缓存多少 GPU 内存来加速计算。

selectedListener = listener(gdm,"DeviceSelected",selectedFcn);

要检查回调函数和监听器是否配置正确,请取消选择任何已选择的 GPU,然后选择您的 GPU 并检查其 CachePolicy 属性。

gpuDevice([]);
gpu = gpuDevice;
NVIDIA RTX A5000 GPU selected.
Current caching policy: balanced
Setting caching policy to maximum.
gpu.CachePolicy
ans = 
'maximum'

要删除侦听器,请删除侦听器对象。

delete(selectedListener)

设置缓存策略函数

setCachePolicy 函数接收 GPU 设备管理器对象 source,并改变当前选定的 GPU 设备的缓存策略。

function setCachePolicy(gdm)

% Display selected GPU name and caching policy.
disp(gdm.SelectedDevice.Name + " GPU selected.")
disp("Current caching policy: " + gdm.SelectedDevice.CachePolicy)

% Set the caching policy to maximum.
disp("Setting caching policy to maximum.")
gdm.SelectedDevice.CachePolicy = "maximum";

end

扩展功能

全部展开

版本历史记录

在 R2016a 中推出