基于异构众核的轻量级线程快速触发方法.pdf

上传人:a1 文档编号:6346537 上传时间:2019-06-03 格式:PDF 页数:10 大小:983.14KB
返回 下载 相关 举报
摘要
申请专利号:

CN201510828182.6

申请日:

2015.11.24

公开号:

CN105242962A

公开日:

2016.01.13

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 9/46申请日:20151124|||公开

IPC分类号:

G06F9/46; G06F9/445

主分类号:

G06F9/46

申请人:

无锡江南计算技术研究所

发明人:

沈莉; 漆锋滨; 李中升; 肖谦; 钱宏

地址:

214083江苏省无锡市滨湖区军东新村030号

优先权:

专利代理机构:

北京众合诚成知识产权代理有限公司11246

代理人:

龚燮英

PDF下载: PDF下载
内容摘要

本发明提供了一种基于异构众核的轻量级线程快速触发方法,包括:在轻量级线程库中编写异构众核的多线程程序,其中多线程程序在轻量级线程库中的创建和回收以显式的接口来调用,然后完成多线程程序代码的编译,生成一个异构融合的可执行代码;运行该可执行码;其中,首先执行在主处理器上运行的程序加载器,再将可执行代码作为参数传入给程序加载器;程序加载器将整个当做一个文件读入,然后解析出符合ELF格式的段信息,并将其写入内存的相应位置,并完成程序执行环境变量的配置。

权利要求书

权利要求书
1.  一种基于异构众核的轻量级线程快速触发方法,其特征在于包括:
在轻量级线程库中编写异构众核的多线程程序,其中多线程程序在轻量级线程库中的创建和回收以显式的接口来调用,然后完成多线程程序代码的编译,生成一个异构融合的可执行代码;
运行该可执行码;其中,首先执行在主处理器上运行的程序加载器,再将可执行代码作为参数传入给程序加载器;
程序加载器将整个当做一个文件读入,然后解析出符合ELF格式的段信息,并将其写入内存的相应位置,并完成程序执行环境变量的配置。

2.  根据权利要求1所述的基于异构众核的轻量级线程快速触发方法,其特征在于,符合ELF格式的段信息包括主处理器指令、协处理器指令、主处理器数据和协处理器数据。

3.  根据权利要求1或2所述的基于异构众核的轻量级线程快速触发方法,其特征在于,将协处理器第一条指令的配置为任务等待操作的入口程序计数器值,使得协处理器持续进行任务等待操作,直到协处理器在判断协处理器程序计数器寄存器非空时,判断主处理器创建了新任务,使得协处理器跳转到该新任务入口的程序计数器值;在完成该新任务返回后,清空协处理器程序计数器寄存器,并继续进行任务等待操作,等待主处理器的下一次任务的分配。

4.  根据权利要求1或2所述的基于异构众核的轻量级线程快速触发方法,其特征在于,协处理器核心没有运行标准操作系统,无法通过标准的execve函数的方式启动程序。

5.  根据权利要求1或2所述的基于异构众核的轻量级线程快速触发方法,其特征在于,程序加载器运行在运算控制核心系统区,而且程序加载器将用户可执行程序映像进行解析,加载到核组内存。

6.  根据权利要求1或2所述的基于异构众核的轻量级线程快速触发方法,其特征在于,程序加载器进行核组资源、存储空间、堆栈的申请和初始化,而且程序加载器进行运行时初始状态的配置。

7.  根据权利要求1或2所述的基于异构众核的轻量级线程快速触发方法,其特征在于,程序加载器支持异构众核融合轻量级线程模式、单协处理器进程模式、单主处理器进程模式三种加载方式。

8.  根据权利要求1或2所述的基于异构众核的轻量级线程快速触发方法,其特征在于,一个协处理器上不支持运行多个线程。

说明书

