带异常处理的批量同步并行ML语言探索
1. 引言
在并行编程领域,存在两种截然不同的方法:一种是低级方法,容易出现并发问题;另一种是高级方法,但会损失灵活性和效率。而批量同步并行ML(BSML)语言旨在在这两种方法之间找到平衡。
BSML基于OCaml构建,并采用BSP(批量同步并行)范式,以数据并行的方式组织处理器之间的计算和通信。它的所有通信都是集体性的,通过严格区分本地和全局计算避免了死锁问题,同时BSP还为其提供了简单高效的成本模型。
异常处理是管理程序中错误和中断正常指令流事件的传统且自然的机制,在递归算法中也可用于提取结果。然而,现有的数据并行编程语言大多是命令式的,如C或Fortran,它们没有提供异常机制;Java虽然有异常机制,但对并行结构与异常的交互研究不足。因此,并行语言中的异常处理是一个亟待解决的问题。
本文将OCaml的异常处理机制进行了调整和扩展,以适应BSML中的并行编程约束,并且这种方法不仅适用于OCaml,也可应用于其他带异常的严格语言。
2. 函数式批量同步并行编程
2.1 BSP模型
在BSP模型中,计算机由一组统一的处理器 - 内存对、允许处理器间消息传递的通信网络以及执行同步屏障集体请求的全局同步单元组成。BSP程序按超级步序列执行,每个超级步最多分为三个连续且逻辑上不相交的阶段:
1. 每个处理器仅使用其本地数据进行顺序计算,并请求与其他节点的数据传输。
2. 网络执行请求的数据传输。
3. 发生全局同步屏障,使传输的数据可用于下一个超级步。
机器的性能由三个参数表征:p表示处理器 - 内存对的数量,
超级会员免费看
订阅专栏 解锁全文
1303

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



