[发明专利]一种C/C++与COStream混合编程方法和可视化编译系统有效
申请号: | 201710491698.5 | 申请日: | 2017-06-26 |
公开(公告)号: | CN107341010B | 公开(公告)日: | 2019-12-13 |
发明(设计)人: | 于俊清;董慧;何云峰;唐九飞 | 申请(专利权)人: | 华中科技大学 |
主分类号: | G06F8/20 | 分类号: | G06F8/20;G06F8/41 |
代理公司: | 42201 华中科技大学专利中心 | 代理人: | 廖盈春;李智 |
地址: | 430074 湖北*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明公开了一种C/C++与COStream混合编程方法和可视化编译系统,属于计算机编译技术领域。本发明技术方案包括:混合编译前端模式选择;混合编译后端C/C++程序与COStream程序通信交互接口设计;混合编译后端多线程处理接口设计;混合编译后端目标代码的生成。本发明还实现了一种可视化编译系统。本发明技术方案将C/C++与COStream编程结合起来,充分发挥了数据流编程语言COStream在面向多核并行体系结构中的优势,充分发挥了多核处理器的高并行性,而且弥补了C/C++在编写多线程程序复杂性高的问题。 | ||
搜索关键词: | 一种 c++ costream 混合 编程 方法 可视化 编译 系统 | ||
【主权项】:
1.一种C/C++与COStream混合编程方法,其特征在于,所述方法包括:/n对COStream编译器前端进行扩展,设计COStream单模式和C/C++与COStream混合模式的模式选择接口;/n对COStream编译器后端进行扩展,设计C/C++程序与COStream程序数据通信的接口,设计混合模式后端多线程的处理方法;对COStream源程序进行词法分析、语法分析、语义动作分析和任务调度划分后生成目标代码;所述C/C++程序与COStream程序数据通信的接口具体设计方法为:/n基于内存的对全局变量的数据通信,当需要处理的数据在编写程序时已经确定,则采用全局变量的方式对数据进行处理,在COStream程序中定义全局变量的数组结构来存储待处理的数据,静态数据流图的topleverNode节点直接访问全局变量,sink节点处理完数据后,将数据暂存在结果变量中,通过生成的类中的接口返回结果数据,当sink节点处理完数据并将结果返回给结果变量时,通过全局变量对结果进行计数;/n基于内存的对中间结果的数据通信,当需处理的数据是在C/C++文件中被处理过后的中间结果,并且该数据作为COStream处理对象时,在COStream程序中必须定义能接受数据通信的接口,同时在编译生成的目标代码的类中必须有接受数据的存储结构以及结果返回的存储结构,由于从C/C++传入进来的数据类型以及数量是无法预先知道的,所以通过对传入进来的数据采用输入流的方式对数据进行处理,同时用vector结构对数据进行接收和结果存储;/n所述混合模式后端多线程的处理具体方法为:/n(1)获取分配在各个核上的所有actor集合,遍历集合,获取各个actor的边信息,并根据边信息构造actor对象;为每个运行核上所有的actor生成一个线程;/n(2)对核上所有的actor进行初态调度,通过对图中的下游节点的工作量的计算来获得上游节点需要对下游节点的push值;然后,对所有的actor进行稳态调度,通过上游节点的push值和初态调度中获得的push值最终确定当程序运行到稳定状态下时上游节点须向其下游节点输出的最小数据量;在调度过程中同样需要通过barrier函数来实现各个线程间的同步操作;/n(3)实现软件流水调度,软件流水调度分为三个阶段,即流水填充阶段、填满阶段以及排空阶段;为了保证流水调度的正常运行而不错乱,使用barrier函数进行核间同步操作。/n
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于华中科技大学,未经华中科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201710491698.5/,转载请声明来源钻瓜专利网。