aki*_*iva 5 simulation functional-programming actor
我们有一个单线程应用程序,可以模拟数十万个对象随着时间的推移与共享内存模型的交互.
显然,它无法扩展到多CPU硬件.
在阅读了一些基于代理的建模和函数式编程/演员模型后,我正在考虑使用消息传递范例进行重写.
这个想法非常简单 - 每个对象都是一个参与者,他们的交互将是消息,因此模拟可以并行发生.给定特定时间的对象配置 - 可以轻松计算其未来后果.
问题是如何建模时间:
例如让我们假设对象X的行为取决于A和B,因为演员和消息计算顺序不能保证可能是当要计算X时A已经发送它给X的信息,但B没有.如何确保计算正确?
我希望
提前感谢这个问题.
您使用消息传递并行化(离散事件?)模拟的方法是众所周知的,并且本身不需要功能样式(当然,这并不妨碍您像这样实现它).
您描述事件时间的基本问题也称为局部因果关系约束(例如,参见本教科书).基本上,您需要使用同步协议来确保每个对象(或代理)以正确的顺序处理其消息.在并行离散事件模拟领域,这些对象称为逻辑进程,它们通过事件(即带时间戳的消息)进行通信.
正确地为这些事件实现同步协议具有挑战性,并且正确选择协议是高度针对特定应用的.例如,一个重要因素是每个事件所需的平均计算量:如果需要的计算量很少,则通信成本将占据总体执行时间,并且难以扩展模拟.
因此,我建议在从头开始之前在您打算使用的actor框架之上寻找现有的解决方案/库.
| 归档时间: |
|
| 查看次数: |
1546 次 |
| 最近记录: |