周伟明的专栏

<<软件测试实践>> 已上市

周伟明ID:drzhouweiming
182316次访问,排名363好友1人,关注者10
软件技术爱好及研究者
drzhouweiming的文章
原创 48 篇
翻译 0 篇
转载 0 篇
评论 314 篇
周伟明的公告
一书已上市, 欢迎大家提出意见!
最近评论
drzhouweiming:因为sections语句后面有隐含的barrier
如果要将其变成并行的话,需要使用nowait子句
kuangxiangjie:这种方式和前面那种方式的区别是,两个sections语句是串行执行的,即第二个sections语句里的代码要等第一个sections语句里的代码执行完后才能执行。

您好,我对这句话不是很明白....parallel不是并行的么,怎么在它里面的两个ses会是串行的呢
algcfx:Wow gold
dimire:LZ你好,我参考你的第一个测试程序int main(int argc, char* argv[])
{
#pragma omp parallel for
for (int i = 0; i < 10; i++ )
{
printf("i = %d\n", i);
}
……
dimire:学习了
文章分类
    收藏
      相册
      最近文章
      1、多核新观念-象使用内存一样使用CPU?
      2、多核编程中的任务随机竞争模式的概率分析
      3、OpenMP创建线程中的锁及原子操作性能比较
      4、多核编程中的任务分组竞争模式
      5、称球问题的测试解法
      90%程序员写不出无BUG的二分查找程序?
      C/C++代码检视实例
      多核编程中的负载平衡难题
      多核编程中的锁竞争难题
      微软过桥问题与测试人员素养
      接口关系稳定原理探索
      接口设计定理
      模块分解原理与三权分立
      模块分解原理的探索
      测试驱动需求分析
      筑一座坝治好中国的沙漠
      存档
      软件项目交易
      订阅我的博客
      XML聚合  FeedSky
      订阅到鲜果
      订阅到Google
      订阅到抓虾
      订阅到BlogLines
      订阅到Yahoo
      订阅到GouGou
      订阅到飞鸽
      订阅到Rojo
      订阅到newsgator
      订阅到netvibes

      原创 多核新观念-象使用内存一样使用CPU?收藏

      新一篇: 多核系统中三种典型锁竞争的加速比分析 | 旧一篇: OpenMP创建线程中的锁及原子操作性能比较

       
      多核新观念-象使用内存一样使用CPU?
      多核时代,很重要的一点就是要将多个CPU核同时运转起来,提高CPU的利用率,说得专业一点就是要提高多核CPU的加速比系数。
      但是并不是任何时候都可以同时将多个核运转起来,比如一些不能并行化执行的代码,特别是使用了锁的代码,它的执行是串行化的,无法同时利用多个核,还有负载平衡问题,多个任务无法划分得很均匀,导致实际情况中有些任务先运行完,有些任务后运行完,先运行完的CPU核就处于空闲状态。
      是不是任何时候都需要将多个核利用到极致呢?答案是否定的,比如一个服务器软件,如果只有一个客户端连接过来,那么只要用一个核来处理这个请求已经绰绰有余了,何必非要同时将多个核同时运行起来呢? 再比如在客户端软件中,客户做了一个操作后,机器只是进行一个时间非常短的运算就结果返回给用户,然后机器处于空闲状态直到用户的下一次操作为止,在这种情况下,由于机器运算量很小,一个核进行运算完全能够满足用户所需的性能需求,就没有必要同时利用多个核进行运算,因为很小的计算量情况下,多个核同时运行效率可能还不如一个核。
      既然有那么多情况下不需要多个核同时进行运算,那么买多核的机器干什么? 这不由得将CPU和内存比较起来,比如装了一个2G内存的机器,其实很多情况下是不可能将2G的内存都用完的,但是当运行一些大的应用,或者玩一些大型游戏的情况下,内存就基本上都利用上了,其实以后用多核CPU可能就象用内存一样,并不是任何时候都需要将所有的CPU核都用上的,只有计算量很大的情况下才需要完全利用多个CPU核来进行计算,也就是说全部的CPU核主要是为计算达到一定规模时才全部使用的,当然这个计算规模随CPU核数的不同而不同。
      当然使用CPU和使用内存并不是完全相同的,因为现在软件规模越来越大,大多数计算的规模是可以达到为多核而使用的,因为软件规模会随着CPU核数的增加而同步增长,大部分情况下多个CPU核都是可以充分利用上的,而内存则不一样,不论是客户端机还是服务器,可能大部分时候内存利用率并不是很高,只有少数高峰时候才能将内存全部用上。
       
       

      发表于 @ 2007年07月19日 12:17:00|评论(loading...)|编辑

      评论

      #PrideRock 发表于2007-07-19 16:37:14  IP: 210.77.134.*
      cpu啥时候像内存一样便宜,只要可以有相关的系统支持,硬件支持,多几个cpu为啥不好呢?
      #wishfly 发表于2007-07-19 23:12:50  IP: 221.219.34.*
      多核还是单核不应由用户空间程序考虑,而应由操作系统内核来处理。就向你向堆申请空间,而不用考虑具体有多少内存一样。

      #wishfly 发表于2007-07-19 23:25:39  IP: 221.219.34.*
      多核还是单核不应由用户空间程序考虑,而应由操作系统内核来处理。就向你向堆申请空间,而不用考虑具体有多少内存一样。

      #W_W_Q 发表于2007-07-20 08:30:28  IP: 58.82.15.*
      很好,给我来1G的CPU。
      #rghwer 发表于2007-07-20 09:22:44  IP: 218.1.101.*
      呵呵
      #border1 发表于2007-07-20 13:10:30  IP: 58.31.73.*
      现在还少有软件能用上多核的. (支持动态列的纯.net写的web报表开发工具在: http://www.fcsoft.com.cn/webreport.htm)
      #freasy 发表于2007-07-20 16:34:03  IP: 222.240.153.*
      好啊,搞个虚拟CPU.这个最大CPU数受什么限制呢
      #oddes 发表于2007-07-20 16:47:37  IP: 58.33.249.*
      wishfly说的很对,"多核还是单核不应由用户空间程序考虑,而应由操作系统内核来处理。就向你向堆申请空间,而不用考虑具体有多少内存一样。"。
      你创建了多个线程,操作系统自然会安排CPU来处理。 而操作系统角度考虑多核(多CPU),根本不是什么新观念!文章的标题有点夸张。
      文中“如果只有一个客户端连接过来,那么只要用一个核来处理这个请求已经绰绰有余了,何必非要同时将多个核同时运行起来呢? ”,这个不是负荷决定的,而是服务器操作系统和服务器端应用程序决定的,如果服务器端应用程序是多线程的、即便在极短时间内单核可以完成操作,操作系统仍然有可能会安排多核去完成运算。
      ——现在忽然发现文章标题是带“?”!!!
      无语!!!!
      #zhujf2000 发表于2007-07-21 10:57:59  IP: 222.171.7.*
      为什么你的文章都是标题很大,内容很少呢。
      #drzhouweiming 发表于2007-07-22 09:30:39  IP: 58.31.95.*
      To:zhujf2000

      这篇文章内容是少了点,但是并不是我写的所有文章内容都这么少的,越是内容多的文章看的人就越少,所以我只好变懒一点,将内容写少一点了。
      #dunsword 发表于2007-07-23 08:33:14  IP: 60.191.94.*
      嗯,把我单核的CPU升级成双核先
      #dunsword 发表于2007-07-23 08:49:37  IP: 60.191.94.*
      嗯,把我单核的CPU升级成双核先
      发表评论  


      当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
      Csdn Blog version 3.1a
      Copyright © 周伟明