CN107341010B - 一种C/C++与COStream混合编程方法和可视化编译系统 - Google Patents

一种C/C++与COStream混合编程方法和可视化编译系统 Download PDF

Info

Publication number
CN107341010B
CN107341010B CN201710491698.5A CN201710491698A CN107341010B CN 107341010 B CN107341010 B CN 107341010B CN 201710491698 A CN201710491698 A CN 201710491698A CN 107341010 B CN107341010 B CN 107341010B
Authority
CN
China
Prior art keywords
data
costream
program
mode
compiling
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
CN201710491698.5A
Other languages
English (en)
Other versions
CN107341010A (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.)
Huazhong University of Science and Technology
Original Assignee
Huazhong University of Science and Technology
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 Huazhong University of Science and Technology filed Critical Huazhong University of Science and Technology
Priority to CN201710491698.5A priority Critical patent/CN107341010B/zh
Publication of CN107341010A publication Critical patent/CN107341010A/zh
Application granted granted Critical
Publication of CN107341010B publication Critical patent/CN107341010B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • G06F8/22Procedural
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation

Abstract

本发明公开了一种C/C++与COStream混合编程方法和可视化编译系统,属于计算机编译技术领域。本发明技术方案包括:混合编译前端模式选择;混合编译后端C/C++程序与COStream程序通信交互接口设计;混合编译后端多线程处理接口设计;混合编译后端目标代码的生成。本发明还实现了一种可视化编译系统。本发明技术方案将C/C++与COStream编程结合起来,充分发挥了数据流编程语言COStream在面向多核并行体系结构中的优势,充分发挥了多核处理器的高并行性,而且弥补了C/C++在编写多线程程序复杂性高的问题。

Description

