smu*_*kes 11 java multithreading loops scala multiprocessing
Scala似乎比Java有很多功能和改进.我很难分离出我想先学习Scala的东西.如果我只想采取循环并让它们在多个线程或进程上运行,我应该在Google上寻找什么?我来自GPU计算背景,在这里可以非常简单地了解如何让事情变得更快.
Kip*_*ros 21
Scala的并行集合特别容易.并行化f(i)整数的昂贵操作i <- 1 to 10就像,
(1 to 10).par.map(i => f(i))
Run Code Online (Sandbox Code Playgroud)
Scala将尝试分配许多与系统中可用的核心/处理器数量相当的工作线程.这是一个更详细的视频:http://days2010.scala-lang.org/node/138/140
的阿卡框架是一个成熟的,主要演员为基础的方法的并发,允许在并行线程或远程进程.Actor基本上是可以传递消息而不是共享状态的线程.新成立的公司Typesafe正在开发Scala语言和Akka.
您还可以尝试Scala的软件事务内存(STM)库的草稿版本.该库旨在包含在标准的Scala发行版中.与手动管理的线程相比,STM是一种更简单的并发模型,可以减少诸如死锁之类的错误.它的工作原理是将通信操作序列分组为单个同步块,如果多个线程执行的共享状态变得互不兼容,则可能会失败并回滚.据推测,为方便起见需要付出一些性能成本; 我不确定STM如何扩展到大量线程.
在星火框架解决集群计算,并且似乎是MapReduce的一个概括.
作为斯坦福大学和EPFL实验室之间的共同努力,还有非常有趣的语言虚拟化工作.这个页面有链接到论文,斯坦福大学有一个课程,有更多的链接.在包括GPU在内的异构计算环境中开发用于高性能计算的DSL有几个令人兴奋的应用程序.
更新.Daniel Sobral还建议使用工具和库维基.
| 归档时间: |
|
| 查看次数: |
1909 次 |
| 最近记录: |