t******8 发帖数: 2803 | 1 我编的一个MATLAB程序没有考虑parallel computing。在i7-860(4核8线程),Win7下
面MATLAB2009a运行,只占
用13%的CPU。也就是说MATLAB2009a似乎把i7-860当成了一个8核CPU。请问如何才能让
它充分利用整个核
(25%)?需要改环境参数?怎么改?
我暂时的解决之道是在这台Win7机器下开5个MATLAB窗口,跑5个这样的程序(留3个线
程上网灌水看电影……),分别
占用13% CPU,每个任务的速度降低50%左右。如果这样也凑合。
实验室还有一台MacPro,用的是i7-920的xeon版本,也是4核8线程。运行一个任务速度
比Win7机器快,但是Mac OS
10.5下好像只能开一个MATLAB窗口,CPU占用率也只有13%,请问有什么方法能同时运行
多个MATLAB任务? |
q********g 发帖数: 10694 | 2 13%表明你只用了一个core的计算能力,100/8=13%
没有考虑parallel computing只能用一个core啦。 |
t******8 发帖数: 2803 | 3 我也是这样认为的。但i7其实物理上是4 core,每个core两条线程而已,我猜Matlab由于Hyperthreading的存在把i7看成
了一个8核CPU。我想问问有什么办法能把这个CPU当作真正的4核来用,或者说有什么办法disable掉hyperthreading,
让一个MATLAB进程的占用率达到25%。
【在 q********g 的大作中提到】 : 13%表明你只用了一个core的计算能力,100/8=13% : 没有考虑parallel computing只能用一个core啦。
|
D*****e 发帖数: 761 | 4 ding.
我也有这样的疑问,不知关闭超线程是不是能提高效率。 |
i****a 发帖数: 36252 | 5 it doesn't matter how much cpu utilization it shows in task manager ba.
why do you care?
由于
Hyperthreading的存在把i7看成
办法disable
掉hyperthreading,
【在 t******8 的大作中提到】 : 我也是这样认为的。但i7其实物理上是4 core,每个core两条线程而已,我猜Matlab由于Hyperthreading的存在把i7看成 : 了一个8核CPU。我想问问有什么办法能把这个CPU当作真正的4核来用,或者说有什么办法disable掉hyperthreading, : 让一个MATLAB进程的占用率达到25%。
|
t******8 发帖数: 2803 | 6 是这样么?我以为HT的存在会使MATLAB只占用4核CPU的半个核,而关掉HT会让MATLAB利
用4核CPU的一个核。这个
理解是错的?
【在 i****a 的大作中提到】 : it doesn't matter how much cpu utilization it shows in task manager ba. : why do you care? : : 由于 : Hyperthreading的存在把i7看成 : 办法disable : 掉hyperthreading,
|
m**********e 发帖数: 12525 | 7 mpich
http://www.mcs.anl.gov/research/projects/mpi/mpich2/
当年帮人在challenger上用过
【在 t******8 的大作中提到】 : 我编的一个MATLAB程序没有考虑parallel computing。在i7-860(4核8线程),Win7下 : 面MATLAB2009a运行,只占 : 用13%的CPU。也就是说MATLAB2009a似乎把i7-860当成了一个8核CPU。请问如何才能让 : 它充分利用整个核 : (25%)?需要改环境参数?怎么改? : 我暂时的解决之道是在这台Win7机器下开5个MATLAB窗口,跑5个这样的程序(留3个线 : 程上网灌水看电影……),分别 : 占用13% CPU,每个任务的速度降低50%左右。如果这样也凑合。 : 实验室还有一台MacPro,用的是i7-920的xeon版本,也是4核8线程。运行一个任务速度 : 比Win7机器快,但是Mac OS
|
c******d 发帖数: 906 | 8 在bios里关掉HT
i7本来是4core,打开HT,被windows认为是8core,
所以每个core只有100/8=13
【在 t******8 的大作中提到】 : 我编的一个MATLAB程序没有考虑parallel computing。在i7-860(4核8线程),Win7下 : 面MATLAB2009a运行,只占 : 用13%的CPU。也就是说MATLAB2009a似乎把i7-860当成了一个8核CPU。请问如何才能让 : 它充分利用整个核 : (25%)?需要改环境参数?怎么改? : 我暂时的解决之道是在这台Win7机器下开5个MATLAB窗口,跑5个这样的程序(留3个线 : 程上网灌水看电影……),分别 : 占用13% CPU,每个任务的速度降低50%左右。如果这样也凑合。 : 实验室还有一台MacPro,用的是i7-920的xeon版本,也是4核8线程。运行一个任务速度 : 比Win7机器快,但是Mac OS
|
t******8 发帖数: 2803 | 9 嗯。我回去先装个MATLAB2010a看看有没有优化。不行的话再改改BIOS试试看效率有没
有变化。
那么有什么办法在苹果机上开多个MATLAB窗口?或者再苹果上怎么关掉HT。。。。 |
c*m 发帖数: 1114 | 10 我觉得你应该去google一下,关掉HT占cpu 25%不见得比不关HT 占cpu 13%就快。单线程
cpu的计算能力应该是一定的,即使会比关HT的差点也不会差很多,否则提出HT这个概
念就是个joke. 25%和13%这些数值不能说明任何问题。
【在 t******8 的大作中提到】 : 嗯。我回去先装个MATLAB2010a看看有没有优化。不行的话再改改BIOS试试看效率有没 : 有变化。 : 那么有什么办法在苹果机上开多个MATLAB窗口?或者再苹果上怎么关掉HT。。。。
|
|
|
t******8 发帖数: 2803 | 11 谢啦,我研究一下
【在 m**********e 的大作中提到】 : mpich : http://www.mcs.anl.gov/research/projects/mpi/mpich2/ : 当年帮人在challenger上用过
|
t******8 发帖数: 2803 | 12 嗯。我研究一下。回去做个实验比较一下。不过我开5个窗口的确不太靠谱……
线程
【在 c*m 的大作中提到】 : 我觉得你应该去google一下,关掉HT占cpu 25%不见得比不关HT 占cpu 13%就快。单线程 : cpu的计算能力应该是一定的,即使会比关HT的差点也不会差很多,否则提出HT这个概 : 念就是个joke. 25%和13%这些数值不能说明任何问题。
|
t****g 发帖数: 35582 | 13 HT的优势在于当并发线程数量大于核的数量但是单个线程的运算量又不足以占满整个核
的运算能力的时候有用。相当于虚拟的把一个核掰成两个用。
线程
【在 c*m 的大作中提到】 : 我觉得你应该去google一下,关掉HT占cpu 25%不见得比不关HT 占cpu 13%就快。单线程 : cpu的计算能力应该是一定的,即使会比关HT的差点也不会差很多,否则提出HT这个概 : 念就是个joke. 25%和13%这些数值不能说明任何问题。
|
t******8 发帖数: 2803 | 14 也就是我跑4个matlab进程的时候可以100%利用CPU?
【在 t****g 的大作中提到】 : HT的优势在于当并发线程数量大于核的数量但是单个线程的运算量又不足以占满整个核 : 的运算能力的时候有用。相当于虚拟的把一个核掰成两个用。 : : 线程
|
c*m 发帖数: 1114 | 15 这个很奇怪,intel网站上也是这个说法,基本就是在multi-thread application情况下
能充分利用cpu能力。不过没有提single-thread的application情况。
如果对单线程程序也一样,那HT对于所有单线程的application 处理能力都下降一半?
这个感觉好不合理。
【在 t****g 的大作中提到】 : HT的优势在于当并发线程数量大于核的数量但是单个线程的运算量又不足以占满整个核 : 的运算能力的时候有用。相当于虚拟的把一个核掰成两个用。 : : 线程
|
t****g 发帖数: 35582 | 16 不会的。所有我看过的评测跑single thread, 带HT的CPU没有比不带的慢,类似架构,
同频率的话。
只有当并发线程数大于核的数量的时候才会HT打开。
LZ看到的这个问题应该是windows的task manager的问题。也就是说虽然只显示13%,但
实际上确实是一个核在全速跑。LZ即便关掉HT,显示成25%,但是速度其实还是一样的。
我是这么猜测的,LZ可以捡个代码片断,用matlab的timer计个时。看看两种情况下有
没差别,来报告一下。我猜没区别。
况下
【在 c*m 的大作中提到】 : 这个很奇怪,intel网站上也是这个说法,基本就是在multi-thread application情况下 : 能充分利用cpu能力。不过没有提single-thread的application情况。 : 如果对单线程程序也一样,那HT对于所有单线程的application 处理能力都下降一半? : 这个感觉好不合理。
|
m**********e 发帖数: 12525 | 17 你们这个问题应该这么理解:
matlab只能spawn一个进程,操作系统或者cpu的硬件能不能把这个进
程分裂成4个分配给4个core?
答案是否定的。
一定要用mpi或者pvm,这样matlab才能spawn多个进程,再由操作系统分配给
4个cpu。 |
t****g 发帖数: 35582 | 18 matlab现在有多少funtion支持多核了?比如像fft,矩阵转置,求特征值之类的应该很
容易实现
【在 m**********e 的大作中提到】 : 你们这个问题应该这么理解: : matlab只能spawn一个进程,操作系统或者cpu的硬件能不能把这个进 : 程分裂成4个分配给4个core? : 答案是否定的。 : 一定要用mpi或者pvm,这样matlab才能spawn多个进程,再由操作系统分配给 : 4个cpu。
|
u*****r 发帖数: 176 | 19 I think you can use Matlab parallel toolbox. It's more easy to use than
writing mpi or openmp program.
For example change for to parfor. And make sure there is not any loop
carried dependence between loops. For most simple job, it works pretty good. |
u*****r 发帖数: 176 | 20 Another thing is vecterize your code, I found great performance improvement.
And use matlab profiler to find the slow part of your program. |
|
|
t******8 发帖数: 2803 | 21 谢谢!:)
improvement.
【在 u*****r 的大作中提到】 : Another thing is vecterize your code, I found great performance improvement. : And use matlab profiler to find the slow part of your program.
|
D*******a 发帖数: 3688 | 22 貌似这些都多核了
另外,自己写的程序可以用parfor
【在 t****g 的大作中提到】 : matlab现在有多少funtion支持多核了?比如像fft,矩阵转置,求特征值之类的应该很 : 容易实现
|
j*****y 发帖数: 45 | 23 关掉超线程
【在 t******8 的大作中提到】 : 我编的一个MATLAB程序没有考虑parallel computing。在i7-860(4核8线程),Win7下 : 面MATLAB2009a运行,只占 : 用13%的CPU。也就是说MATLAB2009a似乎把i7-860当成了一个8核CPU。请问如何才能让 : 它充分利用整个核 : (25%)?需要改环境参数?怎么改? : 我暂时的解决之道是在这台Win7机器下开5个MATLAB窗口,跑5个这样的程序(留3个线 : 程上网灌水看电影……),分别 : 占用13% CPU,每个任务的速度降低50%左右。如果这样也凑合。 : 实验室还有一台MacPro,用的是i7-920的xeon版本,也是4核8线程。运行一个任务速度 : 比Win7机器快,但是Mac OS
|
k********e 发帖数: 702 | 24 你中了windows的障眼法
最重要的是运行完成需要的时间,而不是占?% CPU
虽然task manager告诉你 13% CPU占用,实际上还是跑满了4个core中间的一个。
只不过task manager显示比例为full/8 而已。
你关掉HT,其结果也是跑满了4个core中间的一个。而比例为full/4,让你觉得很开心
,好像利用率高了一倍。
实际上速度是一样的。 |
D*****e 发帖数: 761 | |