一种C/C++与COStream混合编程方法和可视化编译系统
技术领域
本发明属于计算机编译技术领域,更具体地,涉及一种C/C++与COStream混合编程方法和可视化编译系统。
背景技术
多核CPU相较于单核CPU而言具有更强的并行性、更高的计算密度、更低的时钟频率和功耗。虽然多核处理器被越来越广泛的使用,但它在很多方面还是存在不足,主要表现在以下两个方面。其一,虽然多核处理器通过其多核的并行性处理提高了程序的计算能力,但是底层的多核资源并没有被充分的利用,其并行处理的能力还有提升的空间。而且传统的编程语言如C、Fortran不能适用于通用的多核平台。其二,像C++、java等编程语言虽然可以通过创建多线程的方式来利用处理核的并行计算能力,而多线程的执行模型相比于单线程的执行模型而言,能缩短处理核的等待时间,但是它们依然是运行在单核上,底层的多核资源并没能全部被调用。此外,多线程程序的编写对编程人员的软件开发能力要求更高,尤其是需要编程人员自己设计线程间的同步与通信等,这无疑使软件开发的难度大大增加,并不适合所有的编程人员。
针对上述多核资源不能被充分利用的问题,数据流(dataflow)编程模型作为一种新的编程模型被提出。数据流编程模型在计算密集型应用和多核体系结构中将底层的架构资源发挥到极致。数据流编程模型将底层的硬件结构封装起来,用户只需要关注程序自身中存在的并行性,然后按照数据流编程模型进行程序设计而不必考虑底层的多核结构。数据流编译器会将用户编写的数据流程序自动的分配到各个核上去执行,编译器会根据底层的多核架构自动的生成高效的可执行代码,极大的降低了并行计算程序开发的难度,减轻了编程人员编程负担。当前主要的流编程语言有StreamIt,CUDA,COStream,StreamC/KernelC和Flextream等,但是它们的推广度和普及度不及传统的C/C++编程语言。
发明内容
针对现有技术的以上缺陷或改进需求,本发明提供了一种C/C++与COStream混合编程方法和可视化编译系统,其目的在于将C/C++与COStream混合编程,将适用于数据流并行计算的部分采用COStream实现,其余部分保持原来的C/C++程序实现,这样将能提高程序运行的效率,同时减轻编程人员的负担。
为实现上述目的,按照本发明的一个方面,提供了一种C/C++与COStream混合编程方法和可视化编译系统,该方法包括:
对COStream编译器前端进行扩展,设计COStream单模式和C/C++与COStream混合模式的模式选择接口;
对COStream编译器后端进行扩展,设计C/C++程序与COStream程序数据通信的接口,设计混合模式后端多线程的处理方法;对COStream源程序进行词法分析、语法分析、语义动作分析和任务调度划分后生成目标代码;
所述混合模式后端多线程的处理具体方法为:
(1)获取分配在各个核上的所有actor集合,遍历集合,获取各个actor的边信息,并根据边信息构造actor对象;为每个运行核上所有的actor生成一个线程;
(2)对核上所有的actor进行初态调度,通过对图中的下游节点的工作量的计算来获得上游节点需要对下游节点的push值;然后,对所有的actor进行稳态调度,通过上游节点的push值和初态调度中获得的push值最终确定当程序运行到稳定状态下时上游节点须向其下游节点输出的最小数据量;在调度过程中同样需要通过barrier函数来实现各个线程间的同步操作;
(3)实现软件流水调度,软件流水调度分为三个阶段,即流水填充阶段、填满阶段以及排空阶段;为了保证流水调度的正常运行而不错乱,使用barrier函数进行核间同步操作。
进一步地,所述COStream单模式和C/C++与COStream混合模式的选择接口通过增设模式选择变量来对后端代码生成进行控制,默认的情况下该变量的值为FALSE,即为单模式编程,后端对COStream源码编译后会生成带有main函数的C++代码;当该变量的值置为TRUE时,后端对COStream源码编译后会生成C++代码的类,该类中包含了与C/C++文件进行数据交互的接口和对外进行多线程处理的方法。
进一步地,所述C/C++程序与COStream程序数据通信的接口具体设计方法为:
基于内存的对全局变量的数据通信,当需要处理的数据在编写程序时已经确定,则采用全局变量的方式对数据进行处理,在COStream程序中定义全局变量的数组结构来存储待处理的数据,静态数据流图的topleverNode节点直接访问全局变量,sink节点处理完数据后,将数据暂存在结果变量中,通过生成的类中的接口返回结果数据,当sink节点处理完数据并将结果返回给结果变量时,通过全局变量对结果进行计数;
基于内存的对中间结果的数据通信,当需处理的数据是在C/C++文件中被处理过后的中间结果,并且该数据作为COStream处理对象时,在COStream程序中必须定义能接受数据通信的接口,同时在编译生成的目标代码的类中必须有接受数据的存储结构以及结果返回的存储结构,由于从C/C++传入进来的数据类型以及数量是无法预先知道的,所以通过对传入进来的数据采用输入流的方式对数据进行处理,同时用vector结构对数据进行接收和结果存储。
进一步地,所述目标代码为一个类,类中包含基于内存的对全局变量的访问和对中间结果的访问及文件操作,返回数据结果的接口和返回数据结果数量的接口;在指定的核数上创建各个线程和各个线程相关的执行函数的调用接口,以及类中接受数据变量和结果的私有成员变量,同时还包含各个核之间的同步操作机制。
按照本发明的另一个方面,提供了一种C/C++与COStream混合编程可视化编译系统,该系统包括:
项目创建向导模块,用于建立COStream单模式的项目创建向导和C/C++与COStream混合编程模式的项目创建向导;
编译与运行模块,用于根据待编译的项目找到该项目的配置信息,混合编程后端读取项目的配置信息找到该项目是混合编程模式还是单模式;再根据配置信息对该项目生成编译命令,当编译命令调用后台配置的编译器进行执行时,首先对resource目录的cos文件执行编译命令,将生成的全部文件放入source目录下,然后调用gcc编译器对source目录下的所有的cpp文件和c文件进行编译链接。
进一步地,所述系统还包括工作量估计模块,用于当编译完成后,混合编译器后端会根据流程序任务调度和划分的情况对各个核上的actor的工作量进行计算。
进一步地,所述系统还包括静态同步数据流图展示模块,用于具体为编译器完成混合编程项目的编译后,在source目录下会生成包含dot脚本语言的dot文件,Graphviz脚本绘图工具将dot脚本语言绘制成静态同步数据流图。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下技术特征及有益效果:
(1)基于现有的编译器基础,融合混合编程的编译模式,通过在编译器前端增加模式选择开关以及相应的命令选项,实现后台配置的简易性;
(2)增加了混合编程的后端支持,针对现有的编译器后端不支持混合编程的问题,修改编译器后端,增加混合编程的对外接口,同时设计并实现C/C++与COStream之间的通信;
(3)混合编程后端多线程并行化处理,根据COStream的语法特性,运用其在多核多线程处理问题方面的优势,设计并实现了在混合编程对外模块中多线程处理问题的功能;
(4)可视化编译系统的设计与开发,根据在Eclipse开发项目的特点,设计了在Eclipse中支持混合编程工程文件的创建、编译、运行、工作量估计、SDF图展示功能,为混合编程提供了完善简单的程序设计与分析功能。
附图说明
图1为本发明混合编程方法的设计框架;
图2为本发明混合编译功能结构图;
图3为混合编程多线程处理过程图;
图4为基于混合编程的可视化开发环境框架;
图5为编译与运行功能实现流程图;
图6为混合模式下工作量估计功能框架图;
图7为混合模式下SDF图展示功能框架图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。此外,下面所描述的本发明各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
如图1所示,C/C++与COStream混合编程方法主要包括:
模式选择,在前端增设模式选择开关。通过在前端增设模式选择变量CallModelEmbed来对后端代码生成进行控制。默认的情况下该变量的值为FALSE,即为单模式编程,后端对COStream源码编译后会生成带有main函数的C++代码。当该变量的值置为TRUE时,后端对COStream源码编译后会生成名为RunCOStream类的C++代码,该类中包含了与C/C++文件进行数据交互的接口和对外进行多线程处理的方法。
其次,在编译器前端的命令处理中增设后台编译命令的选项。命令中含有-d选项时会将CallModelEmbed选项置为TRUE,表示调用的是混合模式的后端。当命令中不含-d选项时,默认下CallModeEmbed值为FALSE,表示调用单模式后端。
通信接口设计,首先,基于内存的对全局变量的数据通信。当需要处理的数据在编写程序时已经确定,则采用全局变量的方式对数据进行处理。在COStream程序中定义全局变量的数组结构来存储待处理的数据,静态数据流图(sssg)的topleverNode节点(即source节点)直接访问全局变量。sink节点处理完数据后,将数据暂存在结果变量ResultData[]中,通过生成的RunCOStream类中的GetOutputArray接口返回结果数据。当sink节点处理完数据并将结果返回给ResultData[]时,通过全局变量outputNum对结果进行计数;
其次,基于内存的对中间结果的数据通信。当需要处理的数据是在C/C++文件中被处理过后的中间结果,将此时的数据作为COStream处理对象时,那么在COStream程序中必须定义能接受数据通信的接口,同时在编译生成的目标代码的类中必须有接受数据的存储结构以及结果返回的存储结构。由于从C/C++传入进来的数据类型以及数量是无法预先知道的,所以通过对传入进来的数据采用输入流的方式对数据进行处理,同时用vector结构对数据进行接收(souceDataVec)和结果存储(resultDataVec)。
多线程处理,首先,获取分配在各个核上的所有actor集合,遍历集合,获得各个actor的边信息,并根据边信息构造actor对象。混合编译器后端会对每个运行核上的所有actor生成一个线程;
其次,对核上的所有的actor进行初态调度。初态调度是对划分好的静态数据流图进行一个自下而上的分析过程,通过对图中的下游节点的工作量的计算来获得上游节点需要对下游节点push的数据量,并采用barrier进行同步。然后,对所有的actor进行稳态调度。稳态调度是自上而下的操作过程,通过上游节点的push值和初态调度中获得的push值最终确定当程序运行到稳定状态下时上游节点须向其下游节点输出的最小数据量。在稳态调度过程中同样需要通过barrier函数来实现各个线程间的同步操作;
最后,实现软件流水调度。stage数组控制软件流水调度的过程,数组大小阶段划分后的最大阶段号,数组中的元素值为0或1,初始时只有第一个元素为1,表示所有阶段号为0的actor可以执行。软件流水调度分为三个阶段,即流水填充阶段、填满阶段以及排空阶段。为了保证流水调度的正常运行而不错乱,使用barrier函数进行核间同步操作。
如图2所示,为兼容已有的单模式编程的可视化环境的所有的功能,帮助编程人员沿用已有的编程习惯,利用Eclipse在已有的插件中做进一步的功能扩展,即混合编程项目的创建和一键化编译功能的实现。整个插件以.jar文件的形式导出并安装到Eclipse集成开发环境中,以实现不同模式项目的创建以及编译运行的功能,提高程序的编写效率,降低程序的错误率。由框架图可以看出,可视化环境由三大部分组成,分别为:
项目创建向导:
项目创建时应该保持Eclipse中一贯的项目创建的习惯。在已有的项目条目中增加了COStream单模式的项目创建向导和C/C++与COStream混合编程的项目创建向导,其中混合模式下,该项目条目中应增设对.cpp文件和.cos文件的支持;
编译于运行:
保持与已有的项目编译功能的风格,当选中需要编译的项目的时候,后台应自主的根据项目的类型来调用后台相关的命令。在后端调用编译器时,应分别根据创建的项目是单模式还是混合模式,然后来选择需要调用的后台命令。在混合模式下调用命令时应先调用COStream编译命令,然后对生成的目标代码以及源cpp文件调用gcc编译命令。这样设计既能保持已有的编程,更能使现在开发的界面更加的简洁美观;
工作量估计:
工作量估计将显示程序整个的工作量、分配在各个核上的工作量以及混合编程模式下数据流程序相对于串行程序而言的最大加速比。不同的运行后端对程序性能的影响也不同。在X86后端下,各个核上的工作量和核间同步对程序性能影响较大。在GPU后端,影响程序性能的因素主要为异构平台下的计算、同步与通信。而在CPU-GPU混合架构下,集群节点间的通信开销为影响程序性能的主要因素,核间通信的时间可以忽略不计。所以,在混合编程可视化开发环境中,分别针对不同的后端对程序做了工作量估计。开发人员可以通过在可视化编程环境中直观地查看程序分配在各个核上的工作量的百分比,从而对程序进行调整或更改指定的运行核数,从而提高程序的性能;
SDF图展示:
COStream程序经过混合编程编译器前端编译后,生成抽象语法树(AST)进一步生成中间代码,中间代码的中间表示为SDF图,SDF图中展示了各个actor上的初态调度工作量、稳态调度工作量、push值(上游节点输入值的个数)、peek值(actor所取数据个数)以及pop值(输出值个数)。程序经过编译后,程序员可以点击SDF图展示按钮,后台将Graphviz脚本绘图工具将编译阶段生成dot脚本语言绘制成静态同步数据流图(SDF),并将该图展示在工作控制台上。通过直观的观察各个actor的工作量和程序整体在各个核上的划分情况,有利于编程人员分析程序的结构从而对程序做出调整和优化。
如图3所示,COStream主要适用于那些可以并行化处理的应用程序。硬件底层的多核结构,采用多线程处理机制将大大的提升程序的处理效率。由编译器前端对COStream源码进行词法分析、语法分析等处理后,编译器后端对前端生成的静态数据流图进行任务划分(MetisPartion),将各个计算任务分配到相应的处理器核上。此时,在每个处理器核上创建相应的线程来执行指定的任务。核间通过barrier进行同步操作。混合编程后端采用多线程的机制对各个核上的任务进行处理和计算。
如图4所示,编译模块集成了混合模式下的编译器和gcc预处理器。因为COStream的语法是在C的基础上进行扩展而来的,在混合编程编译器前端会调用gcc预处理器对COStream程序进行预处理。预处理完毕后,将调用后台的混合模式编译命令,对resource目录下的cos文件进行编译,生成的C++代码以及makefile等文件与用户编写的C++代码一同放在source目录下,通过后端调用gcc编译器生成可执行文件。
编译完成后,编译器后端调用脚本绘图工具将编译阶段生成的dot脚本语言绘制成SDF图。SDF图中将actor上的工作量以及所占总工作量的百分比情况可视化的展现给编程人员,这将有利于编程成员更加直观的验证程序的正确性和划分算法的性能。程序员点击运行按钮后将生成的结果展示在控制台上。此外,点击工作量估计将弹出运行次数设置,设定出给定的次数后,控制台将显示运行指定次数后的工作量和最大加速比。对混合程序进行编译前要事先在可视化环境中指定程序的执行后端,混合编程支持X86、GPU和集群后端。
如图5所示,由流程图可以看出,当用户点击编译按钮时,首先根据用户当前选中的活跃的项目,获得该项目的配置信息,根据配置信息中项目当前所处的状态和用户指定的运行后端,由命令生成器生成相应的编译命令,调用相应的编译命令执行。如果编译成功,则修改项目当前的状态信息。如果编译不成功,则给出错误提示。
如图6所示,在工作量估计视图中会显示各个核上的工作量、程序总的工作量和最大工作量、各个核上的工作量所占总工作量的百分比以及程序运行的最大加速比。最大加速比是运行COStream所用时间相比于执行相同程序的串行版本而获得的。因为混合编译将程序的运行后端分为了X86后端,GPU后端和集群后端,所以在对程序进行工作量估计的时候,编译器会根据用户所选择的不同的运行后端有所侧重的对程序进行分析,并统计出各个后端下程序的主要的工作量的估计。
如图7所示,编译器完成混合编程项目的编译后,在source目录下会生成三个dot文件,分别为flatGraph.dot,PartitionGraph以及BSPartitionGraph。当用户点击SDF图展示按钮时,混合编程可视化开发环境的后端将会相应用户的action,在showSDFGraph方法中找到这些文件,并在视图中展示出来。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (3)

