複数のGPUにアクセスできる場合,並列プールを使用して複数のGPUで並列計算を実行することができます。
MATLABで使用可能なGPUの数を特定するには,関数gpuDeviceCount
を使用します。
使用可能なGPUと同数のワーカーをもつ並列プールを起動します。最良のパフォーマンスを得るために,MATLABは既定でワーカーごとに別々のGPUを割り当てます。
使用“local”配置文件启动并行池(parpool)…连接到并行池(工作人员数量:3)。
各ワーカーが使用しているGPUを識別するために,spmd
ブロック内でgpuDevice
を呼び出します。spmd
ブロックは各ワーカーでgpuDevice
を実行します。
parfor
やparfeval
などの並列言語機能を使用して,並列プールのワーカーに計算を分散します。計算にgpuArray
対応関数を使用すると,これらの関数はワーカーのGPUで実行されます。詳細については,GPUでのMATLAB関数の実行を参照してください。例は,複数のGPUでのMATLAB関数の実行を参照してください。
計算が完了したら,並列プールをシャットダウンします。関数gcp
を使用して,現在の並列プールを取得できます。
他のGPUを選択して使用する場合は,gpuDevice
でGPUデバイスインデックスを使用して,各ワーカーで特定のGPUを選択できます。関数gpuDeviceCount
を使用すると,システム内の各GPUデバイスのインデックスを取得できます。
システム内に使用可能なGPUが3つあり,その中の2つだけを計算に使用するとします。デバイスのインデックスを取得します。
使用するデバイスのインデックスを定義します。
並列プールを起動します。spmd
ブロックとgpuDevice
を使用して,各ワーカーと使用するGPUのいずれかをデバイスインデックスにより関連付けます。関数labindex
は各ワーカーのインデックスを識別します。
使用“local”配置文件启动并行池(parpool)…连接到并行池(工作人员数量:2)。
ベストプラクティスとして,また最良のパフォーマンスを得るには,各ワーカーに異なるGPUを割り当てます。
計算が完了したら,並列プールをシャットダウンします。