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

文档序号:9489324阅读:440来源:国知局
基于异构众核的轻量级线程快速触发方法
【技术领域】
[0001]本发明涉及计算机技术领域,更具体地说,本发明涉及一种基于异构众核的轻量级线程快速触发方法。
【背景技术】
[0002]异构众核是目前高性能计算硬件平台发展的趋势,但是在该体系结构下,主核和从核差异导致内存映射、指令集编码均需要不同处理和设计,基于多核的线程运行管理和触发装置等软件必须依托操作系统核心的参与和管理进行线程的创建,这种方式已经无法继续在异构环境下高效实用,需要针对该架构定制一套针对异构环境下轻量级线程和管理和触发装置,以便更好的在该平台下进行高性能计算、提高程序运算性能。
[0003]目前主流的软件线程API (Applicat1n Programming Interface,应用程序编程接口)、例如Solaris线程API和Pthread线程API均可理解为针对同一种线程机制中的不同实现方案,且运行的平台均为同构结构的多核处理器,必须支持同一套内存映射和指令集机制,在线程触发上需要每个等价多核均有操作系统支撑以完成线程的创建,即使是在单核架构下,也是在底层调用操作系统的线程复制(clone)机制来实现线程上下文环境的创建。如果以此源码作为移植异构众核线程API基础,则首先要完成众核架构下协处理器的操作系统底层软件的开发和配套,增加了开发的成本,且多核线程创建机制并不能完全胜任异构线程的需求。
[0004]目前主流的异构众核架构,例如Intel的MIC软件架构,同样是针对异构众核的线程管理和触发上,均是基于每个MIC卡上都有独立的操作系统,才能完成线程的创建和管理。在实时线程创建上,需要专门的API接口来完成数据传输(例如存储器直接访问DMA)和上下文的创建和切换。同样,该平台也是需要没给MIC卡上有独立的操作系统支持,则需要为操作系统配套相关的硬件设备,增加了软件和硬件设计的成本
[0005]以上技术的同性在于线程的管理和创建均需要操作系统的介入,并需要相关硬件的支持,从设计成本上软硬件均需要同时考虑,且在有限线程功能需求的协处理器上,有些线程功能存在冗余性,降低了健壮性。

【发明内容】

