首页> 外文期刊>Journal of Logic and Algebraic Programming >An approach to multicore parallelism using functional programming: A case study based on Presburger Arithmetic
【24h】

An approach to multicore parallelism using functional programming: A case study based on Presburger Arithmetic

机译:使用函数式编程的多核并行性方法:基于Presburger算法的案例研究

获取原文
获取原文并翻译 | 示例

摘要

In this paper we investigate multicore parallelism in the context of functional programming by means of two quantifier-elimination procedures for Presburger Arithmetic: one is based on Cooper's algorithm and the other is based on the Omega Test. We first develop correct-by-construction prototype implementations in a functional programming language. Thereafter, the parallelism inherent in the decision procedures is analyzed using the Directed Acyclic Graph (DAG) model of multicore parallelism. In the step from a DAG model to a parallel implementation, the parallel implementation is optimized taking into account negative factors such as cache misses, garbage collection and overhead due to task creations, because such factors may introduce sequential bottlenecks with severe consequences for the parallel efficiency. The experiments were conducted using the functional programming language F# and .NET platform executing on an 8-core machine. A speedup of approximately 4 was obtained for Cooper's algorithm and a speedup of approximately 6 was obtained for the exact-shadow part of the Omega Test. The considered procedures are complex, memory-intense algorithms on huge formula trees and the case study reveals more general applicable techniques and guideline for deriving parallel algorithms from sequential ones in the context of data-intensive tree algorithms. The obtained insights should apply for any strict and impure functional programming language. Furthermore, the results obtained for the exact-shadow elimination procedure have a wider applicability because they can directly be transferred to the Fourier-Motzkin elimination method.
机译:在本文中,我们通过两种针对Presburger算法的量化器消除程序来研究函数编程环境中的多核并行性:一种基于Cooper算法,另一种基于Omega Test。我们首先使用功能性编程语言开发按构造正确的原型实现。此后,使用多核并行度的有向无环图(DAG)模型分析决策过程中固有的并行度。在从DAG模型到并行实现的步骤中,对并行实现进行了优化,同时考虑了诸如缓存未命中,垃圾收集和任务创建所导致的开销等负面因素,因为这些因素可能会引入顺序瓶颈,从而严重影响并行效率。实验是使用在8核计算机上执行的功能性编程语言F#和.NET平台进行的。对于Cooper算法,获得了大约4倍的加速,对于Omega Test的精确阴影部分,获得了大约6倍的加速。所考虑的过程是在大型公式树上的复杂的,占用大量内存的算法,案例研究揭示了在数据密集型树算法的背景下从顺序算法中推导并行算法的更通用的技术和指南。获得的见解应适用于任何严格且不纯正的函数式编程语言。此外,精确阴影消除方法所获得的结果具有更广泛的适用性,因为它们可以直接转移到傅里叶-莫兹金消除方法中。

著录项

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号