1.一种C/C++与COStream混合编程方法,其特征在于,所述方法包括:
对COStream编译器前端进行扩展,设计COStream单模式和C/C++与COStream混合模式的模式选择接口;
对COStream编译器后端进行扩展,设计C/C++程序与COStream程序数据通信的接口,设计混合模式后端多线程的处理方法;对COStream源程序进行词法分析、语法分析、语义动作分析和任务调度划分后生成目标代码;所述C/C++程序与COStream程序数据通信的接口具体设计方法为:
基于内存的对全局变量的数据通信,当需要处理的数据在编写程序时已经确定,则采用全局变量的方式对数据进行处理,在COStream程序中定义全局变量的数组结构来存储待处理的数据,静态数据流图的topleverNode节点直接访问全局变量,sink节点处理完数据后,将数据暂存在结果变量中,通过生成的类中的接口返回结果数据,当sink节点处理完数据并将结果返回给结果变量时,通过全局变量对结果进行计数;
基于内存的对中间结果的数据通信,当需处理的数据是在C/C++文件中被处理过后的中间结果,并且该数据作为COStream处理对象时,在COStream程序中必须定义能接受数据通信的接口,同时在编译生成的目标代码的类中必须有接受数据的存储结构以及结果返回的存储结构,由于从C/C++传入进来的数据类型以及数量是无法预先知道的,所以通过对传入进来的数据采用输入流的方式对数据进行处理,同时用vector结构对数据进行接收和结果存储;
所述混合模式后端多线程的处理具体方法为:
(1)获取分配在各个核上的所有actor集合,遍历集合,获取各个actor的边信息,并根据边信息构造actor对象;为每个运行核上所有的actor生成一个线程;
(2)对核上所有的actor进行初态调度,通过对图中的下游节点的工作量的计算来获得上游节点需要对下游节点的push值;然后,对所有的actor进行稳态调度,通过上游节点的push值和初态调度中获得的push值最终确定当程序运行到稳定状态下时上游节点须向其下游节点输出的最小数据量;在调度过程中同样需要通过barrier函数来实现各个线程间的同步操作;
(3)实现软件流水调度,软件流水调度分为三个阶段,即流水填充阶段、填满阶段以及排空阶段;为了保证流水调度的正常运行而不错乱,使用barrier函数进行核间同步操作。
2.根据权利要求1所述的一种C/C++与COStream混合编程方法,其特征在于,所述COStream单模式和C/C++与COStream混合模式的选择接口通过增设模式选择变量来对后端代码生成进行控制,默认的情况下该变量的值为FALSE,即为单模式编程,后端对COStream源码编译后会生成带有main函数的C++代码;当该变量的值置为TRUE时,后端对COStream源码编译后会生成C++代码的类,该类中包含了与C/C++文件进行数据交互的接口和对外进行多线程处理的方法。
3.根据权利要求1所述的一种C/C++与COStream混合编程方法,其特征在于,所述目标代码为一个类,类中包含基于内存的对全局变量的访问和对中间结果的访问及文件操作,返回数据结果的接口和返回数据结果数量的接口;在指定的核数上创建各个线程和各个线程相关的执行函数的调用接口,以及类中接受数据变量和结果的私有成员变量,同时还包含各个核之间的同步操作机制。
CN201710491698.5A 2017-06-26 2017-06-26 一种C/C++与COStream混合编程方法和可视化编译系统 Active CN107341010B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710491698.5A CN107341010B (zh) 2017-06-26 2017-06-26 一种C/C++与COStream混合编程方法和可视化编译系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710491698.5A CN107341010B (zh) 2017-06-26 2017-06-26 一种C/C++与COStream混合编程方法和可视化编译系统

