线程无关接口形式-analysis i terence tao third edition

时间:2024-06-27 22:51:57
【文件属性】:

文件名称:线程无关接口形式-analysis i terence tao third edition

文件大小:4.28MB

文件格式:PDF

更新时间:2024-06-27 22:51:57

OpenMP

6.2 并行域管理 并行域管理涉及以下五大问题。 首先是 OpenMP 线程的载体可以是多种形式的,因此并行域的管理需要能够屏蔽这些底 层线程库的差异; 其次需要能够在恰当的时机产生或撤销线程,以满足OpenMP的 parallel 并行域的 fork-join 行为,为了提高效率可能采用线程池的方式来管理; 第三是线程间关系问题。由于并行域可能形成层次关系,外层 parallel 与内层 parallel 形 成嵌套,并行域内线程也需要以线程 id 来相互区分,因此需要标记嵌套层数和“父子”关系、 标记同一并行域内的线程“兄弟关系”; 第四需要对并行域代码的封装和标识,使得各线程能区分各自的工作; 第五是并行域内的线程往往需要进行任务分担,因此并行域管理必须提供任务和线程的映 射信息等等。 下面将分析 OpenMP 并行域管理中的这五个问题,明确翻译后的目标代码应该具有什么 功能,然后在下一小节给出目标代码的形式。 6.2.1 线程无关接口 作为一个通用的 OpenMP 编译器,应尽量考虑接纳不同的线程技术,不要限制于只是用 一种具体的线程接口。所以应该抽象出 OpenMP 线程的概念,该抽象概念应该能满足 OpenMP 语法和语义,保证编译后的程序能正确执行。并行域的管理也应该分成两个部分,上层是满足 于抽象 OpenMP 线程的部分,下层是与具体线程技术相关的部分。上层部分应该包含抽象、 统一的线程供给、层次关系维护、并行域内任务分担信息的功能,底层应该包含具体线程的创 建、同步等基本操作,如图 6.2 所示。 图 6.2 线程无关接口形式 编译器设计时在考虑统一接口这个问题上,还需要做以下决策: 1. 编译器对多种线程库的支持是动态还是静态方式。静态方式则是指编译器虽然具备支 持多种线程库的能力,但是每次只能支持其中一种,比如在编译器配置和生成后不再 改变。动态方式则是在需要的时候可以随时变换底层线程库,变换的时候不需要重新 生成新的编译器。静态方式比动态方式容易实现。 OpenMP 并行域管理: 线程供给、层次关系维护、任务分担…… 统一接口:线程创建、撤销、同步等…… Pthread 线程 solaris 线程 PSthread 线程 Marcel 线程


网友评论