喷泉模型(fountain model) 并行开发+重叠反复

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_38262266/article/details/86585692
喷泉模型也称迭代模型
认为软件开发过程的各个阶段是相互重叠和多次反复的
就象喷泉一样,水喷上去又可以落下来,既可以落在中间,又可以落到底部
特点:
各个开发阶段没有特定的次序要求,完全可以并行进行;
可以在某个开发阶段中随时补充其他任何开发阶段中遗漏的需求。
优点:
提高开发效率
缩短开发周期
缺点:难于管理 

展开阅读全文

并行开发PLINQ的疑惑

11-19

方法一 rn IEnumerable dgvRows = this.dtCoordDataView.Rows.OfType();rn System.Threading.Tasks.Parallel.ForEach(dgvRows, dataRow =>rn rn string pointName = dataRow.Cells[this.PesNumColCount - 1].Value.ToString();rn if (pointName.Length >= 2)rn rn string pesName = pointName.Substring(pesNumStartSel, 2);rn if (PesCodeNotNull(pesName))rn rn DataTable dt = accDb.Table("select * from " + pesName + hz);rn // DataTable dt = Wendao.WdSystem.Databases.Access.AccessDbEd.Table("select * from " + pesName + hz, oleConn);rn bool notNull = false;rn foreach (DataRow dtRow in dt.Rows)rn rn string tPtName = dtRow[pointFieldName].ToString();rn if (tPtName.Trim().ToUpper() == pointName.Trim().ToUpper())rn rn notNull = true;rn break;rn rn rn if (!notNull)rn rn pointNames.Add(pointName);rn rn rn rn );rnrn方法二rn foreach (DataGridViewRow dataRow1 in this.dtCoordDataView.Rows)rn rn string pointName = dataRow1.Cells[this.PesNumColCount - 1].Value.ToString();rn if (pointName.Length >= 2)rn rn string pesName = pointName.Substring(pesNumStartSel, 2);rn if (PesCodeNotNull(pesName))rn rn DataTable dt = accDb.Table("select * from " + pesName + hz);rn // DataTable dt = Wendao.WdSystem.Databases.Access.AccessDbEd.Table("select * from " + pesName + hz, oleConn);rn bool notNull = false;rn foreach (DataRow dtRow in dt.Rows)rn rn string tPtName = dtRow[pointFieldName].ToString();rn if (tPtName.Trim().ToUpper() == pointName.Trim().ToUpper())rn rn notNull = true;rn break;rn rn rn if (!notNull)rn rn pointNames.Add(pointName);rn rn rn 方法一用了PLINQ的Parallel.ForEach方法,方法二用了一般的foreach rn按理说方法一应该比方法二快,但是我运行下来方法一却比方法二慢了2秒多。请问是什么原因造成的啊? 论坛

多核平台的并行开发

08-01

在多核的设计概念出现后,迫使软件开发朝并行化方向发展。目前,在RISC架构的多核系统上已经形成了比较成熟的多线程系统并行处理能力。但是在x86架构下,应用程序的开发者还停留在单线程的开发模式下。 rnrn计算机的核心任务就是执行各种应用的计算,双核作为一种突破主频限制、在功耗不变的情况下,实现性能提高的技术,简单理解,就是将两个计算内核集成在一个处理器之中,而多核的出现成为解决计算效率和应用对资源调配的关键。 rnrn双核技术的最大特点就在于“高能低耗”。英特尔软件及开发部的营销及设计总监仁达敬做了一个很形象的比喻,由于制造工艺的原因,CPU在未来的发展仍然需要提高主频,降低面积。双核的出现,可以在同样规格的工艺下,突破CPU的主频限制,实现更高性能的运算。 rnrn程序开发的并行模式 rnrn双核甚至多核处理器需要多线程化的软件应用,但是大多数大规模客户端应用,还是用C或C++编写的,从程序开发之初,就是根据单线程设计,这使得应用的多线程优化是一个需要耗费大量劳动力的改写过程,也是一个重头再来的过程。 rnrn在多核的设计概念出现后,迫使软件开发朝并行化(将单个任务拆分成多个小块以便分别处理之后再重新组合的能力)方向发展。目前,在RISC架构的多核系统上已经形成了比较成熟的多线程系统并行处理能力。但是在x86架构下,应用程序的开发者还停留在单线程的开发模式下。 rnrn虽然多核能够带来诸多的好处,但在程序员眼中,并行编程中将会面临三大挑战:程序是否具备扩展性、程序能否更精确、产品是否易于编程和维护。 rnrn其实,为应用程序做并行化处理,并不是一件十分困难的事情。并行开发模式需要打破串行的编程过程“一步一步”的模式,首先要进行分析和拆解,然后才能进行程序的编写。 rnrn程序开发人员应当在程序设计中做好规划,目前为双核开发,将来向四核、八核、十六核等更多核芯规模发展的时候,才不会遇到瓶颈。英特尔软件产品部业务发展经理林巍对于多核的应用开发问题表示,目前双核占据主流,不应当只作好基于双核的编程,要做到能适应不同的模式和架构。 rnrn在底层进行并行分析 rnrn针对多核的开发过程与传统的开发模式有所不同,英特尔推出了VTune(可视化性能分析器),可以通过图形用户界面轻松优化应用性能,而且支持在Windows和Linux系统环境下的分析。AMD等厂商也在应用这套平台对多核系统进行调试,期望获得更为理想的应用性能。 rnrn在中石化胜利油田黑油模拟项目中,需要探测地下石油的准确位置的计算中心。中石化所遇到的难题是海量数据在数据计算慢,以前做一次计算需要花费几个月时间。现在他们已经把程序从Unix架构下的大型主机放到Lunix架构下的并行主机进行运算,并在274个安腾处理器上做了服务器集群。 rnrn中石化通过Vtune和Trace Collector & Trace Analyzer帮助识别出了并行代码中的瓶颈和错误,并对核心函数进行编辑,Compiler和Math Kernel Library帮助应用的性能提升了30%的效果。原来需要10多天的工作任务,现在可能在一周之内完成。虽然仅节省了30%的效率,但是对项目来说,意义是巨大的。 rnrn红旗Linux在开发阶段,采用了英特尔的C++ Compilers软件编辑器,用来提高系统稳定性,通过专门的测试工具对用英特尔C++版编辑器编辑的程序进行了测试,结果是MySQL性能提高了近25%。 rnrn规避并行开发风险 rnrn串行的编程方式会产生错误,多线程程序也不例外,同时还会导致任务定位不准确的问题。仁达敬对此解释,这些问题我们也都曾经遇到过,后来对多线程的开发平台进行了全面的优化和处理。用户在开发的过程中,除了需要使用VTune分析器以外,还需要分析各个线程之间的运行情况,各个线程的负载是否均衡以及需要继续优化的位置。 rnrn由于在多线程的程序中,很多错误是不容易发现的,所以针对多线程中所出现的程序错误,可以通过专门的多线程处理工具进行准确定位。它不仅可以准确定位出源代码中错误的位置,也可以帮助开发者节省资源,并且实时检查线程的工作状况和效率状况。 rnrn如果有线程没有运行,呈等待状,会发出红色信号,提醒开发者对源代码进行调整,以便做到真正的并行化。 rnrnVTune可以支持4000个以上CPU的操作,可以适用于大规模的高性能集群运算环境。在Open MP编辑器中,可以帮助正在运行的程序进行优化。大规模的集群环境下,还可以进行库函数分析。 rn 论坛

没有更多推荐了,返回首页