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

2023-05-16

我有一个耗时运行的代码,因为它包含一些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秒利用率)远低于您的计算是在一个未优化的三重嵌套循环中完成的,因此每个计算之间有很多空闲时间。 –

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