Publications (2)

Publication Number Publication Date
CN107341010A CN107341010A (zh) 2017-11-10
CN107341010B true CN107341010B (zh) 2019-12-13

Family

ID=60220023

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710491698.5A Active CN107341010B (zh) 2017-06-26 2017-06-26 一种C/C++与COStream混合编程方法和可视化编译系统

Country Status (1)

Country Link
CN (1) CN107341010B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108319458B (zh) * 2018-01-17 2021-04-06 南京航空航天大学 一种基于图形化卫式命令演算的多任务编译方法
CN108614927A (zh) * 2018-04-16 2018-10-02 南京信息工程大学 基于VC++与MATLAB混编技术的Rayleigh散射近似误差分析方法
CN109358846B (zh) * 2018-09-19 2019-09-27 深圳大学 一种基于c语言的语法扩展方法、装置及终端设备
CN111488140B (zh) * 2019-01-29 2023-10-27 杭州海康威视数字技术股份有限公司 一种支持多编程语言多编程库的方法、装置和计算机设备
EP3908893A1 (en) * 2019-02-18 2021-11-17 Siemens Aktiengesellschaft Automation code generator for interoperability across industrial ecosystems
CN111736838A (zh) * 2019-03-25 2020-10-02 华为技术有限公司 一种跨语言编译方法及设备
CN110674590A (zh) * 2019-10-07 2020-01-10 中国人民解放军陆军装甲兵学院 一种基于仿真软件Simulink实时扩展RTX的飞行器实时仿真程序的编程方法
WO2022151114A1 (zh) * 2021-01-14 2022-07-21 王志平 一种软件动态链接的实现方法
CN114741993B (zh) * 2022-04-18 2023-06-16 山东浪潮科学研究院有限公司 一种基于脚本的数据流图生成方法及装置
CN115495093B (zh) * 2022-11-07 2023-07-21 深圳鲲云信息科技有限公司 一种混合编译方法、装置、电子设备和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104965761A (zh) * 2015-07-21 2015-10-07 华中科技大学 一种基于gpu/cpu混合架构的流程序多粒度划分与调度方法
CN106775616A (zh) * 2016-11-10 2017-05-31 中国电子科技集团公司第二十八研究所 基于C++与Java混合编程的分布式服务系统

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104965761A (zh) * 2015-07-21 2015-10-07 华中科技大学 一种基于gpu/cpu混合架构的流程序多粒度划分与调度方法
CN106775616A (zh) * 2016-11-10 2017-05-31 中国电子科技集团公司第二十八研究所 基于C++与Java混合编程的分布式服务系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"COStream:一种面向数据流的编程语言和编译器实现";张维维 等;《计算机学报》;20131031;第36卷(第10期);第1993-2006页 *
"面向Storm的数据流编程模型与编译优化方法研究";杨秋吉 等;《计算机工程与科学》;20161231;第38卷(第12期);第2409-2418页 *

