/
MATLAB Parallel Server: GPUによる並列処理
MATLAB Parallel Server: GPUによる並列処理
- 1 はじめに
- 1.1 GPU確認
- 2 ロジスティック写像のプロット
はじめに
MATLAB Parallel Server の利用方法 をご確認ください。ラボラトリのMATLAB Parallel Server(a9)には GPU (NVIDIA Tesla T4×1)が接続されており、ワーカーからGPUを利用できます。
MATLAB R2022aのみの提供です。クライアント側もR2022aをご利用ください。
ここではGPUによる並列処理のハンズオンを紹介します。
GPU確認
a9側のGPUは1つのためparpoolで起動する並列プールは「1」とする。
parpool(1)
spmd
gpuDevice
%その他GPUに投入するコマンド
end
%Worker 1:
%
% ans =
%
% CUDADevice with properties:
%
% Name: 'Tesla T4'
% Index: 1
% ComputeCapability: '7.5'
% SupportsDouble: 1
% DriverVersion: 11.6000
% ToolkitVersion: 11.2000
% MaxThreadsPerBlock: 1024
% MaxShmemPerBlock: 49152
% MaxThreadBlockSize: [1024 1024 64]
% MaxGridSize: [2.1475e+09 65535 65535]
% SIMDWidth: 32
% TotalMemory: 1.5635e+10
% AvailableMemory: 1.2305e+10
% MultiprocessorCount: 40
% ClockRateKHz: 1590000
% ComputeMode: 'Default'
% GPUOverlapsTransfers: 1
% KernelExecutionTimeout: 0
% CanMapHostMemory: 1
% DeviceSupported: 1
% DeviceAvailable: 1
% DeviceSelected: 1
ロジスティック写像のプロット
parpool(1)
spmd
numSimulations = 100;
numIterations = 1000;
N = 1000;
r = gpuArray.linspace(0,4,N);
X = zeros(numSimulations,N,"gpuArray");
tic;
for i = 1:numSimulations
X(i,:) = rand(1,N,"gpuArray");
for n=1:numIterations
X(i,:) = r.*X(i,:).*(1-X(i,:));
end
end
toc;
end
rl = gather(r{1}); % これらはまだ GPU の不足について警告する可能性はありますが、データは取得します。
Xl = gather(X{1});
figure
plot(rl,Xl,'.');
delete(gcp('nocreate'))