Page 81 - 《软件学报》2021年第8期
P. 81
孙乔 等:SW26010 众核任务并行调度系统及其嵌套并行算法应用 2363
[2] 安虹,陈国良.并行程序设计模型和语言.软件学报,2002,13(1):118−124. http://www.jos.org.cn/jos/ch/reader/create_pdf.aspx?
file_no=20020117&year_id=2002&quarter_id=1&falg=1
附录 1:基于 SWAN 框架实现的并行快速排序
在图 A 中,我们展示了使用 SWAN 框架编写的并行快速排序程序.图 A 中文件“Qsort_SWAN_MPE.c”和
“Qsort_SWAN_CPE.c”分别记录了运行于 MPE 和 CPE 上的代码.红色高亮部分的语句是 SWAN 框架提供的 API.
我们看到 SWAN 可以帮助用户清晰地表达程序逻辑,使得并行快速排序的整体代码结构与串行递归程序高度
相仿.
Fig.A Parallel quick sort programme using SWAN framework
图 A 用 SWAN 实现的并行快速排序程序
附录 2:基于 SWAN 实现的并行凸包求解算法
在图 B 中,我们展现了使用 SWAN 框架实现的并行凸包程序.与附录 1 中的并行快速排序类似,SWAN 帮助
程序员并行化了凸包求解算法的递归结构.但值得注意的是,在图 B 展现的“SWAN_ Convex_Hull_CPE.c”文件
中,为了提高程序的并行性,当前任务 slave_convex_hull_task 需要派生众多子任务去寻找距当前基准有向线段
距离最远点(行 17).此时,父任务需挂起并等待所有子任务的完成.通过调用 SWAN 框架负责上下文保存及任务
挂起的接口(行 14~行 19),该过程能够得以实现.在挂起任务之前,用户使用“swan_save_variable()”函数记录关键
上下文信息(行 16).当该任务被重新执行时,程序控制流将从行 14 直接跳转到行 18 继续执行,并取回上下文信
息(行 19).