首页> 外文会议>ACM SIGPLAN International Conference on Functional Programming >Partial Memoization of Concurrency and Communication
【24h】

Partial Memoization of Concurrency and Communication

机译:并发和通信的部分核对

获取原文

摘要

Memoization is a well-known optimization technique used to elim-inate redundant calls for pure functions. If a call to a function f with argument v yields result r, a subsequent call to f with v can be immediately reduced to r without the need to re-evaluate f's body. Understanding memoization in the presence of concurrency and communication is significantly more challenging. For example, if f communicates with other threads, it is not sufficient to simply record its input/output behavior; we must also track inter-thread de-pendencies induced by these communication actions. Subsequent calls to f can be elided only if we can identify an interleaving of actions from these call-sites that lead to states in which these de-pendencies are satisfied. Similar issues arise if f spawns additional threads. In this paper, we consider the memoization problem for a higher-order concurrent language whose threads may communicate through synchronous message-based communication. To avoid the need to perform unbounded state space search that may be neces-sary to determine if all communication dependencies manifest in an earlier call can be satisfied in a later one, we introduce a weaker notion of memoization called partial memoization that gives im-plementations the freedom to avoid performing some part, if not all, of a previously memoized call. To validate the effectiveness of our ideas, we consider the bene-fits of memoization for reducing the overhead of recomputation for streaming, server-based, and transactional applications executed on a multi-core machine. We show that on a variety of workloads, memoization can lead to substantial performance improvements without incurring high memory costs.
机译:备忘是一种众所周知的优化技术,用于消除冗余呼叫纯功能。如果对具有参数V的函数f的呼叫产生结果r,则可以立即减少对F的后续呼叫,而无需重新评估F的身体。在康复和通信的情况下了解核糖明显更具挑战性。例如,如果f与其他线程通信,则简单地记录其输入/输出行为是不够的;我们还必须跟踪这些通信动作引起的线程段脱模。只有当我们可以识别从这些呼叫站点的操作交叉时,才能才能忽略对F的呼叫才能忽视。如果F产生额外的线程,则会出现类似的问题。在本文中,我们考虑一种高阶并发语言的核解问题,其线程可以通过基于同步消息的通信进行通信。为了避免需要执行无界的状态空间搜索,可以确定在稍后的呼叫中列出的所有通信依赖关系,以便在稍后的呼叫中满足,我们介绍了一个较弱的忆取识别,称为部分误差为IM-primentation自由避免执行某些部分,如果不是全部,则是先前忆阻的呼叫。为了验证我们的想法的有效性,我们考虑核对的Bene-itepization,用于减少在多核机器上执行的流传输,基于服务器的重新计算的开销和交易应用程序的开销。我们表明,在各种工作负载上,备忘录可能会导致实质性的性能改进,而不会产生高记忆成本。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号