[0006]本发明所要解决的技术问题是针对现有技术中存在上述缺陷,提供一种基于异构众核的轻量级线程快速触发方法,能够在没有操作系统管理的协处理器上,完成轻量级线程的触发和管理,降低了硬件和软件的开发成本,降低了线程运行的维护成本,提高了异构众核下线程的运行性能。
[0007]为了实现上述技术目的,根据本发明,提供了一种基于异构众核的轻量级线程快速触发方法,包括:在轻量级线程库中编写异构众核的多线程程序,其中多线程程序在轻量级线程库中的创建和回收以显式的接口来调用,然后完成多线程程序代码的编译,生成一个异构融合的可执行代码;运行该可执行码;其中,首先执行在主处理器上运行的程序加载器,再将可执行代码作为参数传入给程序加载器;程序加载器将整个当做一个文件读入,然后解析出符合ELF格式的段信息,并将其写入内存的相应位置,并完成程序执行环境变量的配置。
[0008]优选地,符合ELF格式的段信息包括主处理器指令、协处理器指令、主处理器数据和协处理器数据。
[0009]优选地,将协处理器第一条指令的配置为任务等待操作的入口程序计数器值,使得协处理器持续进行任务等待操作,直到协处理器在判断协处理器程序计数器寄存器非空时,判断主处理器创建了新任务,使得协处理器跳转到该新任务入口的程序计数器值;在完成该新任务返回后,清空协处理器程序计数器寄存器,并继续进行任务等待操作,等待主处理器的下一次任务的分配。
[0010]优选地,协处理器核心没有运行标准操作系统,无法通过标准的execve函数的方式启动程序。
[0011]优选地,程序加载器运行在运算控制核心系统区,而且程序加载器将用户可执行程序映像进行解析,加载到核组内存。
[0012]优选地,程序加载器进行核组资源、存储空间、堆栈的申请和初始化,而且程序加载器进行运行时初始状态的配置。
[0013]优选地,程序加载器支持异构众核融合轻量级线程模式、单协处理器进程模式、单主处理器进程模式三种加载方式。
[0014]优选地,一个协处理器上不支持运行多个线程。
[0015]由此,本发明提供了一种基于异构众核的轻量级线程快速触发方法,其实现时的软硬件开发成本低,无需考虑协处理器上关于操作系统的软硬件支持。在轻量级线程支持上,本发明摒弃复杂的多核平台下的线程管理机制,只需提供高效的线程触发、回收、数据传输API即可,降低了线程维护成本。此外,本发明基于轻量级线程的快速触发装置能够更快的启动线程,降低了线程运行时启动和回收开销,提高了用户程序的运行速度。而且,本发明基于轻量级线程的快速触发装置能够在在启动线程前就完成资源的分配和管理,根据用户的课题需求进行线程硬件资源适配,并提供多种程序运行减少运行时的作业管理。
【附图说明】
[0016]结合附图,并通过参考下面的详细描述,将会更容易地对本发明有更完整的理解并且更容易地理解其伴随的优点和特征,其中:
[0017]图1示意性地示出了异构众核线程创建程序示例。
[0018]图2示意性地示出了异构众核程序加载器流程图。
[0019]图3示意性地示出了协处理器任务等待例程。
[0020]图4示意性地示出了根据本发明优选实施例的基于异构众核的轻量级线程快速触发方法的流程图。
[0021]需要说明的是,附图用于说明本发明,而非限制本发明。注意,表示结构的附图可能并非按比例绘制。并且,附图中,相同或者类似的元件标有相同或者类似的标号。
【具体实施方式】
[0022]为了使本发明的内容更加清楚和易懂,下面结合具体实施例和附图对本发明的内容进行详细描述。
[0023]本发明涉及两个部分组成的协同处理:
[0024]1)基于异构众核的轻量级线程库--例如Athread库
[0025]2)基于异构众核的程序装载器--例如Mixrun装置
[0026]两部分协同处理,共同完成基于异构众核的轻量级线程的触发和管理过程。
[0027]<轻量级线程库>
[0028]基于异构众核的轻量级线程库(Athread库)的设计原理,为了让用户能够在没有操作系统管理的协处理器上,方便、快捷地对线程进行控制和调度,从而更好地发挥协处理器加速性能而开发的一种轻量级线程库。在该装置中,每个线程的启动绑定在一个协处理器资源,在线程创建前,通过基于异构众核的程序装载器(Mixrun装置)来检查所有的可用协处理器可用资源。
[0029]其中:
[0030]a)轻量级线程库中的轻量级线程必须使得每个线程绑定一个协处理器,不支持一个协处理器上运行多个线程;
[0031]b)轻量级线程库支持不满核线程资源调度,每个核组资源支持多线程组启动;
[0032]c)轻量级线程库实现了 CPU内任务的绑定调度、混合调度和抢占调度等多种调度模式,解决了众核内任务负载不均、访存延迟长、消息阻塞等问题。
[0033]用户在使用时,通过图1方式进行线程的调用。
[0034]<异构众核程序装载器>
[0035]协处理器核心没有运行标准操作系统,无法通过标准的execve函数(该函数的作用就是去执行一个文件)方式启动程序,而在特殊的异构架构下,需要对该核心资源和众核的层次空间进行申请和管理以及异构程序的启动。为此,本发明在操作系统和可执行程序之间独立出一个程序加载器Mixrun,以完成异构程序的转载和线程的触发。
[0036]图2示意性地示出了异构众核程序加载器流程图。如图2所示,异构众核程序加载器流程包括:
[0037]对输入程序进行ELF文件解析,提取文件和段信息,而且进行参数处理;
[0038]检查核组资源,根据输入形状进行申请,对核组空间进行划分与申请;
[00
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1