matlab 查看电脑系统性能(CPU,GPU),并开启并行运算

判断电脑的系统性能,并开启并行运算

%--------------------------------------------------------------------------
clear;clc;close all

% Find capabilities of computer so we can best utilize them.

% Find if gpu is present
ngpus=gpuDeviceCount;
disp([num2str(ngpus) ' GPUs found'])
if ngpus>0
    lgpu=1;
    disp('GPU found')
    useGPU='yes';
else
    lgpu=0;
    disp('No GPU found')
    useGPU='no';
end

% Find number of cores
ncores=feature('numCores');
disp([num2str(ncores) ' cores found'])

% Find number of cpus
import java.lang.*;
r=Runtime.getRuntime;
ncpus=r.availableProcessors;
disp([num2str(ncpus) ' cpus found'])

if ncpus>1
    useParallel='yes';
else
    useParallel='no';
end

[archstr,maxsize,endian]=computer;
disp([...
    'This is a ' archstr ...
    ' computer that can have up to ' num2str(maxsize) ...
    ' elements in a matlab array and uses ' endian ...
    ' byte ordering.'...
    ])

% Set up the size of the parallel pool if necessary
npool=ncores;


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Opening parallel pool 开启方法1
CoreNum=npool; %调用的处理器个数
if matlabpool('size')<=0  %之前没有打开
    matlabpool('open','local',CoreNum);
else  %之前已经打开
    disp('matlab pool already started');
end

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
方法二,直接替换 %Opening parallel pool 下面的代码即可
% Opening parallel pool
if ncpus>1
tic
disp(‘Opening parallel pool’)

% first check if there is a current pool
poolobj=gcp('nocreate');

% If there is no pool create one
if isempty(poolobj)
    command=['parpool(' num2str(npool) ');'];
    disp(command);
    eval(command);
else
    poolsize= poolobj.NumWorkers;
    disp(['A pool of ' poolsize ' workers already exists.'])
end

% Set parallel options
paroptions = statset('UseParallel',true);
toc

end
“`
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

  • 5
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用Matlab进行GPU并行计算,需要遵循以下步骤: 1. 确认您的GPU是否支持CUDA并安装相应的CUDA驱动程序。 2. 安装Matlab Parallel Computing Toolbox。 3. 在Matlab中将GPU设备设置为当前设备。使用以下命令: ```matlab gpuDevice() ``` 这将返回一个GPU设备对象,您可以使用该对象来执行GPU计算。 4. 将要在GPU上运行的代码放入GPU Kernals中。例如: ```matlab function y = myGPUfunction(x) % 将输入数据 x 复制到 GPU 设备上 x = gpuArray(x); % 在 GPU 上执行计算 y = x.^2 + 2*x + 1; % 将结果从 GPU 设备上复制回主机内存 y = gather(y); end ``` 5. 调用函数时,使用 `gpuArray` 函数将数据复制到GPU设备上,然后在GPU上执行计算。例如: ```matlab x = rand(1000, 1000); y = myGPUfunction(x); ``` 如果您希望在GPU上进行并行计算,可以使用 `parfor` 循环。例如: ```matlab parfor i = 1:100 x(i) = myGPUfunction(i); end ``` 在 `parfor` 循环中,每个迭代可以在不同的GPU设备上并行执行。 6. 如果您的计算涉及到多个GPU设备,可以使用 `gpuArray` 函数将数据分配到多个GPU设备上,然后使用 `spmd` 块在多个GPU设备上并行执行计算。例如: ```matlab x = rand(1000, 1000, 'gpuArray'); y = rand(1000, 1000, 'gpuArray'); spmd % 在当前GPU设备上执行计算 z = x + y; % 将结果从当前GPU设备复制到主机内存 z = gather(z); end ``` `spmd` 块将在多个GPU设备上并行执行,每个设备上执行的代码是相同的。在 `spmd` 块内部,使用 `gpuDevice` 函数获取当前设备对象,然后使用该对象执行计算。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值