论文部分内容阅读
近年来,信息科技领域进入了大数据时代,数据规模激增,这对信息处理能力提出了严峻的考验,并行计算在高性能计算领域得到了广泛的关注和应用。函数式编程无状态、无副作用的特性使其天然地适合应用于并行计算,逐渐得到重视。但现有的并行计算框架普遍存在数据同步成本高、通用性不足等问题,而利用纯函数式编程语言进行并行化移植的成本较高。另一方面,这些函数式编程语言往往需要显式地管理线程,并且对数据级并行支持较差,没有提供并行数据模型。本文尝试建立一个具有高并行性和通用性的函数式编程模型,工作内容主要包括以下几个方面:(1)首先对函数式编程中的函数复合关系进行了树状模型表述,再依此构建了树状任务依赖视图,并在其上建立线程透明的隐式并行计算模型。针对树状任务结构的任务依赖语义,提出任务优先度模型,并在该模型的基础上,提出了任务调度策略和基于任务窃取的负载均衡策略;(2)在上述编程模型的基础上,提出了一种分布式共享内存模型,对分布式内存空间进行了上层抽象,提出了共享参数的函数参数传递方式,并利用函数式编程透明执行和无状态等特性为内存模型设计了输入预读、无锁读写,子集引用等优化策略。(3)针对所设计的编程模型和内存模型,基于C语言进行分布式运行时平台和编程接口的实现。在运行时平台中,实现了树状任务结构的并行调度管理、基于引用计数的垃圾回收机制、基于LRU策略的内存转储机制,以及基于优先度和任务窃取的负载均衡策略。(4)最后通过实验证明该函数式编程模型在性能上优于主流函数式编程语言Erlang和Haskell,扩展性上超过了主流并行计算框架TBB,达到了较高的并行性和扩展性,同时本文从并行粒度的角度简要分析了模型的通用性。