メインコンテンツ

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 デバイスが選択、選択解除、またはリセットされたときにイベントをブロードキャストする GPU デバイス マネージャー gdm にアクセスします。

メモ

特定の MATLAB セッションで利用可能な parallel.gpu.GPUDeviceManager の 1 つのインスタンスのみを使用できます。

プロパティ

すべて展開する

選択された GPU デバイス。GPUDevice オブジェクトとして指定します。GPU デバイスが選択されていない場合、このプロパティは空の GPUDevice 配列になります。

属性:

GetAccess
public

メソッド

すべて展開する

イベント

イベント名トリガーイベント データイベント属性
DeviceSelectedGPU デバイスが選択された後にトリガーされる。

parallel.gpu.GPUDeviceEventData

プロパティ:

  • DeviceIndex - 選択された GPU デバイスのインデックス。

NotifyAccess: private

ListenAccess: public

DeviceDeselectingGPU デバイスが選択解除される直前にトリガーされる。

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 のデバイス インデックスと、デバイスが選択されたか選択解除されるかを表示します。コールバック関数は、たとえ使用されなくても、少なくとも 2 つの入力引数、すなわちイベントソースとイベントデータが定義されている必要があります。詳細については、イベントとリスナーの概要を参照してください。

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

GPU デバイス マネージャー gdmDeviceSelected イベントと DeviceDeselecting イベントにバインドされた、コールバック関数を呼び出すイベント リスナーを作成します。

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 デバイス マネージャー gdmDeviceSelected イベントにバインドされた、コールバック関数 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 で導入