说明书基于异构众核的轻量级线程快速触发方法
技术领域
本发明涉及计算机技术领域,更具体地说,本发明涉及一种基于异构众核的轻量级线程快速触发方法。
背景技术
异构众核是目前高性能计算硬件平台发展的趋势,但是在该体系结构下,主核和从核差异导致内存映射、指令集编码均需要不同处理和设计,基于多核的线程运行管理和触发装置等软件必须依托操作系统核心的参与和管理进行线程的创建,这种方式已经无法继续在异构环境下高效实用,需要针对该架构定制一套针对异构环境下轻量级线程和管理和触发装置,以便更好的在该平台下进行高性能计算、提高程序运算性能。
目前主流的软件线程API(ApplicationProgrammingInterface,应用程序编程接口)、例如Solaris线程API和Pthread线程API均可理解为针对同一种线程机制中的不同实现方案,且运行的平台均为同构结构的多核处理器,必须支持同一套内存映射和指令集机制,在线程触发上需要每个等价多核均有操作系统支撑以完成线程的创建,即使是在单核架构下,也是在底层调用操作系统的线程复制(clone)机制来实现线程上下文环境的创建。如果以此源码作为移植异构众核线 程API基础,则首先要完成众核架构下协处理器的操作系统底层软件的开发和配套,增加了开发的成本,且多核线程创建机制并不能完全胜任异构线程的需求。
目前主流的异构众核架构,例如Intel的MIC软件架构,同样是针对异构众核的线程管理和触发上,均是基于每个MIC卡上都有独立的操作系统,才能完成线程的创建和管理。在实时线程创建上,需要专门的API接口来完成数据传输(例如存储器直接访问DMA)和上下文的创建和切换。同样,该平台也是需要没给MIC卡上有独立的操作系统支持,则需要为操作系统配套相关的硬件设备,增加了软件和硬件设计的成本
以上技术的同性在于线程的管理和创建均需要操作系统的介入,并需要相关硬件的支持,从设计成本上软硬件均需要同时考虑,且在有限线程功能需求的协处理器上,有些线程功能存在冗余性,降低了健壮性。
发明内容
本发明所要解决的技术问题是针对现有技术中存在上述缺陷,提供一种基于异构众核的轻量级线程快速触发方法,能够在没有操作系统管理的协处理器上,完成轻量级线程的触发和管理,降低了硬件和软件的开发成本,降低了线程运行的维护成本,提高了异构众核下线程的运行性能。
为了实现上述技术目的,根据本发明,提供了一种基于异构众核 的轻量级线程快速触发方法,包括:在轻量级线程库中编写异构众核的多线程程序,其中多线程程序在轻量级线程库中的创建和回收以显式的接口来调用,然后完成多线程程序代码的编译,生成一个异构融合的可执行代码;运行该可执行码;其中,首先执行在主处理器上运行的程序加载器,再将可执行代码作为参数传入给程序加载器;程序加载器将整个当做一个文件读入,然后解析出符合ELF格式的段信息,并将其写入内存的相应位置,并完成程序执行环境变量的配置。
优选地,符合ELF格式的段信息包括主处理器指令、协处理器指令、主处理器数据和协处理器数据。
优选地,将协处理器第一条指令的配置为任务等待操作的入口程序计数器值,使得协处理器持续进行任务等待操作,直到协处理器在判断协处理器程序计数器寄存器非空时,判断主处理器创建了新任务,使得协处理器跳转到该新任务入口的程序计数器值;在完成该新任务返回后,清空协处理器程序计数器寄存器,并继续进行任务等待操作,等待主处理器的下一次任务的分配。
优选地,协处理器核心没有运行标准操作系统,无法通过标准的execve函数的方式启动程序。
优选地,程序加载器运行在运算控制核心系统区,而且程序加载器将用户可执行程序映像进行解析,加载到核组内存。
优选地,程序加载器进行核组资源、存储空间、堆栈的申请和初始化,而且程序加载器进行运行时初始状态的配置。
优选地,程序加载器支持异构众核融合轻量级线程模式、单协处 理器进程模式、单主处理器进程模式三种加载方式。
优选地,一个协处理器上不支持运行多个线程。
由此,本发明提供了一种基于异构众核的轻量级线程快速触发方法,其实现时的软硬件开发成本低,无需考虑协处理器上关于操作系统的软硬件支持。在轻量级线程支持上,本发明摒弃复杂的多核平台下的线程管理机制,只需提供高效的线程触发、回收、数据传输API即可,降低了线程维护成本。此外,本发明基于轻量级线程的快速触发装置能够更快的启动线程,降低了线程运行时启动和回收开销,提高了用户程序的运行速度。而且,本发明基于轻量级线程的快速触发装置能够在在启动线程前就完成资源的分配和管理,根据用户的课题需求进行线程硬件资源适配,并提供多种程序运行减少运行时的作业管理。
附图说明
结合附图,并通过参考下面的详细描述,将会更容易地对本发明有更完整的理解并且更容易地理解其伴随的优点和特征,其中:
图1示意性地示出了异构众核线程创建程序示例。
图2示意性地示出了异构众核程序加载器流程图。
图3示意性地示出了协处理器任务等待例程。
图4示意性地示出了根据本发明优选实施例的基于异构众核的轻量级线程快速触发方法的流程图。
需要说明的是,附图用于说明本发明,而非限制本发明。注意, 表示结构的附图可能并非按比例绘制。并且,附图中,相同或者类似的元件标有相同或者类似的标号。
具体实施方式
为了使本发明的内容更加清楚和易懂,下面结合具体实施例和附图对本发明的内容进行详细描述。
本发明涉及两个部分组成的协同处理:
1)基于异构众核的轻量级线程库——例如Athread库
2)基于异构众核的程序装载器——例如Mixrun装置
两部分协同处理,共同完成基于异构众核的轻量级线程的触发和管理过程。
<轻量级线程库>
基于异构众核的轻量级线程库(Athread库)的设计原理,为了让用户能够在没有操作系统管理的协处理器上,方便、快捷地对线程进行控制和调度,从而更好地发挥协处理器加速性能而开发的一种轻量级线程库。在该装置中,每个线程的启动绑定在一个协处理器资源,在线程创建前,通过基于异构众核的程序装载器(Mixrun装置)来检查所有的可用协处理器可用资源。
其中:
a)轻量级线程库中的轻量级线程必须使得每个线程绑定一个协处理器,不支持一个协处理器上运行多个线程;
b)轻量级线程库支持不满核线程资源调度,每个核组资源支持 多线程组启动;
c)轻量级线程库实现了CPU内任务的绑定调度、混合调度和抢占调度等多种调度模式,解决了众核内任务负载不均、访存延迟长、消息阻塞等问题。
用户在使用时,通过图1方式进行线程的调用。
<异构众核程序装载器>
协处理器核心没有运行标准操作系统,无法通过标准的execve函数(该函数的作用就是去执行一个文件)方式启动程序,而在特殊的异构架构下,需要对该核心资源和众核的层次空间进行申请和管理以及异构程序的启动。为此,本发明在操作系统和可执行程序之间独立出一个程序加载器Mixrun,以完成异构程序的转载和线程的触发。
图2示意性地示出了异构众核程序加载器流程图。如图2所示,异构众核程序加载器流程包括:
对输入程序进行ELF文件解析,提取文件和段信息,而且进行参数处理;
检查核组资源,根据输入形状进行申请,对核组空间进行划分与申请;
对用户程序参数、环境变量、系统辅助信息等进行处理;
进行指令空间、多层次存储空间、栈空间的映射;
执行系统相关信息的告知(作业管理,特定系统调用辅助信息等);
执行运行时特定信息处理(线程私有空间、动态分配空间起止设 置等);
执行运算核心运行时信号的挂载:系统调用、运算核心异常、退出等;
判断单运算控制核心、异构混合、单运算核心代码;
跳转到相应启动代码,结束加载。
也就是说,存在如下主要步骤:a)异构众核程序加载器运行在运算控制核心系统区,它将用户可执行程序映像进行解析,加载到核组内存;b)异构众核程序加载器进行核组资源、存储空间、堆栈的申请和初始化以及用户参数、环境变量等运行时初始状态的配置;c)异构众核程序加载器支持异构众核融合轻量级线程模式、单协处理器进程模式、单主处理器进程模式三种加载方式。
<轻量级线程触发装置原理>
1)硬件前提
为了能够快速在没有操作系统的协处理器上进行线程管理和触发,需要硬件提供一个能进行程序执行第一条指令的IO(输入输出)寄存器,程序加载器可以通过写该IO寄存器来控制协处理器的第一条指令的运行入口PC(programcounter,程序计数器)值,以启动协处理器核心程序。
2)软件前提
如上所述,需要有个针对异构众核的轻量级线程库以及异构众核的程序装载器。
3)操作步骤
图4示意性地示出了根据本发明优选实施例的基于异构众核的轻量级线程快速触发方法的流程图。
如图4所示,根据本发明优选实施例的基于异构众核的轻量级线程快速触发方法包括:
第一步骤S1:在轻量级线程库中编写异构众核的多线程程序,其中多线程程序在轻量级线程库中的创建和回收以显式的接口来调用(该编程模式与pthread编程模式类似),然后完成程序代码的编译,生成一个异构融合的可执行代码a.out。例如,具体示例如如图1所示。
第二步骤S2:运行该a.out可执行码。首先执行程序加载器Mixrun,该程序加载器的运行是在主处理器上执行(隐含有操作系统的程序装载Mixrun本身的操作),再将可执行代码a.out作为参数传入给程序加载器Mixrun。
例如:$Mixrun<配置选项>./a.out
第三步骤S3:程序加载器Mixrun将整个a.out当做一个文件读入,然后解析出主处理器指令、协处理器指令、主处理器数据、协处理器数据等符合ELF(ExecutableandLinkingFormat)格式的段信息,并将其写入内存的相应位置,并完成程序执行环境变量的配置,详细流程可如图2所示。
具体地,首先,将协处理器第一条指令的配置为任务等待操作(Waiting_for_task例程)的入口程序计数器值,使得协处理器持续进行任务等待操作,直到协处理器在判断协处理器程序计数器寄存器 Slave_PC非空时,表示主处理器创建了新任务,则协处理器跳转到该任务入口的程序计数器值,当完成任务返回后,清空协处理器程序计数器寄存器Slave_PC,并继续进行任务等待操作,等待主处理器的下一次任务的分配。软件流程示例如图3所示。
如上所述,主处理器有显式的协处理器线程触发和回收接口,如图1中异构众核线程创建程序示例中的athread_spawn所示,slave_fun()函数就是协处理器的任务函数,athread_spawn的主要功能就是登记该线程的属性并将slave_fun的值填入Slave_PC中。最终完成该轻量级线程的触发。
本发明无需设计协处理器针对操作系统配套的相关支持,降低了软件和硬件的设计和维护成本。而且,本发明能够快速启动和回收线程,无需经过操作系统处理,提高程序性能。此外,本发明能够在运行前对轻量级线程提前进行软硬适配,例如可用协处理器占用、栈空间大小调整、可用内存空间调整等,减少了用户编程代码的复杂度。
本发明在没有软硬件操作系统支撑机制下的协处理器线程运行机制,而且没有软硬件操作系统支撑机制下的协处理器线程触发装置。
可以理解的是,虽然本发明已以较佳实施例披露如上,然而上述实施例并非用以限定本发明。对于任何熟悉本领域的技术人员而言,在不脱离本发明技术方案范围情况下,都可利用上述揭示的技术内容对本发明技术方案作出许多可能的变动和修饰,或修改为等同变化的等效实施例。因此,凡是未脱离本发明技术方案的内容,依据本发明 的技术实质对以上实施例所做的任何简单修改、等同变化及修饰,均仍属于本发明技术方案保护的范围内。

基于异构众核的轻量级线程快速触发方法.pdf_第1页
第1页 / 共10页
基于异构众核的轻量级线程快速触发方法.pdf_第2页
第2页 / 共10页
基于异构众核的轻量级线程快速触发方法.pdf_第3页
第3页 / 共10页
点击查看更多>>
资源描述

《基于异构众核的轻量级线程快速触发方法.pdf》由会员分享,可在线阅读,更多相关《基于异构众核的轻量级线程快速触发方法.pdf(10页珍藏版)》请在专利查询网上搜索。

本发明提供了一种基于异构众核的轻量级线程快速触发方法,包括:在轻量级线程库中编写异构众核的多线程程序,其中多线程程序在轻量级线程库中的创建和回收以显式的接口来调用,然后完成多线程程序代码的编译,生成一个异构融合的可执行代码;运行该可执行码;其中,首先执行在主处理器上运行的程序加载器,再将可执行代码作为参数传入给程序加载器;程序加载器将整个当做一个文件读入,然后解析出符合ELF格式的段信息,并将其写。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1