带异常处理的批量同步并行ML语言
1. 引言
批量同步并行ML(BSML)语言是ML(一类函数式编程语言)的并行扩展。它旨在在并行编程的两种极端方法之间找到平衡:一种是低级方法,容易出现并发问题;另一种是高级方法,但会损失灵活性和效率。
传统的低级并行编程库,如MPI,通常与Fortran或C语言一起使用,这些方法不安全,程序员需要自行处理死锁和不确定性问题。而传统的算法骨架虽然安全,但适用的算法范围有限。
BSML遵循BSP(批量同步并行)范式,以数据并行的方式组织处理器之间的计算和通信。所有通信都是集体性的,通过严格区分本地和全局计算避免了死锁,同时BSP还为BSML提供了简单有效的成本模型。
异常处理是管理程序错误和中断正常指令流事件的传统机制,也可用于提取递归算法的结果。然而,广泛使用的数据并行编程语言(如C、Fortran)大多是命令式的,没有异常机制;Java中并行结构与异常的交互也未得到深入研究。因此,异常处理在并行语言中是一个重要问题,高效、简单且表达性强的解决方案是当前的研究热点。
BSML作为Objective Caml的库实现,能利用该语言的高级通用特性,但其中一些特性(如异常处理)在并行环境中无法提供所需的安全性。本文将对OCaml的异常处理机制进行调整和扩展,以满足BSML并行编程的约束。
2. 函数式批量同步并行编程
2.1 BSP模型
在BSP模型中,计算机由一组统一的处理器 - 内存对、允许处理器间消息传递的通信网络以及执行集体同步请求的全局同步单元组成。BSP程序按一系列超级步执行,每个超级步最多分为三个连续且逻辑上不相交的阶段:
超级会员免费看
订阅专栏 解锁全文
1300

被折叠的 条评论
为什么被折叠?



