matlab cpu使用率达不到100,如何在循环运行MATLAB代码时提高CPU利用率?

我有一个耗时运行的代码,因为它包含一些for循环。代码是否可以通过使用矢量化进行优化是另一个话题。问题是,由于完成需要很长时间(几小时),所以我决定在代码运行时检查CPU利用率。令我惊讶的是,我发现它在0到3%之间波动!如何在循环运行MATLAB代码时提高CPU利用率?

83abc1e8131f4f03586e23d0bf31beb5.png

为什么不利用至少25%的CPU,因为我的CPU是四核(我认为每个核心处理1个线程在同一时间,是不是?),默认情况下,当没有做别的事情?运行代码时如何提高CPU利用率,以便更快地执行?

如果它是相关的,这里是代码(在截图功能xyz)我正在运行:如果你想利用你可以使用多个线程

users(:,1)=unique(M(:,10));

categories(:,1)=unique(M(:,2));

N=size(users,1);

for i=1:N

U=M(M(:,10)==users(i,1),:);

C(:,1)=unique(U(:,2));

[~,~,subs] = unique(U(:,2));

vals = U(:,9);

C(:,2) = accumarray(subs(:), vals(:), [], @(x) 1-mean(x));

for j=1:size(categories,1)

for k=1:size(C,1)

if categories(j,1)==C(k,1)

categories(j,i)=C(k,2);

end

end

end

clear C;

end

+0

这可能是由于您的系统/操作系统配置,它不能使用超过4GB的内存并将其任务卸载到硬盘上。 –

+0

我纯粹推测的答案是,它实际计算使用100%的单CPU,但利用率_per second_(事实上,我相信该图显示CPU每6秒利用率)远低于您的计算是在一个未优化的三重嵌套循环中完成的,因此每个计算之间有很多空闲时间。 –

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值