Also Published As

Publication number Publication date
CN107341010A (zh) 2017-11-10

Similar Documents

Publication Publication Date Title
CN107341010B (zh) 一种C/C++与COStream混合编程方法和可视化编译系统
Linderman et al. Merge: a programming model for heterogeneous multi-core systems
KR101962484B1 (ko) 확장 가능한 데이터 병렬 시맨틱스
Silvano et al. The ANTAREX tool flow for monitoring and autotuning energy efficient HPC systems
Mathews et al. Automatic code parallelization with openmp task constructs
Hoffmann et al. OpenMP as runtime for providing high-level stream parallelism on multi-cores
Acosta et al. Towards a Unified Heterogeneous Development Model in Android TM
Michell et al. Tasklettes–a fine grained parallelism for Ada on multicores
Shekhar et al. Comparison of parallel programming models for multicore architectures
Bloch et al. Methodologies for synthesizing and analyzing dynamic dataflow programs in heterogeneous systems for edge computing
Loogen Programming language constructs
Mateos et al. Enhancing the BYG gridification tool with state-of-the-art Grid scheduling mechanisms and explicit tuning support
Mount et al. CSP as a Domain-Specific Language Embedded in Python and Jython.
Khatami et al. Using hpx and op2 for improving parallel scaling performance of unstructured grid applications
Wang et al. Minimizing the overheads of dependent {AND}-parallelism
Hsiao et al. Implementation of a portable parallelizing compiler with loop partition
Garibay-Martínez et al. Towards transparent parallel/distributed support for real-time embedded applications
Hong et al. StreamPI: a stream-parallel programming extension for object-oriented programming languages
Haensel A C++ Based MPI-Enabled Tasking Framework to Efficiently Parallelize Fast Multipole Methods for Molecular Dynamics
Cardosi et al. Specx: a C++ task-based runtime system for heterogeneous distributed architectures
Girko et al. Using static code analysis to improve performance of GridRPC applications
Agathos et al. Compiler-assisted, adaptive runtime system for the support of OpenMP in embedded multicores
Wu Model-based Design for High-performance Signal Processing Applications
Ambrus A framework for automatic parallelization of sequential programs
Cantiello et al. Compilers, techniques, and tools for supporting programming heterogeneous many/multicore systems

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