- 博客(60)
- 资源 (1)
- 收藏
- 关注
原创 公告:capi自今日起迁移到sourceforge.net里,改名为mcapi
由于近期访问gforge.osdn.net.cn时,不知何故转到了http://www.71way.com/上,导致开源项目CAPI无法访问,给需要下载代码的朋友带来不便表示歉意。 现将capi开源项目暂时迁移到sourceforge.net里,项目的名字改为mcapi,相当于multi-core api的简写。当然mcapi项目以后将在sourceforge里一直保存,新的代码下载
2009-11-06 15:12:00
12671
1
原创 OpenMP编程指南
OpenMP编程指南进入多核时代后,必须使用多线程编写程序才能让各个CPU核得到利用。在单核时代,通常使用操作系统提供的API来创建线程,然而,在多核系统中,情况发生了很大的变化, 如果仍然使用操作系统API来创建线程会遇到一些问题。具体来说,有以下三个问题:1)CPU核数扩展性问题多核编程需要考虑程序性能随CPU核数的扩展性,即硬件升级到更多核后,能够不修改程序就让程序性能增长,这要
2009-04-20 10:13:00
64374
7
原创 测试文章汇总
测试文章汇总以下为截止2009年3月18日前发布在本人博客中的测试相关的文章汇总。后续如果在博客中继续发布了测试相关的文章,那么本文章将会被更新。如果对测试技术非常感兴趣的话,可以考虑将这篇文章加入您的浏览器收藏夹中,也欢迎您将这篇文章推荐给您的朋友。一、设计篇1、接口重构定理与Open-Close原则 主要讲解符合Open-Close原则的重构方式。阅读全文 2、接口设计
2009-04-02 10:46:00
11775
1
原创 多核编程文章汇总
多核编程文章汇总 以下为截止2009年3月21日前发布在本人博客中的多核相关的文章汇总,这些文章大部分摘自于我写的《多核计算与程序设计》一书。现将这些文章分类汇总,方便大家阅读。后续如果博客中继续发布了多核相关的文章,那么本文章将会被更新。如果对多核编程技术非常感兴趣的话,可以考虑将这篇文章加入您的浏览器收藏夹中,也欢迎您将这篇文章推荐给您的朋友。一、基础篇1、多核编程的几个难
2009-03-24 12:40:00
36316
4
原创 多核分布式队列的实现:偷与自私的运用
多核分布式队列的实现:“偷”与“自私”的运用在讨论本文的正题前,不得不先说一些闲话,嫌哆嗦者可以跳过“前言”部分不读。1. 前言在发表了“老子是伟大的多核计算科学家” (链接:http://blog.youkuaiyun.com/drzhouweiming/archive/2008/11/07/3246254.aspx,为叙述方便,后面将这篇文章简称为“老子”)一文后,褒扬者有许
2009-03-20 11:12:00
11352
原创 多核编程中的条件同步模式
多核编程中的条件同步模式 在多线程编程中,当对共享资源进行操作时,需要使用同步(通常是锁或原子操作)来进行保护,以避免数据竞争问题。不幸的是,同步操作的开销非常大,比如对一个整数变量进行加法操作,那么同步操作的开销是加法操作的上百倍以上。有没有办法可以减少这种同步操作的开销呢?如果能设计出更快的锁或更快的原子操作来,那么这种开销自然就减少了。以目前的技术来看,最快速的原子操作耗时也是普
2009-03-20 11:06:00
9886
2
原创 多核编程的四层境界
多核编程的四层境界作者:周伟明 (博客地址:http://blog.youkuaiyun.com/drzhouweiming) 版权申明:这篇文章可以被自由转载,如果修改其中的内容需征得作者同意。 自发表“老子是伟大的多核计算科学家”(欲看此文,请点这里)一文来,收到许多网友的强烈反响,褒扬者有之,砸板砖者亦有之。不过板砖数量倒是在我的意料之中,凡是跟哲学或者说是玄学的东西沾上边的,总会招
2009-03-17 09:45:00
10642
3
原创 “老子”是伟大的多核计算科学家
“老子”是伟大的多核计算科学家 道家的思想可谓博大精深,“老子”的《道德经》成为翻译为外国文字最多的中国书籍,同时也是世界上翻译成外国文字第二多的书籍,仅次于圣经。要知道,《圣经》子所以成为翻译成外国文字第一多的书籍,是因为有10多亿的基督教徒。不要说在国外,即使在中国国内,现在也没有多少道教徒,道家的思想却能在世界上流传如此之广,实在让人觉得是“玄之又玄”。 也许有人会纳闷,“老
2008-11-07 13:52:00
17314
31
原创 多核中的并行前缀和计算
多核中的并行前缀和计算前缀和计算在并行计算中很有用,因为在处理负载平衡问题时,经常需要将若干段数据重新平分,计算前缀和通常是一种有效的将数据平分的方法。例如在并行基数排序中,就会用到了前缀和的计算。而下面先看看单线程环境中的串行前缀和计算。1、串行前缀和的计算如果给定一个数列a[n],令S[k] = a[0]+a[1]+...+a[k],(k = 0, 1, 2…n-1),数列
2008-10-28 10:23:00
13857
2
原创 多核查找-顺序查找也疯狂
多核查找-顺序查找也疯狂 在去年的软件开发2.0技术大会上,我讲了一个支持动态负载均衡的多核查找设计方法。基本思想是采用数据结构分拆的方法,使用了多级的数据结构设计。下面先简要介绍一下这种多级数据结构的设计思路,然后给出一个采用数组顺序查找作为查找表实现的多级数据结构类CDHashArray。在CDHashArray中,对数组的插入和删除都是顺序化的操作,查找也是近似于顺序化的操作,看
2008-10-27 16:36:00
10782
5
原创 道家·老子的算法思想分析
道家·老子的算法思想分析在前一篇文章“屈原·渔父的算法追求”中谈到,屈原追求的是高效的算法,而渔父追求的是高可靠性的算法。对于屈原与渔父的思想,后人通常认为屈原反映了儒家杀身成仁、舍生取义的思想,而渔父则反映了道家无为、与世无争的思想。既然渔父追求的是高可靠性的算法,那么道家的思想是不是也表现为这种稳定可靠性呢?下面从道家的核心思想来分析一下它与稳定可靠性的关系。“无为”与稳定可靠
2008-09-01 09:57:00
11631
8
原创 屈原·渔父的算法追求
屈原·渔父的算法追求 在分析屈原·渔父的算法追求前,不妨先看看《渔父》一文的原文: 屈原既放, 游于江潭, 行吟泽畔, 颜色憔悴, 形容枯槁。 渔父见而问之曰: 子非三闾大夫与? 何故而至于斯? 屈原曰: 举世皆浊我独清, 众人皆醉我独醒,是以见放。 渔父曰: 圣人不凝滞于物, 而能与世推移。 世人皆浊, 何不沽其泥而扬其波? 众人皆醉, 何不哺其糠而啜其醨? 何故深
2008-08-28 17:55:00
8906
8
原创 OpenMP程序设计的两个小技巧
OpenMP程序设计的两个小技巧1、动态设置并行循环的线程数量在实际情况中,程序可能运行在不同的机器环境里,有些机器是双核,有些机器是4核甚至更多核。并且未来硬件存在升级的可能,CPU核数会变得越来越多。如何根据机器硬件的不同来自动设置合适的线程数量就显得很重要了,否则硬件升级后程序就得进行修改,那将是一件很麻烦的事情。比如刚开始在双核
2008-05-23 11:17:00
26296
2
原创 全球所有人都是汶川地震的制造者与罪魁祸首吗?
全球所有人都是汶川地震的制造者与罪魁祸首吗? 当第1次从电视新闻里听到说四川汶川发生大地震时,由于从来没有听说过汶川这个地方,误听成了万川。赶紧找了本地图一翻,发现万川就在三峡边上,心里第一反应就是三峡水库引发了大地震。转念一想,又觉得不对劲,区区一个三峡水库怎么可能引发如此大的地震呢?第二天早上,上网一查,原来是汶川发生了大地震,不是万川,终于将三峡水库引发地震的疑虑打消掉了。
2008-05-21 14:52:00
6016
3
原创 高房价与多核分布式计算
高房价与多核分布式计算-从多核分布式计算角度解释高房价对社会的影响主要内容列表高房价与多核分布式计算高房价问题概述高房价形成的多核分布式计算模型藏富于民的思想小政府的思想高房价的解决之道 高房价问题概述目前社会上的高房价问题困扰了大多数白领,可以说是有人欢喜有人忧。那些有多套房子的人希望房价继续涨上去;只有一套房子的人有人希望涨让自己的房子再升值,
2008-02-01 10:58:00
10305
7
原创 OpenMP中的数据处理子句
OpenMP中的数据处理子句相关文档连接:多核编程中的任务随机竞争模式的概率分析多核编程中的任务分组竞争模式 多核编程中的负载平衡难题 多核编程中的锁竞争难题 多核编程的几个难题及其应对策略(难题一)OpenMP并行程序设计(二) OpenMP并行程序设计(一) 双核CPU上的快速排序效率 OpenMP创建线程中的锁及原子操作性能比较10.1.1
2008-01-10 11:02:00
35624
11
原创 SD2.0大会的一些随想
SD2.0大会的一些随想 29号一早就赶到了九华山庄,优快云的潘微微很热情地帮我安排好了住宿,然后就是去主会场听演讲,我到会场的时候已经比较晚了,好像是google的演讲快要讲完了,接着就是陈榕的演讲,谈到了关于技术与需求方面的问题,很是有些感想。再后面听了一下Andrei 和Intel的James Reinder的演讲,从课堂的互动可以看出,来听讲的人的素质都是非常高的(后来在我
2007-12-04 11:11:00
13510
11
原创 OpenMP中的任务调度
OpenMP中的任务调度OpenMP中,任务调度主要用于并行的for循环中,当循环中每次迭代的计算量不相等时,如果简单地给各个线程分配相同次数的迭代的话,会造成各个线程计算负载不均衡,这会使得有些线程先执行完,有些后执行完,造成某些CPU核空闲,影响程序性能。例如以下代码:int i, j;int a[100][100] = {0};for ( i =0; i {
2007-10-26 12:31:00
32001
3
原创 菜鸟、夫子、玫林凯与测试
菜鸟、夫子、玫林凯与测试 菜鸟所在项目组刚刚结束一个版本的开发,项目经理为了让大家Happy一把,决定组织一次户外集体活动,这个光荣的任务就落到了热爱户外活动的菜鸟身上了,项目经理让他先拿出一份详细的方案来。菜鸟第一次组织集体活动,也搞不懂该怎么搞,想想了自己以前参加的活动,无非就是安排活动内容,行车路线和时间安排,购买吃的东西等。首先碰到的问题就是安排活动内容,菜鸟把周边
2007-10-25 15:05:00
8314
4
原创 无锁编程与分布式编程那个更适合多核CPU?
无锁编程与分布式编程那个更适合多核CPU? 前一篇文章多核系统中三种典型锁竞争的加速比分析讲过了三种典型锁竞争情况下的加速比情况,特别是分布式锁竞争的加速比和CPU核数成正比,有很好的加速比性能。由于近些年在学术界中,无锁编程属于研究热点。那么使用无锁编程是不是可以取得更好的加速比性能呢?或者说无锁编程是不是更适合多核CPU系统呢?无锁编程主要是使用原子操作替代锁来实现对共享资源
2007-09-27 18:31:00
10147
6
原创 多核系统中三种典型锁竞争的加速比分析
多核系统中三种典型锁竞争的加速比分析目录1.1 引言... 11.2 任务粒度因子与锁粒度因子... 21.3 固定式锁竞争中的加速比分析... 31.4 随机锁竞争中的加速比分析... 31.5 分布式锁竞争的加速比分析... 41.6 结论... 51.7 参考文献:... 5
2007-09-25 17:20:00
14333
6
原创 多核新观念-象使用内存一样使用CPU?
多核新观念-象使用内存一样使用CPU?多核时代,很重要的一点就是要将多个CPU核同时运转起来,提高CPU的利用率,说得专业一点就是要提高多核CPU的加速比系数。但是并不是任何时候都可以同时将多个核运转起来,比如一些不能并行化执行的代码,特别是使用了锁的代码,它的执行是串行化的,无法同时利用多个核,还有负载平衡问题,多个任务无法划分得很均匀,导致实际情况中有些任务先运行完,有些任务
2007-07-19 12:17:00
14488
11
原创 OpenMP创建线程中的锁及原子操作性能比较
OpenMP创建线程中的锁及原子操作性能比较 相关文档连接:多核编程中的任务随机竞争模式的概率分析 多核编程中的任务分组竞争模式 多核编程中的负载平衡难题 多核编程中的锁竞争难题 多核编程的几个难题及其应对策略(难题一)OpenMP并行程序设计(二) OpenMP并行程序设计(一) 双核CPU上的快速排序效率
2007-07-13 23:16:00
27368
8
原创 多核编程中的线程随机竞争模式的概率分析
多核编程中的线程随机竞争模式的概率分析 前一篇多核编程中的线程分组竞争模式中谈到了让线程分组竞争以解决多核CPU遇到的锁竞争导致的饥饿问题。并不是任意的共享数据都能够设计成进行分组竞争的模式,比如最常用的需要用于查找的数据结构,当数据结构分成多个子数据结构后,每次查找时,不能指定查找某个特定的子数据结构,而必须进行二级查找,先在整个数据结构内找到对应的子数据结构(不加锁),然后
2007-07-13 22:28:00
10309
1
原创 多核编程中的线程分组竞争模式
多核编程中的线程分组竞争模式 在多核编程中,锁竞争导致的CPU饥饿现象是引起多核CPU性能无法发挥的最重要原因之一,在多核编程中的锁竞争难题一文中已经讲过锁竞争对性能的影响,如何消解锁竞争导致的CPU饥饿现象成了迫切需要解决的问题。目前业界发展的无锁编程技术可以有效降低锁竞争引起的性能下降问题,无锁编程主要是采用原子操作来替代锁,只存在原子操作竞争问题,由于原子操作只是一条指令,速度非
2007-07-10 21:21:00
12587
3
原创 称球问题的测试解法
称球问题十几年前就在深圳的一网情深BBS上成为热门问题,此后的十余年间不断有人提起此问题,前段时间还在网上看到有人重新提起此问题,已经成为了新网民的入门级必知必会问题之一。称球问题一般会有以下3种情况: 1、M个球,其中有一个坏球,知道是轻还是重,用天平称出坏球来。 2、M个球,其中有一个坏球,不知是轻还是重,用天平称出坏球来。 3、M个球,其中有一个坏球,不知是轻还是重,用天平称出坏球
2007-05-17 20:13:00
10537
3
原创 接口重构定理与Open-Close原则
接口重构定理与Open-Close原则 相关文章链接: 模块分解原理探索 模块分解原理与三权分立 接口关系稳定原理探索 接口设计定理 前几篇文章讲过了模块分解原理及接口关系稳定原理,并由模块分解原理和接口关系稳定原理推导出了一个接
2007-05-05 10:59:00
12389
原创 接口设计定理
接口设计定理 相关文章链接: 模块分解原理探索 模块分解原理与三权分立 接口关系稳定原理探索 前面几篇文章中讲过模块分解原理和接口关系稳定原理,这篇文章中将使用模块分解原理和接口关系稳定原理来推导一个重要的定理:接口设计定理。在讲解接口设计定理前,先看一下Robert C.
2007-04-28 20:46:00
17655
4
原创 接口关系稳定原理探索
接口关系稳定原理探索 相关文章链接: 模块分解原理探索 模块分解原理与三权分立 接口设计定理 在Robert C.Martin著的《敏捷软件开发-原则、模式与实践》一书中,提出了许多的设计原则,这里想对其中的一条稳定依赖原理(中文版P232页)进行一些探索。稳定依赖原则讲的是“朝着稳定的方向进行
2007-04-28 20:41:00
11568
原创 模块分解原理与三权分立
模块分解原理与三权分立 相关文章链接:模块分解原理探索前一篇模块分解原理探索的文章中谈到了模块需要按专业领域分解,怎么这篇文章的标题上突然冒出了三权分立,软件怎么和政治制度扯到一起去了?表面看这两个东西好像是风牛马不及,但如果把软件系统和整个社会系统做一个类比的话,也许能看出一些端倪来。在软件中,有需求,设计,编程,测试这几个大的核心专业领域,再来看三权分立,立法、司法、
2007-04-26 14:18:00
20302
13
原创 模块分解原理的探索
模块分解原理的探索 在软件高层设计中,如何分解模块是首要考虑的问题。目前业界公认模块划分要按照“高内聚,低耦合”的原则来进行,那么如何划分才能满足“高内聚,低耦合”呢?下面来对模块分解原理方面进行一些探索,有考虑不周和不成熟之处还请大家不吝指正。模块是按功能来分解的吗?许多人可能有过经验,面对一堆功能性需求,多个不同的需求可能要放到同一个模块里,而某个需求又需要分解到多个模块
2007-04-24 23:03:00
14217
11
原创 测试驱动需求分析--需求文档评审实例
相关文章链接如下:微软过桥问题与测试人员素养 等价类分法 新解 测试用例设计中的NP难题 C/C++代码检视实例 90%程序员写不出无BUG的二分查找程序? 需求文档评审实例软件的开发文档质量一般只能通过评审来进行保证,如何有效发现文档中的问题,是一个令许多人头疼的问题。先看一段关于日志文件的需求描述如下:
2007-04-19 22:33:00
11451
1
原创 多核编程中的负载平衡难题
多核编程中的负载平衡难题 作者:周伟明相关文章链接:多核编程中的锁竞争难题 多核编程的几个难题及其应对策略(难题一) OpenMP并行程序设计(二) OpenMP并行程序设计(一)
2007-04-17 22:23:00
16528
5
原创 90%程序员写不出无BUG的二分查找程序?
90%程序员写不出无BUG的二分查找程序?相关文章链接如下:微软过桥问题与测试人员素养 等价类分法 新解 测试用例设计中的NP难题 测试驱动需求分析--需求文档评审实例 C/C++代码检视实例 《编程珠玑》(第二版)一书第四章中提及过100多名专业程序员使用两个小时的充足时间编写一个简单的二分查找程序,结果发现90%的人编出的代码都有BUG,Knuth也在他
2007-04-12 21:58:00
37200
58
原创 多核编程中的锁竞争难题
多核编程中的锁竞争现象 相关文章链接:多核编程中的负载平衡难题 多核编程的几个难题及其应对策略(难题一) OpenMP并行程序设计(二) OpenMP并行程序设计(一)
2007-04-10 22:15:00
18751
4
原创 多核编程的几个难题及其应对策略(难题一)
多核编程的几个难题及其应对策略(难题一) 相关文章链接:多核编程中的负载平衡难题 多核编程中的锁竞争难题 OpenMP并行程序设计(二) OpenMP并行程序设计(一)
2007-04-10 21:58:00
20252
2
原创 微软过桥问题与测试人员素养
微软过桥问题与测试人员素养相关文章链接如下:90%程序员写不出无BUG的二分查找程序? 等价类分法 新解 测试用例设计中的NP难题 微软过桥问题的图论解法 1.1.1 微软过桥问题与测试人员素养微软面试题过桥问题在IT业内几乎已变成一个众所周知的问题,问题如下: 4个人在晚上过一座小桥,过桥时必须要用到手电筒,只有一
2007-03-29 22:26:00
24980
33
原创 等价类分法 新解
3.1 等价类分法3.1.1 等价类分法的基本概念 相关文章链接如下:微软过桥问题与测试人员素养 测试用例设计中的NP难题 C/C++代码检视实例 90%程序员写不出无BUG的二分查找程序? 等价类分法是将测试空间划分成若干个子集,并且满足每个子集中的任一数据对揭露程序中的缺陷都是等价的,这些子集就叫做等价类或者叫
2007-03-15 23:46:00
9969
1
原创 测试用例设计中的NP难题
相关文章链接如下:微软过桥问题与测试人员素养 等价类分法 新解 C/C++代码检视实例 90%程序员写不出无BUG的二分查找程序? 3.1.1 测试用例设计中的NP测试用例设计中的NP难题如何划分测试空间才能以尽量少的子集来覆盖整个测试空间属于测试用例设计的优化问题。从数学上来讲,这实际上是一个NP完全性问题。下面就来讲解为什么最少测试用例
2007-03-13 22:21:00
9457
4
多核数据结构与算法源代码库
2009-03-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人