CN112558978B - 支撑异构众核全芯片视角的加速编程和编译方法 - Google Patents

支撑异构众核全芯片视角的加速编程和编译方法 Download PDF

Info

Publication number
CN112558978B
CN112558978B CN201910918623.XA CN201910918623A CN112558978B CN 112558978 B CN112558978 B CN 112558978B CN 201910918623 A CN201910918623 A CN 201910918623A CN 112558978 B CN112558978 B CN 112558978B
Authority
CN
China
Prior art keywords
core
thread
acceleration
chip
full
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910918623.XA
Other languages
English (en)
Other versions
CN112558978A (zh
Inventor
王飞
吴伟
肖谦
沈莉
钱宏
管茂林
周文浩
樊行健
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuxi Jiangnan Computing Technology Institute
Original Assignee
Wuxi Jiangnan Computing Technology Institute
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuxi Jiangnan Computing Technology Institute filed Critical Wuxi Jiangnan Computing Technology Institute
Priority to CN201910918623.XA priority Critical patent/CN112558978B/zh
Publication of CN112558978A publication Critical patent/CN112558978A/zh
Application granted granted Critical
Publication of CN112558978B publication Critical patent/CN112558978B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开一种支撑异构众核全芯片视角的加速编程和编译方法,包括以下步骤:S1、识别__cross关键字声明的全局变量;S2、初始化操作;S3、全芯片加速模式的选择;S4、启动N个运算核组;S5、进入等待所有线程结束的状态;S6、进入等待S4中线程函数的状态信息的状态;S7、置线程结束的标志;S8、线程回收操作;S9、创建pthread线程;S10、线程绑定操作;S11、每个pthread线程将运算核组编号对应的运算核组启动;S12、进入等待线程结束的状态;S13、启动线程函数执行;S14、置线程结束的标志;S15、进行线程回收操作,更新加速核心的状态信息;S16、控制核心运行结束。本发明支持全芯片视角多模式的并行加速,以应对异构众核处理器的芯片特点和应用需求,为用户提供全片内存视角和全片资源管理方案。

Description

支撑异构众核全芯片视角的加速编程和编译方法
技术领域
本发明涉及一种支撑异构众核全芯片视角的加速编程和编译方法,属于计算机编译优化技术领域。
背景技术
与传统程序不同,异构混合程序中包含两种面向不同处理器核心的程序代码。异构众核架构上的编程编译一直是高性能计算系统软件研究领域的一个难点问题,涉及到控制核心和加速核心的代码融合、控制核心对加速核心的控制方式和加速模式等。加速编程模式和对应的编译系统一般以控制核心+加速核心簇的视角进行组织和构建。随着芯片结构的不断发展,在异构众核架构中可能包括多个运算核组,每个运算核组由控制核心控制管理一组加速核心,以单个运算核组为基本执行单位的底层编译解决方案将不再适合。
随着芯片结构的不断发展,异构众核处理器一般采用多运算核组、多加速核心的复杂混合结构,存储层次的设计也变得越来越复杂,多级存储层次不断涌现,加速核心局部存储器的共享、全芯片存储空间的共享等多维共享的特点也比较突出,能够提供超高的计算能力和计算密度,但也给用户编程提出了挑战。另一方面,应用程序也提出了对片内大共享空间、多级细粒度并行等的新需求。这些都对加速编程和编译系统提出了新的要求,需要全芯片视角的相关支撑技术。
发明内容
本发明的目的是提供一种支撑异构众核全芯片视角的加速编程和编译方法,该支撑异构众核全芯片视角的加速编程和编译方法通过加速线程库和pthread线程支持全芯片视角多模式的并行加速,以应对异构众核处理器的芯片特点和应用需求,为用户提供全片内存视角和全片资源管理方案。
为达到上述目的,本发明采用的技术方案是:一种支撑异构众核全芯片视角的加速编程和编译方法,基于异构众核处理器,包括以下步骤:
S1、编译器识别__cross关键字声明的全局变量,针对找到的每一个全局变量,在地址分配阶段将其排布在全芯片所有运算核组共享的地址空间段;
S2、控制核心对全芯片运算核组的加速核心资源进行初始化操作,将加速核心的状态信息、PC值、参数信息的存储空间和数据结构进行初始化;
S3、根据单个控制核心的存储空间使用情况,进行全芯片加速模式的选择,若存储空间超过单个运算核组的分布式共享空间的大小,则选择一个控制核心+全片加速核心的全芯片1+M视角的加速编程模式,执行S4;否则,选择全片N个控制核心+全片加速核心的全芯片N+M视角的加速编程模式,执行S9;
S4、一个控制核心C进行N次线程函数启动操作启动N个运算核组,每次指定一个运算核组编号,分别将该运算核组编号对应的运算核组启动,并获取加速核心上将要运行的线程函数的状态信息、PC值、参数信息,并写入到S2中所述相应的数据结构中;
S5、S4中的控制核心C进入等待运算核组编号对应的所有线程结束的状态;
S6、全芯片所有加速核心进入等待S4中线程函数的状态信息的状态,加速核心获取到线程函数的状态信息后,获取S4中设置的线程函数的PC值和参数信息,根据PC值和参数信息,启动线程函数执行,所有加速核心的线程函数均可以对S1中识别的全局变量进行访问;
S7、各加速核心的线程函数执行完毕后,置线程结束的标志,通知控制核心C线程函数已执行结束;
S8、控制核心C收到S7中所述来自全芯片所有加速核心的线程结束的标志后,进行线程回收操作,更新加速核心的状态信息,执行S16;
S9、每个控制核心创建线程绑定操作的pthread线程;
S10、每个控制核心通过运算核组编号进行线程绑定操作,控制核心绑定S9中对应的pthread线程到运算核组编号对应的运算核组上执行;
S11、每个pthread线程通过运算核组编号,将运算核组编号对应的运算核组启动,并获取加速核心上将要运行的线程函数的状态信息、PC值、参数信息,并写入到S2中所述相应的数据结构中;
S12、S11中所述的pthread线程通过运算核组编号,进入等待运算核组编号对应的线程结束的状态;
S13、全芯片所有加速核心进入等待S11中线程函数的状态信息的状态,加速核心获取到线程函数的状态信息后,获取S11中设置的线程函数的PC值和参数信息,根据PC值和参数信息启动线程函数执行,所有加速核心的线程函数均可以对S1中识别的全局变量进行访问;
S14、各加速核心的线程函数执行完毕后,置线程结束的标志,通知控制核心线程函数已执行结束;
S15、控制核心收到来自S10所绑定的运算核组的所有加速核心线程结束的标志后,进行线程回收操作,更新加速核心的状态信息,执行S16;
S16、控制核心运行结束。
由于上述技术方案的运用,本发明与现有技术相比具有下列优点:
本发明支撑异构众核全芯片视角的加速编程和编译方法,其通过加速线程库和pthread线程支持全芯片视角多模式的并行加速,以应对异构众核处理器的芯片特点和应用需求,为用户提供全片内存视角和全片资源管理方案,隐藏底层硬件细节,满足用户针对全片内存的使用需求,支撑异构众核处理器高效的并行运行模式,对新式应用的开发也具有重要意义。
附图说明
附图1为本发明支撑异构众核全芯片视角的加速编程和编译方法流程示意图;
附图2为本发明支撑异构众核全芯片视角的加速编程和编译方法流程图。
具体实施方式
实施例:一种支撑异构众核全芯片视角的加速编程和编译方法,基于异构众核处理器,包括以下步骤:
S1、编译器识别__cross关键字声明的全局变量,针对找到的每一个全局变量,在地址分配阶段将其排布在全芯片所有运算核组共享的地址空间段;
S2、控制核心对全芯片运算核组的加速核心资源进行初始化操作,将加速核心的状态信息、PC值、参数信息的存储空间和数据结构进行初始化;
S3、根据单个控制核心的存储空间使用情况,进行全芯片加速模式的选择,若存储空间超过单个运算核组的分布式共享空间的大小,则选择一个控制核心+全片加速核心的全芯片1+M视角的加速编程模式,执行S4;否则,选择全片N个控制核心+全片加速核心的全芯片N+M视角的加速编程模式,执行S9;
S4、一个控制核心C进行N次线程函数启动操作启动N个运算核组,每次指定一个运算核组编号(编号为1~N),分别将该运算核组编号对应的运算核组启动,并获取加速核心上将要运行的线程函数的状态信息、PC值、参数信息,并写入到S2中所述相应的数据结构中;
S5、S4中的控制核心C进入等待运算核组编号对应的所有线程结束的状态;
S6、全芯片所有加速核心进入等待S4中线程函数的状态信息的状态,加速核心获取到线程函数的状态信息后,获取S4中设置的线程函数的PC值和参数信息,根据PC值和参数信息,启动线程函数执行,所有加速核心的线程函数均可以对S1中识别的全局变量进行访问;
S7、各加速核心的线程函数执行完毕后,置线程结束的标志,通知控制核心C线程函数已执行结束;
S8、控制核心C收到S7中所述来自全芯片所有加速核心的线程结束的标志后,进行线程回收操作,更新加速核心的状态信息,执行S16;
S9、每个控制核心创建线程绑定操作的pthread线程;
S10、每个控制核心通过运算核组编号(编号分别为1~N)进行线程绑定操作,控制核心绑定S9中对应的pthread线程到运算核组编号对应的运算核组上执行;
S11、每个pthread线程通过运算核组编号(编号分别为1~N),将运算核组编号对应的运算核组启动,并获取加速核心上将要运行的线程函数的状态信息、PC值、参数信息,并写入到S2中所述相应的数据结构中;
S12、S11中所述的pthread线程通过运算核组编号(编号分别为1~N),进入等待运算核组编号对应的线程结束的状态;
S13、全芯片所有加速核心进入等待S11中线程函数的状态信息的状态,加速核心获取到线程函数的状态信息后,获取S11中设置的线程函数的PC值和参数信息,根据PC值和参数信息启动线程函数执行,所有加速核心的线程函数均可以对S1中识别的全局变量进行访问;
S14、各加速核心的线程函数执行完毕后,置线程结束的标志,通知控制核心线程函数已执行结束;
S15、控制核心收到来自S10所绑定的运算核组的所有加速核心线程结束的标志后,进行线程回收操作,更新加速核心的状态信息,执行S16;
S16、控制核心运行结束。
实施例进一步解释如下:
本发明方案主要组成如1所示。
本发明技术方案以控制核心程序和加速核心程序作为输入,支撑全芯片视角的加速编程和编译,主要包括3个部分:
1)全芯片共享变量识别和地址分配。编译器识别__cross关键字声明的全局变量,针对找到的每一个全局变量,在地址分配阶段将其排布在全芯片所有运算核组共享的地址空间段。
2)全芯片1+M视角的加速编程模式。通过全芯片加速核心资源初始化、线程函数启动、控制核心等待、加速核心获取信息并执行、加速核心通知控制核心、控制核心判断全芯片线程状态并回收操作支持一个控制核心+全片加速核心的全片并行加速。
3)全芯片N+M视角的加速编程模式。通过全芯片加速核心资源初始化、pthread线程创建、pthread线程绑定运算核组、pthread线程启动运算核组、pthread线程等待、加速核心获取信息并执行、加速核心通知控制核心、控制核心判断绑定运算核组的线程状态并回收操作支持全片N个控制核心+全片加速核心的全片并行加速。
采用上述支撑异构众核全芯片视角的加速编程和编译方法时,其通过加速线程库和pthread线程支持全芯片视角多模式的并行加速,以应对异构众核处理器的芯片特点和应用需求,为用户提供全片内存视角和全片资源管理方案,隐藏底层硬件细节,满足用户针对全片内存的使用需求,支撑异构众核处理器高效的并行运行模式,对新式应用的开发也具有重要意义。
为了便于更好的理解本发明,下面将对本文中使用的术语进行简要的解释:
异构众核:不同架构的中央处理器或特定硬件加速单元依据相关技术标准和规范有机内在融合在一颗芯片上,不同异构内核之间实现协同计算,其中异构中的某一特定硬件加速单元属于众核架构,拥有数十个、数百个或更多的加速计算核心。
控制核心:在异构众核架构中,主要起到控制和管理作用的处理器核心。
加速核心:在异构众核架构中,主要起到计算加速作用的处理器核心。
运算核组:在异构众核架构中,可能包括多个运算核组,每个运算核组由控制核心控制管理一组加速核心。
上述实施例只为说明本发明的技术构思及特点,其目的在于让熟悉此项技术的人士能够了解本发明的内容并据以实施,并不能以此限制本发明的保护范围。凡根据本发明精神实质所作的等效变化或修饰,都应涵盖在本发明的保护范围之内。

Claims (1)

1.一种支撑异构众核全芯片视角的加速编程和编译方法,其特征在于:基于异构众核处理器,包括以下步骤:
S1、编译器识别__cross关键字声明的全局变量,针对找到的每一个全局变量,在地址分配阶段将其排布在全芯片所有运算核组共享的地址空间段;
S2、控制核心对全芯片运算核组的加速核心资源进行初始化操作,将加速核心的状态信息、PC值、参数信息的存储空间和数据结构进行初始化;
S3、根据单个控制核心的存储空间使用情况,进行全芯片加速模式的选择,若存储空间超过单个运算核组的分布式共享空间的大小,则选择一个控制核心+全片加速核心的全芯片1+M视角的加速编程模式,执行S4;否则,选择全片N个控制核心+全片加速核心的全芯片N+M视角的加速编程模式,执行S9;
S4、一个控制核心C进行N次线程函数启动操作启动N个运算核组,每次指定一个运算核组编号,分别将该运算核组编号对应的运算核组启动,并获取加速核心上将要运行的线程函数的状态信息、PC值、参数信息,并写入到S2中相应的数据结构中;
S5、S4中的控制核心C进入等待运算核组编号对应的所有线程结束的状态;
S6、全芯片所有加速核心进入等待S4中线程函数的状态信息的状态,加速核心获取到线程函数的状态信息后,获取S4中设置的线程函数的PC值和参数信息,根据PC值和参数信息,启动线程函数执行,所有加速核心的线程函数均可以对S1中识别的全局变量进行访问;
S7、各加速核心的线程函数执行完毕后,置线程结束的标志,通知控制核心C线程函数已执行结束;
S8、控制核心C收到S7中来自全芯片所有加速核心的线程结束的标志后,进行线程回收操作,更新加速核心的状态信息,执行S16;
S9、每个控制核心创建线程绑定操作的pthread线程;
S10、每个控制核心通过运算核组编号进行线程绑定操作,控制核心绑定S9中对应的pthread线程到运算核组编号对应的运算核组上执行;
S11、每个pthread线程通过运算核组编号,将运算核组编号对应的运算核组启动,并获取加速核心上将要运行的线程函数的状态信息、PC值、参数信息,并写入到S2中相应的数据结构中;
S12、S11中的pthread线程通过运算核组编号,进入等待运算核组编号对应的线程结束的状态;
S13、全芯片所有加速核心进入等待S11中线程函数的状态信息的状态,加速核心获取到线程函数的状态信息后,获取S11中设置的线程函数的PC值和参数信息,根据PC值和参数信息启动线程函数执行,所有加速核心的线程函数均可以对S1中识别的全局变量进行访问;
S14、各加速核心的线程函数执行完毕后,置线程结束的标志,通知控制核心线程函数已执行结束;
S15、控制核心收到来自S10所绑定的运算核组的所有加速核心线程结束的标志后,进行线程回收操作,更新加速核心的状态信息,执行S16;
S16、控制核心运行结束。
CN201910918623.XA 2019-09-26 2019-09-26 支撑异构众核全芯片视角的加速编程和编译方法 Active CN112558978B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910918623.XA CN112558978B (zh) 2019-09-26 2019-09-26 支撑异构众核全芯片视角的加速编程和编译方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910918623.XA CN112558978B (zh) 2019-09-26 2019-09-26 支撑异构众核全芯片视角的加速编程和编译方法

Publications (2)

Publication Number Publication Date
CN112558978A CN112558978A (zh) 2021-03-26
CN112558978B true CN112558978B (zh) 2022-11-25

Family

ID=75029902

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910918623.XA Active CN112558978B (zh) 2019-09-26 2019-09-26 支撑异构众核全芯片视角的加速编程和编译方法

Country Status (1)

Country Link
CN (1) CN112558978B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105242962A (zh) * 2015-11-24 2016-01-13 无锡江南计算技术研究所 基于异构众核的轻量级线程快速触发方法
CN105426226A (zh) * 2015-11-24 2016-03-23 无锡江南计算技术研究所 一种异构代码融合的编译和生成方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105242962A (zh) * 2015-11-24 2016-01-13 无锡江南计算技术研究所 基于异构众核的轻量级线程快速触发方法
CN105426226A (zh) * 2015-11-24 2016-03-23 无锡江南计算技术研究所 一种异构代码融合的编译和生成方法

Also Published As

Publication number Publication date
CN112558978A (zh) 2021-03-26

Similar Documents

Publication Publication Date Title
Bellens et al. CellSs: a programming model for the Cell BE architecture
US9542231B2 (en) Efficient execution of parallel computer programs
Callahan et al. The cascade high productivity language
Burke et al. Concurrent Collections Programming Model.
Giorgi et al. An introduction to DF-Threads and their execution model
US8429394B1 (en) Reconfigurable computing system that shares processing between a host processor and one or more reconfigurable hardware modules
Mattson et al. The OpenMP common core: making OpenMP simple again
Pienaar et al. Automatic generation of software pipelines for heterogeneous parallel systems
Ma et al. DVM: A big virtual machine for cloud computing
Kennedy et al. The rise and fall of high performance fortran
Fluet et al. Status report: The manticore project
CN112558978B (zh) 支撑异构众核全芯片视角的加速编程和编译方法
Liao et al. OpenMC: Towards simplifying programming for TianHe supercomputers
Hippold et al. Task pool teams for implementing irregular algorithms on clusters of SMPs
Ozen Compiler and runtime based parallelization & optimization for GPUs
Wu et al. Parallelizing CLIPS-based expert systems by the permutation feature of pattern matching
Zhang et al. Evaluating the performance and scalability of mapreduce applications on x10
Vishkin From algorithm parallelism to instruction-level parallelism: An encode-decode chain using prefix-sum
Krishnan et al. Executing sequential binaries on a clustered multithreaded architecture with speculation support
Cardosi et al. Specx: a C++ task-based runtime system for heterogeneous distributed architectures
Du et al. Breaking the interaction wall: A DLPU-centric deep learning computing system
Krolik et al. rNdN: Fast Query Compilation for NVIDIA GPUs
Hegde et al. D2P: From recursive formulations to distributed-memory codes
Verhoef On the use of VDM++ for specifying real-time systems
Naishlos et al. Evaluating the XMT parallel programming model

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant