Doc*_*r J 46 parallel-processing multicore
如果您今天从头开始编写一个新的应用程序,并希望它可以扩展到明天可以使用的所有内核,您会选择哪种并行编程模型/系统/语言/库?为什么?
我对这些轴的答案特别感兴趣:
我故意对应用程序的性质含糊不清,以期获得对各种应用程序有用的良好通用答案.
emk*_*emk 27
多核编程实际上可能需要不止一种范例.目前的一些竞争者是:
其中一些范例可以为您提供最大的性能,但只有在问题彻底分解时才能发挥作用.其他人牺牲了一些性能,但允许更多种算法.我怀疑上述的某些组合最终将成为标准工具包.
Dan*_*ian 11
mapreduce/hadoop范例很有用,也很有用.特别是对于那些习惯于像perl这样的语言的人来说,映射数组并对每个元素进行一些操作的想法应该非常流畅和自然,而mapreduce/hadoop只是将它带到下一个阶段,并说没有理由数组的每个元素都需要在同一台机器上处理.
从某种意义上说,它更受战斗考验,因为谷歌正在使用mapreduce,并且很多人一直在使用hadoop,并且已经证明它适用于通过网络在多台机器上扩展应用程序.如果您可以跨网络扩展多台计算机,则可以在一台计算机上扩展多个核心.
aku*_*aku 10
对于.NET应用程序,我选择" .NET Parallel Extensions(PLINQ) ",它非常易于使用,并允许我在几分钟内并行化现有代码.
Mono 可能会获得对PLINQ的支持,因此它也可能是一个跨平台的解决方案.
对于繁重的计算等,像Haskell这样的纯函数式语言很容易并行化,而不需要程序员的任何努力.除了学习Haskell之外,就是这样.
但是,我不认为这是(近)未来的方式,仅仅是因为太多的程序员已经习惯了命令式编程范式.
kamaelia是一个python框架,用于构建具有大量通信进程的应用程序.
Kamaelia - 并发变得有用,有趣
在Kamaelia中,您可以使用简单的组件构建系统,这些组件可以相互通信.这加速了开发,大规模地帮助维护,也意味着您可以构建自然并发的软件.它旨在供任何开发人员访问,包括新手.它也很有趣:)
什么样的系统?网络服务器,客户端,桌面应用程序,基于游戏的游戏,转码系统和管道,数字电视系统,垃圾邮件根除者,教学工具以及更多的数量:)
另请参阅问题多核和并发 - 语言,库和开发技术
| 归档时间: |
|
| 查看次数: |
5287 次 |
| 最近记录: |