worknc多线程设置

worknc多线程设置,第1张

worknc多线程设置方法。

1、输入matlabpoollocal4,这个只要输入一次即可。今后海需要多线程,只要再次输入parpoollocal4即可。4表示多线程的个数,这个根据自己机器的核数来定,写多了会报错。

2、matlab主界面左下角有个图标,图标是在红框里面的就是多线程按钮。点击后,有两个可选项第一个是打开多线程,第二个是对多线程的设置。打开后,直接运行个人的主程序即可。

需要的 方法一、图形界面设置 如图所示位置,单击,选start parallel pool command window中会提示 Starting parallel pool (parpool) using the 'local' profile ... 当并行工具箱启动后会提示链接到本地*个核心。 方法二、command启动并行Core

在较旧版本的MATLAB上使用这个命令:

matlabpool local 4

"4"指你的cpu核心数,而不是线程数。现在的cpu一般是n核心,2n线程(n=2、4、6、8……等偶数)。

在新版本的MATLAB上会遇到如下警告:

警告: matlabpool will be removed in a future release.

Use parpool instead.

命令执行成功后提示:

Starting matlabpool using the 'local' profile ... connected to 4 workers.

看看任务管理器:

如果你在local后面使用的数字超过了你的cpu核心数,就会失败:

错误使用 matlabpool (line 148)

Failed

to start a parallel pool. (For information in addition to the causing

error, validate the profile 'local' in the Cluster Profile Manager.)

原因:

错误使用 parallel.internal.pool.InteractiveClient/start (line 329)

Failed to start pool.

错误使用 parallel.Job/submit (line 304)

You requested a minimum of 6 workers, but the cluster "local" has

the NumWorkers property set to allow a maximum of 4 workers. To run a

communicating job on more workers than this(up to a maximum of 512 for

the Local cluster), increase the value of the NumWorkers property for

the cluster. The default value of NumWorkers for a Local cluster is the

number of cores on the local machine.

在新版本的MATLAB上推荐使用这个命令:

parpool(4)

命令执行成功后提示:

Starting parallel pool (parpool) using the 'local' profile ... connected to 4 workers.

ans =

Pool (具有属性):

Connected: true

NumWorkers: 4

Cluster: local

AttachedFiles: {}

IdleTimeout: 30 minute(s) (30 minutes remaining)

SpmdEnabled: true

---------------------------------------------------------------

试一试下面的fft小程序,

N=10^7 a=rand(1,N) b=gpuArray(a)

%gpuArray的作用是把矩阵从内存中传递到显存中

tic

for k=1:300%这个for循环在cpu中进行,不并行

fft(a+k)

end

toc

%--------------

tic

parfor k=1:300 %把for换成parfor

fft(a+k) %parfor循环仍在cpu中进行,会并行。

end

toc

%--------------

tic

for k=1:300%这个for循环在gpu中进行,高度并行。

fft(b+k) %矩阵b保存在显存中。

end

toc

---------------------------------------------------------------

速度对比:

时间已过 49.175600 秒。

时间已过 36.155164 秒。

时间已过 5.052490 秒。

注:

本人cpu是4核8线程,第一个for循环中cpu占用40%左右,第二个parfor时cpu占用70%左右,第三个for循环cpu占用率几乎是0,

而gpu占用100%.由于cpu是n核心,2n线程,我也不知道系统是怎么样计算占用率的,也不知道35%和55%究竟意味着几个核在全速计算。至于内

存占用率,很大程度上取决于你的内存有多大。

---------------------------------------------------------------

既然评论中有人提到cluster profile manager,那我也来说一说这个。

现在就可以来一发parpool(8)了。现在就可以来一发parpool(8)了。

线程技术(Hyper-Threading,简称HT)对密集型计算任务的提速效果不明显,如果在BIOS设置中关闭HT(然而不是所有的电脑都能进行这

样的设置),我的cpu就变成4核4线程的了。关闭HT后,parpool(4)即可让cpu达100%满负荷。k=1:300,4线程36s(HT开

启),4线程33s(HT关闭),8线程33s(HT开启);k=1:1000,4线程113s(HT开启),4线程105s(HT关闭),8线程

104s(HT开启).

在parfor执行时,每个MATLAB的后台进程要占800M左右的内存,parpool(8)(开启HT)与parpool(4)(关闭HT)都能让cpu 100%满负荷,但前者比后者多占将近3G的内存,实际上很不划算。在parfor执行时,每个MATLAB的后台进程要占800M左右的内存,parpool(8)(开启HT)与parpool(4)(关闭HT)都能让cpu 100%满负荷,但前者比后者多占将近3G的内存,实际上很不划算。

关于超线程技术带来的效果,推荐看看这篇测评报告。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/11545092.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存