LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 1252|回复: 11

奇怪的问题;关于并行计算

[复制链接]
发表于 2009-7-17 23:53:10 | 显示全部楼层 |阅读模式
CPU: E6550
MEM:2G
普通台式机。

系统:debian lenny
并行:mpich 1.2.7 + gcc

使用
nohup mpirun -np 2 $mycommand &
提交作业之后
top命令显示每个线程只能用到cpu一个核心的50%

Tasks:  71 total,   3 running,  68 sleeping,   0 stopped,   0 zombie
Cpu(s): 39.7%us,  7.8%sy,  0.0%ni, 49.7%id,  0.0%wa,  0.0%hi,  2.7%si,  0.0%st
Mem:   2032500k total,   223620k used,  1808880k free,    18552k buffers
Swap:  2104472k total,        0k used,  2104472k free,   169792k cached
PID to kill:
  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND            
9855 zhq       20   0  9200 2632 1884 S   50  0.1   0:12.56 lmp_debian         
9859 zhq       20   0 18604 3912 1808 R   50  0.2   0:12.78 lmp_debian  

而同一台机器,操作系统为ubuntu 8.04,其余环境一致(至少我认为是这样),cpu的两个核都能用到100%。

我现在不知道从何入手来解决这个问题了,也不知道提供什么信息来让大家帮我解决这个问题了。

请各位同仁不吝赐教。
发表于 2009-7-18 09:10:41 | 显示全部楼层
整体的运算速度相比呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-18 16:39:01 | 显示全部楼层
双核50%相当于单核;计算量小的时候还要慢一些。以前用ubuntu的时候不是这样的
回复 支持 反对

使用道具 举报

发表于 2009-7-18 20:18:22 | 显示全部楼层
我电脑是单核的,并行自然是100%了。没办法试。并行计算也只是前段时间上课弄过一点,不太懂。
你的50%会不会指的就是占了两核总共的50%呢,也就是一个进程占一核的100%了?
不然我觉得很难理解,运行一个单进程的计算程序也肯定得占上其中一核的全部资源啊,怎么会两进程时一核各用50%,我觉得这样反道更难实现。
你不用并行,直接运行你的程序看看top里怎么显示呢?是50%还是100%。
只是随便说说,希望对你有帮助。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-19 10:31:10 | 显示全部楼层
我也感到很费解。实在是想不明白。

若运行单进程的程序,则该程序100%,占总cpu(s)资源的50%。这个是正常的。

并行的。。。
回复 支持 反对

使用道具 举报

发表于 2009-7-19 10:47:03 | 显示全部楼层
这就对了吧,单程序显示占cpu(s)的50%,就就是只用了一个核,且一个核已经用了100%,而它显示的是相对于整个CPU(两个核心)来讲的50%。
所以两个进程时都占cpu(s)的50%,就是两个核都用到100%了。
你用图形界面的gnome-system-monitor看一下吧。我觉得是没问题的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-19 20:33:43 | 显示全部楼层
我没有把事情表达清楚,对不起。
在top命令显示的信息中,
单线程程序占总cpu资源的50%,在%cpu所在column显示100%;
双线程程序也占总cpu资源的50%,在%cpu所在column显示每线程50%。

这意味着双线程程序没有能够充分发挥每个核心的作用。
回复 支持 反对

使用道具 举报

发表于 2009-7-19 21:54:27 | 显示全部楼层
我自己编译MPICH2也碰到过这问题。。

不过在Centos上同样方式编译的也是正常的。
debian上不知道是不是MPICH编译的时候没有注意选择设备。

你可以试试源里编译好的MPICH2,有一个针对SMP的 包名叫mpich-shmem-bin的,这个应该可以的吧。

Post by sentinel;2007687
我没有把事情表达清楚,对不起。
在top命令显示的信息中,
单线程程序占总cpu资源的50%,在%cpu所在column显示100%;
双线程程序也占总cpu资源的50%,在%cpu所在column显示每线程50%。

这意味着双线程程序没有能够充分发挥每个核心的作用。
回复 支持 反对

使用道具 举报

发表于 2009-7-19 21:55:18 | 显示全部楼层
不是这么回事


Post by potter_tang;2007556
这就对了吧,单程序显示占cpu(s)的50%,就就是只用了一个核,且一个核已经用了100%,而它显示的是相对于整个CPU(两个核心)来讲的50%。
所以两个进程时都占cpu(s)的50%,就是两个核都用到100%了。
你用图形界面的gnome-system-monitor看一下吧。我觉得是没问题的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2009-7-20 23:49:11 | 显示全部楼层
tjpm兄,
我知道mpich-shmem-bin好使。不过mpich-shmem-bin是特别给双核处理器设计的。
我们还是需要一般的mpich用来多个机器同时运算的。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表