[發(fā)明專(zhuān)利]一種C/C++與COStream混合編程方法和可視化編譯系統(tǒng)有效
| 申請(qǐng)?zhí)枺?/td> | 201710491698.5 | 申請(qǐng)日: | 2017-06-26 |
| 公開(kāi)(公告)號(hào): | CN107341010B | 公開(kāi)(公告)日: | 2019-12-13 |
| 發(fā)明(設(shè)計(jì))人: | 于俊清;董慧;何云峰;唐九飛 | 申請(qǐng)(專(zhuān)利權(quán))人: | 華中科技大學(xué) |
| 主分類(lèi)號(hào): | G06F8/20 | 分類(lèi)號(hào): | G06F8/20;G06F8/41 |
| 代理公司: | 42201 華中科技大學(xué)專(zhuān)利中心 | 代理人: | 廖盈春;李智 |
| 地址: | 430074 湖北*** | 國(guó)省代碼: | 湖北;42 |
| 權(quán)利要求書(shū): | 查看更多 | 說(shuō)明書(shū): | 查看更多 |
| 摘要: | |||
| 搜索關(guān)鍵詞: | 一種 c++ costream 混合 編程 方法 可視化 編譯 系統(tǒng) | ||
本發(fā)明公開(kāi)了一種C/C++與COStream混合編程方法和可視化編譯系統(tǒng),屬于計(jì)算機(jī)編譯技術(shù)領(lǐng)域。本發(fā)明技術(shù)方案包括:混合編譯前端模式選擇;混合編譯后端C/C++程序與COStream程序通信交互接口設(shè)計(jì);混合編譯后端多線程處理接口設(shè)計(jì);混合編譯后端目標(biāo)代碼的生成。本發(fā)明還實(shí)現(xiàn)了一種可視化編譯系統(tǒng)。本發(fā)明技術(shù)方案將C/C++與COStream編程結(jié)合起來(lái),充分發(fā)揮了數(shù)據(jù)流編程語(yǔ)言COStream在面向多核并行體系結(jié)構(gòu)中的優(yōu)勢(shì),充分發(fā)揮了多核處理器的高并行性,而且彌補(bǔ)了C/C++在編寫(xiě)多線程程序復(fù)雜性高的問(wèn)題。
技術(shù)領(lǐng)域
本發(fā)明屬于計(jì)算機(jī)編譯技術(shù)領(lǐng)域,更具體地,涉及一種C/C++與COStream混合編程方法和可視化編譯系統(tǒng)。
背景技術(shù)
多核CPU相較于單核CPU而言具有更強(qiáng)的并行性、更高的計(jì)算密度、更低的時(shí)鐘頻率和功耗。雖然多核處理器被越來(lái)越廣泛的使用,但它在很多方面還是存在不足,主要表現(xiàn)在以下兩個(gè)方面。其一,雖然多核處理器通過(guò)其多核的并行性處理提高了程序的計(jì)算能力,但是底層的多核資源并沒(méi)有被充分的利用,其并行處理的能力還有提升的空間。而且傳統(tǒng)的編程語(yǔ)言如C、Fortran不能適用于通用的多核平臺(tái)。其二,像C++、java等編程語(yǔ)言雖然可以通過(guò)創(chuàng)建多線程的方式來(lái)利用處理核的并行計(jì)算能力,而多線程的執(zhí)行模型相比于單線程的執(zhí)行模型而言,能縮短處理核的等待時(shí)間,但是它們依然是運(yùn)行在單核上,底層的多核資源并沒(méi)能全部被調(diào)用。此外,多線程程序的編寫(xiě)對(duì)編程人員的軟件開(kāi)發(fā)能力要求更高,尤其是需要編程人員自己設(shè)計(jì)線程間的同步與通信等,這無(wú)疑使軟件開(kāi)發(fā)的難度大大增加,并不適合所有的編程人員。
針對(duì)上述多核資源不能被充分利用的問(wèn)題,數(shù)據(jù)流(dataflow)編程模型作為一種新的編程模型被提出。數(shù)據(jù)流編程模型在計(jì)算密集型應(yīng)用和多核體系結(jié)構(gòu)中將底層的架構(gòu)資源發(fā)揮到極致。數(shù)據(jù)流編程模型將底層的硬件結(jié)構(gòu)封裝起來(lái),用戶(hù)只需要關(guān)注程序自身中存在的并行性,然后按照數(shù)據(jù)流編程模型進(jìn)行程序設(shè)計(jì)而不必考慮底層的多核結(jié)構(gòu)。數(shù)據(jù)流編譯器會(huì)將用戶(hù)編寫(xiě)的數(shù)據(jù)流程序自動(dòng)的分配到各個(gè)核上去執(zhí)行,編譯器會(huì)根據(jù)底層的多核架構(gòu)自動(dòng)的生成高效的可執(zhí)行代碼,極大的降低了并行計(jì)算程序開(kāi)發(fā)的難度,減輕了編程人員編程負(fù)擔(dān)。當(dāng)前主要的流編程語(yǔ)言有StreamIt,CUDA,COStream,StreamC/KernelC和Flextream等,但是它們的推廣度和普及度不及傳統(tǒng)的C/C++編程語(yǔ)言。
發(fā)明內(nèi)容
針對(duì)現(xiàn)有技術(shù)的以上缺陷或改進(jìn)需求,本發(fā)明提供了一種C/C++與COStream混合編程方法和可視化編譯系統(tǒng),其目的在于將C/C++與COStream混合編程,將適用于數(shù)據(jù)流并行計(jì)算的部分采用COStream實(shí)現(xiàn),其余部分保持原來(lái)的C/C++程序?qū)崿F(xiàn),這樣將能提高程序運(yùn)行的效率,同時(shí)減輕編程人員的負(fù)擔(dān)。
為實(shí)現(xiàn)上述目的,按照本發(fā)明的一個(gè)方面,提供了一種C/C++與COStream混合編程方法和可視化編譯系統(tǒng),該方法包括:
對(duì)COStream編譯器前端進(jìn)行擴(kuò)展,設(shè)計(jì)COStream單模式和C/C++與COStream混合模式的模式選擇接口;
對(duì)COStream編譯器后端進(jìn)行擴(kuò)展,設(shè)計(jì)C/C++程序與COStream程序數(shù)據(jù)通信的接口,設(shè)計(jì)混合模式后端多線程的處理方法;對(duì)COStream源程序進(jìn)行詞法分析、語(yǔ)法分析、語(yǔ)義動(dòng)作分析和任務(wù)調(diào)度劃分后生成目標(biāo)代碼;
所述混合模式后端多線程的處理具體方法為:
(1)獲取分配在各個(gè)核上的所有actor集合,遍歷集合,獲取各個(gè)actor的邊信息,并根據(jù)邊信息構(gòu)造actor對(duì)象;為每個(gè)運(yùn)行核上所有的actor生成一個(gè)線程;
該專(zhuān)利技術(shù)資料僅供研究查看技術(shù)是否侵權(quán)等信息,商用須獲得專(zhuān)利權(quán)人授權(quán)。該專(zhuān)利全部權(quán)利屬于華中科技大學(xué),未經(jīng)華中科技大學(xué)許可,擅自商用是侵權(quán)行為。如果您想購(gòu)買(mǎi)此專(zhuān)利、獲得商業(yè)授權(quán)和技術(shù)合作,請(qǐng)聯(lián)系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201710491698.5/2.html,轉(zhuǎn)載請(qǐng)聲明來(lái)源鉆瓜專(zhuān)利網(wǎng)。
- 一種跨操作系統(tǒng)平臺(tái)的機(jī)群系統(tǒng)監(jiān)控和管理方法
- 由C/C++生成JavaWeb服務(wù)的方法及裝置
- 代碼轉(zhuǎn)換方法與裝置
- 一種WPF和C++的交互方法
- 一種在C++程序中實(shí)現(xiàn)反射的方法、存儲(chǔ)介質(zhì)及計(jì)算設(shè)備
- 用于生成C/C++庫(kù)與解釋語(yǔ)言之間的綁定的方法,并且執(zhí)行所述方法以轉(zhuǎn)換三維(3D)模型
- 基于模塊定義圖的無(wú)人機(jī)飛行控制系統(tǒng)的C++代碼生成方法
- 基于銀河銳華操作系統(tǒng)的C++適配層的裝置
- 一種C++模塊接口的調(diào)用方法及裝置
- 在虛擬機(jī)中執(zhí)行C++任務(wù)的方法、裝置、電子設(shè)備及介質(zhì)





