繁体   English   中英

估计Scala中可能的#个演员

[英]Estimating possible # of actors in Scala

我如何估计Scala程序可以处理的actor的数量?

对于上下文,我正在考虑什么本质上是一个神经网络,它将以高速率创建和遗忘细胞。 我正在考虑让每个细胞成为一个演员,但会有数百万个。 我正在试图决定这种设计是否值得追求,但无法估计演员人数的限制。 我的意图是它应该完全在一个系统上运行,因此分布式限制不适用。

就此而言,我还没有确定Scala,如果有更好的选择,但是单元确实有状态,例如,它们与其他单元的连接,连接的权重等等。虽然这可以做到因为“每个单元格都是最终的。更改意味着用一个带有相同id#的新单元替换当前单元格。”

PS:我不知道斯卡拉。 我正在考虑接受它来做这个项目。 我也在考虑许多其他选择,包括Java,Object Pascal和Ada。 但是演员似乎比我所追求的更好地映射线程池(并且Java无法处理足够的线程以使线程/单元设计可行。

PS:在任何时候,大多数演员都会处于静止状态,但是需要在整个系列中循环。 如果语言中没有内置语言,则可以通过每个单元格中的第一个/下一个链接进行管理。 (需要两个链接,以允许提取中间的单元格以便释放。)

通过神经网络模拟,真正的问题是计算工作将花费多少时间进行通信,以及在单元内计算某些内容需要花费多少? 如果大多数努力都是在沟通中,那么演员可能是正确性的一个很好的选择,但对于效率来说根本不是一个好的选择(即使对于表现相当不错的Akka来说也是如此; 尽管AsyncFP可能会做到这一点)。 数以百万计的神经元听起来很慢 - 效率可能是一个重要问题。 如果神经元有一些非常重要的计算来做自己,那么通信开销就没什么大不了的了。

如果通信是瓶颈,并且你有很多微小的消息,那么你应该设计一个自定义数据结构来保存网络,还有自定义线程处理,它将利用你拥有的所有处理器,并最大限度地减少锁定你必须这样做。 举例来说,如果你有空间,每个神经元可以保持输入值,与之关联的这些神经元的阵列,它会计算其输出只需直接读取数组没有锁定和输入的神经元会只是更新值时他们去的时候没有锁定 然后,您可以将所有神经元转储到一个大型池中,然后让一个主机将它们分配成块,我不知道,一次可能是一万个,每个都是自己的线程。 Scala可以很好地处理这类事情,但是希望自己做很多低级别的工作,或者等待很长时间才能完成模拟。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM