CN112558978B - 支撑异构众核全芯片视角的加速编程和编译方法 - Google Patents
支撑异构众核全芯片视角的加速编程和编译方法 Download PDFInfo
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy 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、控制核心运行结束。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105242962A (zh) * | 2015-11-24 | 2016-01-13 | 无锡江南计算技术研究所 | 基于异构众核的轻量级线程快速触发方法 |
CN105426226A (zh) * | 2015-11-24 | 2016-03-23 | 无锡江南计算技术研究所 | 一种异构代码融合的编译和生成方法 |
-
2019
- 2019-09-26 CN CN201910918623.XA patent/CN112558978B/zh active Active
Patent Citations (2)
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 |