|
该帖已经被评为良好帖
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2008-04-12
fredzhang 写道 Trustno1 写道 如果在Mutli Core的机器上Single Thread还有意义吗?请注意,不要搞混了Parallelism和Concurrency.两者虽然有一定的相似性,但是Concurrency只是在解决IO问题,对非IO的数据计算是无能为力的.很多做服务器端的朋友的经验其实还是来自于在当初单CPU上如何处理网络IO的归纳之上,以为解决了高并发就实际解决了并行问题.这是不对的,Concurrency是一个Closed problem,而parallelism才是一个Open problem.最近一段时间讨论的很多同步技术,Erlang的Message Passing也好,Haskell的STM也好,都是以Parallelism为讨论对象的而不是Concurrency,对于Concurrency的解决只是一个自然而然的副产品因此在这方面的性能必定是无法超越那些专门为Concurrency设计的技术,但是反过来说像ngnix这样的event driven的机制,在Parallelism上面也是活不了太久的. Concurrency是一个Closed problem,那么最终解决方案是什么呢,有没有综述文章推荐一下? 实际上就是event driven.从模型上来说Concurrency 实际上对应的就是楼上说的CCS.Hore根据这个模型提出了一个模型语言 CSP(Communicating sequential processes),顾名思义就知道了就是把并发过程顺序化.本质上仍然讨论是任务之间交互如何顺序化.而Parallelism,则主要是计算切分的问题,简单的说就是如何把一个大计算切分成多少并行计算的小问题.在这个方面目前还没有一个统一的模型,可以是data driven的也可以是task driven的,甚至是instruction driven的.因此Parallelism不一定涉及到task之间交互的问题.比如说对一个巨大的整型队列,你要把每个元素都double一倍.那么你可以把队列分割成若干个小队列,放在N个Process上处理.这些Process之间可以是没有任何交互的.这就是一个典型的data driven的问题. |
|
| 返回顶楼 | |
|
最后更新时间:2008-04-14
Trustno1 写道 charon 写道 Trustno1 写道 如果在Mutli Core的机器上Single Thread还有意义吗?请注意,不要搞混了Parallelism和Concurrency.两者虽然有一定的相似性,但是Concurrency只是在解决IO问题,对非IO的数据计算是无能为力的.很多做服务器端的朋友的经验其实还是来自于在当初单CPU上如何处理网络IO的归纳之上,以为解决了高并发就实际解决了并行问题.这是不对的,Concurrency是一个Closed problem,而parallelism才是一个Open problem.最近一段时间讨论的很多同步技术,Erlang的Message Passing也好,Haskell的STM也好,都是以Parallelism为讨论对象的而不是Concurrency,对于Concurrency的解决只是一个自然而然的副产品因此在这方面的性能必定是无法超越那些专门为Concurrency设计的技术,但是反过来说像ngnix这样的event driven的机制,在Parallelism上面也是活不了太久的. Parallelism和Concurrency的这个说法只是限于高性能计算这个方面吧。 Concurrency这个词的含义我觉得还是有上下文的,比如CCS(Calculus of Concurrent Systems)/π演算,虽然是在另一个领域上,但是是广义的并发概念。 大哥,人家叫Calculus of Communication System好吧 CCS和π演算,都是针对于Task Driven的并发模型,对与task driven有关的Parallelism有很密切的关系.但是反过来说,Parallelism未必一定就是task driven的,不同的并行问题需要由不同的模型处理. hehe,习惯成自然了。偶一开始玩这个的时候就是用来处理并发的,也许从某天开始就篡改名字了... 回到家里,突然想起来CCS和π演算都是属于交叠式并发的语义,处理起Concurrent来更加得心应手。但是貌似有搞所谓的真并发语义的(但我那会的时候在进程演算这个框框里面没有找到合适的),这个可能就更易于直观解释Parallelism了。 不过我对这块估计连半瓶子醋也算不上,虽然玩了有几年,对理论的理解只是泛泛,和实践的结合更加没谱,基本属于割裂阶段。倒是有个师兄对这一块极为精通。 突然想起来,π演算倒是很适合给google这类云计算的方式建模,计算迁移和早些年的mobile agent还是很有些相似性。 |
|
| 返回顶楼 | |
|
最后更新时间:2008-04-22
不管是OO还是FP还是并行,它们都只是解决问题的某种方式而已。就像数学中的求解方法。我觉得没有必要过份追求纯粹!(世界上哪来那么多纯粹的东西?)
|
|
| 返回顶楼 | |
|
最后更新时间:2008-04-28
我任务java虚拟机的底层结构实际上是不友好的,直截了当的说jvm这样的单堆栈、单指令指针的设计方式是不友好的。
而就动态语言还是静态语言能够更好的在这个方面有发挥的问题,其前提是如何能够更好的调配资源,其次才是如何能够更好的支持相互间的协作。这是因为要发挥多核的优势,并不是去把靠你使用了几个核心这么简单,而是去看你多大程度上将各个核心的计算能力都充分的进行了发挥。而协作仅仅是在这个能力得到了发挥的前提下,才能需要去考虑的提高真实性能的一个着眼点。 这实际上就造成了一种情况,也就是底层的计算可以和上层的计算中间有个隔离带——上层的高级语言支持的Parallelism在这个中间层可以进行翻译和转化为下层的Parallelism。而这里上层和下层的Parallelism可以不是对应的关系。这就如同传统的oo语言同机器实现不会被我们划等号一样。 而进一步我认为不管是如何考虑,多核的时代机器语言编程已经成为过去,人们很难设想可以把握住在数个核心之间手动的调配资源。或者干脆的说,今后依靠编译器将高级语言编译为本地语言从而提升性能的想法将变得不合时宜。 |
|
| 返回顶楼 | |
|
最后更新时间:2008-04-28
ozzzzzz 写道 而进一步我认为不管是如何考虑,多核的时代机器语言编程已经成为过去,人们很难设想可以把握住在数个核心之间手动的调配资源。或者干脆的说,今后依靠编译器将高级语言编译为本地语言从而提升性能的想法将变得不合时宜。 这个吗,不好说,前阵子我到书店逛了逛, 随意翻了翻一本由中国计算机学会写的也是去年11月份出的<<中国计算机科学技术发展报告2006>>, 里面花了很长篇幅讲述并行编译技术最新进展,但是人工智能领域的东西在里面似乎受到冷运。 可惜那次没带现金,下次有空买回来细细品味。 (刚巧,在china-pub上找到这个书的链接: http://www.china-pub.com/37177) 我觉得吗,只要还在用高级语言写程序,编译器这个中间人的角色少不了,不管以后是N(N>=1)个CPU都是如此。 |
|
| 返回顶楼 | |
|
最后更新时间:2008-04-28
自言200801 写道 ozzzzzz 写道 而进一步我认为不管是如何考虑,多核的时代机器语言编程已经成为过去,人们很难设想可以把握住在数个核心之间手动的调配资源。或者干脆的说,今后依靠编译器将高级语言编译为本地语言从而提升性能的想法将变得不合时宜。 这个吗,不好说,前阵子我到书店逛了逛, 随意翻了翻一本由中国计算机学会写的也是去年11月份出的<<中国计算机科学技术发展报告2006>>, 里面花了很长篇幅讲述并行编译技术最新进展,但是人工智能领域的东西在里面似乎受到冷运。 可惜那次没带现金,下次有空买回来细细品味。 (刚巧,在china-pub上找到这个书的链接: http://www.china-pub.com/37177) 我觉得吗,只要还在用高级语言写程序,编译器这个中间人的角色少不了,不管以后是N(N>=1)个CPU都是如此。 直接编译为本地语言和编译为中间语言还是有很多道道的。 我觉得如果要要真正的最大化多核的计算能力,还是依靠自动化实事分配资源比较好。因此我不觉得实施编译到本地机器码有太大的必要 |
|
| 返回顶楼 | |
|
最后更新时间:2008-04-29
Trustno1 写道 转一个Ruby STM实现.
http://moonbase.rydia.net/mental/blog/programming/ruby-stm-first-round.html 这就是动态语言无奈的地方. 又找了一个Python实现, http://peak.telecommunity.com/DevCenter/TrellisSTM 有Commit/Rollback/Abort,就没有Retry. 对于你说的没有静态类型就无法实现retry不太理解,能否点拨一二? |
|
| 返回顶楼 | |
|
最后更新时间:2008-04-30
宣布成为trustno1粉!
重要的在于持续学习..... |
|
| 返回顶楼 | |
|
最后更新时间:2008-05-01
Parallism,Cloud Computing这些东东到底会有什么用处,我认为说不清楚,也是又是一次概念?
|
|
| 返回顶楼 | |
|
最后更新时间:2008-05-04
七猫 写道 Parallism,Cloud Computing这些东东到底会有什么用处,我认为说不清楚,也是又是一次概念? 我认为比SOA之类的靠谱得多 |
|
| 返回顶楼 | |












