欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

OpenCL程序編譯方法和編譯器的制造方法

文檔序號:6510652閱讀:195來源:國知局
OpenCL程序編譯方法和編譯器的制造方法
【專利摘要】本申請實施例提供了一種開放運算語言O(shè)penCL程序編譯方法和編譯器,所述方法包括:獲取OpenCL程序的源程序文件,并確定所述源程序文件中定義的操作數(shù)據(jù)的第一數(shù)據(jù)傳輸模式;計算所述操作數(shù)據(jù)分別在所述第一數(shù)據(jù)傳輸模式和第二數(shù)據(jù)傳輸模式下的執(zhí)行消耗時間,所述第二數(shù)據(jù)傳輸模式與所述第一數(shù)據(jù)傳輸模式不同,所述執(zhí)行消耗時間包括所述操作數(shù)據(jù)的數(shù)據(jù)傳輸時間和設(shè)備程序執(zhí)行時間;選擇所述執(zhí)行消耗時間較小的數(shù)據(jù)傳輸模式作為所述源程序文件編譯時所述操作數(shù)據(jù)的編譯數(shù)據(jù)傳輸模式;按照所述編譯數(shù)據(jù)傳輸模式生成編譯執(zhí)行代碼文件。本申請實施例有效保證了程序執(zhí)行效率。
【專利說明】OpenCL程序編譯方法和編譯器

【技術(shù)領(lǐng)域】
[0001] 本申請涉及計算機處理【技術(shù)領(lǐng)域】,更具體的說是涉及一種OpenCL程序編譯方法 和編譯器。

【背景技術(shù)】
[0002] OpenCL (Open Computing Language,開放運算語言)是面向異構(gòu)系統(tǒng)首個通用目 的的并行編程開放式、免費標準語言,其為軟件開發(fā)人員提供了統(tǒng)一的編程環(huán)境,以便于為 高性能計算服務(wù)器、桌面計算系統(tǒng)、手持設(shè)備等編寫高效輕便的代碼。
[0003] OpenCL程序主要分成兩部分:設(shè)備程序和主機程序。例如一個異構(gòu)系統(tǒng)由CPU和 GPU組成時,在CPU上運行的程序為主機程序時,在GPU上運行的程序即為設(shè)備程序。OpenCL 程序的執(zhí)行過程主要包括:主機程序控制數(shù)據(jù)從主機端傳輸?shù)皆O(shè)備端,設(shè)備端執(zhí)行設(shè)備程 序?qū)?shù)據(jù)進行處理,主機程序控制將處理結(jié)果數(shù)據(jù)從設(shè)備端傳輸?shù)街鳈C端。
[0004] 由上述OpenCL程序的執(zhí)行過程可知,影響OpenCL程序執(zhí)行效率的主要是數(shù)據(jù)傳 輸階段以及設(shè)備程序執(zhí)行階段,因此OpenCL程序提供了兩種數(shù)據(jù)傳輸模式,即復(fù)制模式和 映射模式。復(fù)制模式是指將數(shù)據(jù)從主機內(nèi)存復(fù)制到設(shè)備內(nèi)存,或者從設(shè)備內(nèi)存復(fù)制到主機 內(nèi)存,由于數(shù)據(jù)需要在系統(tǒng)真正復(fù)制傳輸,因此在復(fù)制模式下,OpenCL程序在數(shù)據(jù)傳輸階段 耗時較長,但是在設(shè)備程序執(zhí)行時,由于數(shù)據(jù)已經(jīng)位于設(shè)備內(nèi)存中,因此設(shè)備程序執(zhí)行階段 耗時較短;映射模式是指在數(shù)據(jù)傳輸階段,僅是建立設(shè)備內(nèi)存到主機內(nèi)存的映射關(guān)系,數(shù)據(jù) 仍是位于主機內(nèi)存中,因此數(shù)據(jù)傳輸階段的耗時較短,但是設(shè)備程序執(zhí)行時,需要訪問主機 內(nèi)存中的數(shù)據(jù),導(dǎo)致設(shè)備執(zhí)行階段耗時較長。
[0005] 發(fā)明人在實現(xiàn)本發(fā)明的過程中發(fā)現(xiàn),現(xiàn)有技術(shù)中,為了保證OpenCL程序的執(zhí)行效 率,通常是由技術(shù)人員預(yù)先根據(jù)系統(tǒng)的不同應(yīng)用場景,以及硬件平臺等特征,選用合適的 數(shù)據(jù)傳輸模式編寫OpenCL程序,但是現(xiàn)有的這種方式,用戶主觀性較大,并不能有效保證 OpenCL程序的執(zhí)行效率。


【發(fā)明內(nèi)容】

[0006] 本申請?zhí)峁┝艘环NOpenCL程序編譯方法和編譯器,用以解決現(xiàn)有技術(shù)中不能有 效保證OpenCL程序執(zhí)行效率的技術(shù)問題。
[0007] 為實現(xiàn)上述目的,本申請?zhí)峁┤缦录夹g(shù)方案:
[0008] 第一方面,提供了一種開放運算語言O(shè)penCL程序編譯方法,包括:
[0009] 獲取OpenCL程序的源程序文件,并確定所述源程序文件中定義的操作數(shù)據(jù)的第 一數(shù)據(jù)傳輸模式;
[0010] 計算所述操作數(shù)據(jù)分別在所述第一數(shù)據(jù)傳輸模式和第二數(shù)據(jù)傳輸模式下的執(zhí)行 消耗時間,所述第二數(shù)據(jù)傳輸模式與所述第一數(shù)據(jù)傳輸模式不同,所述執(zhí)行消耗時間包括 所述操作數(shù)據(jù)的數(shù)據(jù)傳輸時間和設(shè)備程序執(zhí)行時間;
[0011] 選擇所述執(zhí)行消耗時間較小的數(shù)據(jù)傳輸模式作為所述源程序文件編譯時所述操 作數(shù)據(jù)的編譯數(shù)據(jù)傳輸模式;
[0012] 按照所述編譯數(shù)據(jù)傳輸模式生成編譯執(zhí)行代碼文件。
[0013] 在所述第一方面的第一種可能實現(xiàn)方式中,所述計算所述操作數(shù)據(jù)分別在第一數(shù) 據(jù)傳輸模式和第二數(shù)據(jù)傳輸模式下的程序執(zhí)行消耗時間包括:
[0014] 驗證所述操作數(shù)據(jù)按照所述第二數(shù)據(jù)傳輸模式處理時,所述操作數(shù)據(jù)是否安全;
[0015] 當(dāng)所述操作數(shù)據(jù)安全時,計算所述操作數(shù)據(jù)分別在所述第一數(shù)據(jù)傳輸模式和所述 第二數(shù)據(jù)傳輸模式下時的程序執(zhí)行消耗時間。
[0016] 結(jié)合所述第一方面的第一種可能實現(xiàn)方式,還提供了所述第一方面的第二種可能 實現(xiàn)方式,當(dāng)所述第一數(shù)據(jù)傳輸模式為復(fù)制模式,所述第二數(shù)據(jù)傳輸模式為映射模式,所述 驗證所述操作數(shù)據(jù)按照所述第二數(shù)據(jù)傳輸模式處理,所述操作數(shù)據(jù)是否安全包括:
[0017] 分析在程序執(zhí)行過程中,是否存在主機端對所述操作數(shù)據(jù)的寫操作,若否,確定所 述操作數(shù)據(jù)按照所述第二數(shù)據(jù)傳輸模式處理時安全;
[0018] 當(dāng)所述第一數(shù)據(jù)模式為映射模式,所述第二數(shù)據(jù)傳輸模式為復(fù)制模式時,所述驗 證所述操作數(shù)據(jù)按照所述第二數(shù)據(jù)傳輸模式處理,所述操作數(shù)據(jù)是否安全包括:
[0019] 分析在程序執(zhí)行過程中,是否存在設(shè)備端對所述操作數(shù)據(jù)的寫操作,若否,確定所 述操作數(shù)據(jù)按照所述第二數(shù)據(jù)傳輸模式處理時安全。
[0020] 結(jié)合所述第一方面或所述第一方面的上述任一種可能實現(xiàn)方式,還提供了所述第 一方面的第三種可能實現(xiàn)方式,所述第一數(shù)據(jù)傳輸模式為復(fù)制模式,所述第二數(shù)據(jù)傳輸模 式為映射模式時;或,所述第一數(shù)據(jù)傳輸模式為映射模式,所述第二數(shù)據(jù)傳輸模式為復(fù)制模 式;
[0021] 所述計算所述操作數(shù)據(jù)分別在第一數(shù)據(jù)傳輸模式和第二數(shù)據(jù)傳輸模式下的執(zhí)行 消耗時間包括:
[0022] 根據(jù)所述操作數(shù)據(jù)的總數(shù)據(jù)量以及數(shù)據(jù)傳輸速率,計算復(fù)制模式下所述操作數(shù)據(jù) 的數(shù)據(jù)傳輸時間;
[0023] 根據(jù)設(shè)備程序執(zhí)行過程中,對所述操作數(shù)據(jù)的內(nèi)存訪問總數(shù)據(jù)量以及訪問設(shè)備端 的內(nèi)存訪問速率,計算復(fù)制模式下所述操作數(shù)據(jù)的設(shè)備程序執(zhí)行時間;
[0024] 將所述復(fù)制模式下計算的數(shù)據(jù)傳輸時間以及設(shè)備程序執(zhí)行時間之和,作為所述操 作數(shù)據(jù)在復(fù)制模式下的執(zhí)行消耗時間;
[0025] 根據(jù)主機端與設(shè)備端的映射關(guān)系建立以及消除時間,計算映射模式下所述操作數(shù) 據(jù)的數(shù)據(jù)傳輸時間;
[0026] 根據(jù)設(shè)備程序執(zhí)行過程中,對所述操作數(shù)據(jù)的內(nèi)存訪問總數(shù)據(jù)量以及訪問主機端 的內(nèi)存訪問速率,計算映射模式下所述操作數(shù)據(jù)的設(shè)備程序執(zhí)行時間;
[0027] 將所述映射模式下計算的數(shù)據(jù)傳輸時間以及設(shè)備程序執(zhí)行之和,作為所述操作數(shù) 據(jù)在映射模式下的執(zhí)行消耗時間。
[0028] 結(jié)合所述第一方面的第三種可能實現(xiàn)方式,還提供了所述第一方面的第四種可能 實現(xiàn)方式,所述對所述操作數(shù)據(jù)的內(nèi)存訪問總數(shù)據(jù)量為根據(jù)源程序文件中定義的設(shè)備程序 的工作項數(shù)量以及單位工作項的內(nèi)存訪問數(shù)據(jù)量計算得到。
[0029] 結(jié)合所述第一方面的第三種可能實現(xiàn)方式,還提供了所述第一方面的第五種可能 實現(xiàn)方式,所述數(shù)據(jù)傳輸速率、所述訪問設(shè)備端的內(nèi)存訪問速率或者所述訪問主機端的內(nèi) 存訪問速率是根據(jù)當(dāng)前異構(gòu)系統(tǒng)執(zhí)行硬件平臺的硬件特征預(yù)先確定的。
[0030] 第二方面,提供了一種編譯器,包括:
[0031] 模式確定模塊,用于獲取OpenCL程序的源程序文件,并確定所述源程序文件中定 義的操作數(shù)據(jù)的第一數(shù)據(jù)傳輸模式;
[0032] 計算模塊,用于計算所述操作數(shù)據(jù)分別在所述第一數(shù)據(jù)傳輸模式和第二數(shù)據(jù)傳輸 模式下的執(zhí)行消耗時間,所述第二數(shù)據(jù)傳輸模式與所述第一數(shù)據(jù)傳輸模式不同,所述執(zhí)行 消耗時間包括所述操作數(shù)據(jù)的數(shù)據(jù)傳輸時間和設(shè)備程序執(zhí)行時間;
[0033] 模式選擇模塊,用于選擇消耗時間較小的數(shù)據(jù)傳輸模式作為所述源程序文件編譯 時所述操作數(shù)據(jù)的編譯數(shù)據(jù)傳輸模式。
[0034] 編譯模塊,用于按照所述編譯數(shù)據(jù)傳輸模式生成編譯執(zhí)行代碼文件。
[0035] 在所述第二方面的第一種可能實現(xiàn)方式中,還包括:
[0036] 驗證模塊,用于驗證所述操作數(shù)據(jù)按照第二數(shù)據(jù)傳輸模式處理時,所述操作數(shù)據(jù) 是否安全,若是,再觸發(fā)所述計算模塊。
[0037] 結(jié)合所述第二方面的第一種可能實現(xiàn)方式,還提供了所述第二方面的第二種可能 實現(xiàn)方式,所述驗證模塊具體用于當(dāng)所述第一數(shù)據(jù)傳輸模式為復(fù)制模式,所述第二數(shù)據(jù)傳 輸模式為映射模式,分析在程序執(zhí)行過程中,是否存在主機端對所述操作數(shù)據(jù)的寫操作,若 否,確定所述操作數(shù)據(jù)安全;或者,當(dāng)所述第一數(shù)據(jù)模式為映射模式,所述第二數(shù)據(jù)傳輸模 式為復(fù)制模式時,分析在程序執(zhí)行過程中,是否存在設(shè)備端對所述操作數(shù)據(jù)的寫操作,若 否,確定所述數(shù)據(jù)安全。
[0038] 結(jié)合所述第二方面或所述第二方面的上述任一種可能實現(xiàn)方式,所述第一數(shù)據(jù)傳 輸模式為復(fù)制模式,所述第二數(shù)據(jù)傳輸模式為映射模式時;或,所述第一數(shù)據(jù)傳輸模式為映 射模式,所述第二數(shù)據(jù)傳輸模式為復(fù)制模式;
[0039] 所述計算模塊包括:
[0040] 第一傳輸時間計算模塊,用于根據(jù)所述操作數(shù)據(jù)的總數(shù)據(jù)量以及數(shù)據(jù)傳輸速率, 計算復(fù)制模式下所述操作數(shù)據(jù)的數(shù)據(jù)傳輸時間;
[0041] 第一執(zhí)行時間計算模塊,用于根據(jù)設(shè)備程序執(zhí)行過程中,對所述操作數(shù)據(jù)的內(nèi)存 訪問總數(shù)據(jù)量以及訪問設(shè)備端的內(nèi)存訪問速率,計算復(fù)制模式下所述操作數(shù)據(jù)的設(shè)備程序 執(zhí)行時間;
[0042] 第一消耗時間計算模塊,用于將將所述復(fù)制模式下計算的數(shù)據(jù)傳輸時間以及設(shè)備 程序執(zhí)行時間之和,作為所述操作數(shù)據(jù)在復(fù)制模式下的執(zhí)行消耗時間;
[0043] 第二傳輸時間計算模塊,用于根據(jù)主機端與設(shè)備端的映射關(guān)系建立以及消除時 間,計算映射模式下所述操作數(shù)據(jù)的數(shù)據(jù)傳輸時間;
[0044] 第二執(zhí)行時間計算模塊,用于根據(jù)設(shè)備程序執(zhí)行過程中,對所述操作數(shù)據(jù)的內(nèi)存 訪問總數(shù)據(jù)量以及訪問主機端的內(nèi)存訪問速率,計算映射模式下所述操作數(shù)據(jù)的設(shè)備程序 執(zhí)行時間;
[0045] 第二消耗時間計算模塊,用于將所述映射模式下計算的數(shù)據(jù)傳輸時間以及設(shè)備程 序執(zhí)行之和,作為所述操作數(shù)據(jù)在映射模式下的執(zhí)行消耗時間
[0046] 經(jīng)由上述的技術(shù)方案可知,與現(xiàn)有技術(shù)相比,本申請實施例提供了一種OpenCL程 序編譯方法和編譯器,編譯器獲取OpenCL程序的源程序文件,并確定所述源程序文件中定 義的操作數(shù)據(jù)的第一數(shù)據(jù)傳輸模式;計算所述操作數(shù)據(jù)分別在所述第一數(shù)據(jù)傳輸模式和第 二數(shù)據(jù)傳輸模式下的執(zhí)行消耗時間,選擇所述執(zhí)行消耗時間較小的數(shù)據(jù)傳輸模式作為所述 源程序文件編譯時所述操作數(shù)據(jù)的編譯數(shù)據(jù)傳輸模式,并按照所述編譯數(shù)據(jù)傳輸模式生成 編譯執(zhí)行代碼文件。按照本申請實施例編譯后的OpenCL程序可以減小程序執(zhí)行消耗時間, 提高了程序執(zhí)行效率,可以有效保證在不同異構(gòu)系統(tǒng)中的執(zhí)行效率。

【專利附圖】

【附圖說明】
[0047]為了更清楚地說明本申請實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本 申請的實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù) 提供的附圖獲得其他的附圖。
[0048] 圖1為本申請實施例提供的一種OpenCL程序編譯方法一個實施例的流程圖;
[0049] 圖2為本申請實施例提供的一種OpenCL程序編譯方法另一個實施例的流程圖;
[0050] 圖3為本申請實施例提供的一種OpenCL程序編譯方法又一個實施例的流程圖;
[0051] 圖4為本申請實施例提供的一種編譯器一個實施例的結(jié)構(gòu)示意圖;
[0052] 圖5為本申請實施例提供的一種編譯器另一個實施例的結(jié)構(gòu)示意圖;
[0053] 圖6為本申請實施例提供的編譯器中計算模塊的一種結(jié)構(gòu)示意圖;
[0054] 圖7為本申請實施例提供的一種計算設(shè)備一個實施例的結(jié)構(gòu)示意圖。

【具體實施方式】
[0055] 下面將結(jié)合本申請實施例中的附圖,對本申請實施例中的技術(shù)方案進行清楚、完 整地描述,顯然,所描述的實施例僅僅是本申請一部分實施例,而不是全部的實施例?;?本申請中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他 實施例,都屬于本申請保護的范圍。
[0056] 本申請實施例的主要思想之一包括:
[0057] 編譯器獲取OpenCL程序的源程序文件,并確定所述源程序文件中定義的操作數(shù) 據(jù)的第一數(shù)據(jù)傳輸模式;計算所述操作數(shù)據(jù)分別在所述第一數(shù)據(jù)傳輸模式和第二數(shù)據(jù)傳輸 模式下的執(zhí)行消耗時間,選擇所述執(zhí)行消耗時間較小的數(shù)據(jù)傳輸模式作為所述源程序文件 編譯時所述操作數(shù)據(jù)的編譯數(shù)據(jù)傳輸模式,并按照所述編譯數(shù)據(jù)傳輸模式生成編譯執(zhí)行代 碼文件。按照本申請實施例編譯后的OpenCL程序可以減小程序執(zhí)行消耗時間,提高了程序 執(zhí)行效率,還可以有效保證在不同異構(gòu)系統(tǒng)中的執(zhí)行效率。
[0058] 圖1為本申請實施例一種開放運算語言O(shè)penCL程序編譯方法一個實施例的流程 圖,可以包括以下幾個步驟:
[0059] 101 :獲取0penCL(Open Computing Language,開放運算語言)程序的源程序文件, 并確定所述源程序文件中定義的操作數(shù)據(jù)的第一數(shù)據(jù)傳輸模式。
[0060] OpenCL程序主要分成兩部分:主機程序和設(shè)備程序(即Kernel程序)。主機程序 運行在主機端,設(shè)備程序運行在設(shè)備端。主機程序控制將操作數(shù)據(jù)從主機端傳輸至設(shè)備端, 以及操作數(shù)據(jù)處理后從設(shè)備端傳輸至主機端。設(shè)備程序由設(shè)備端執(zhí)行,完成對操作數(shù)據(jù)的 處理。
[0061] 影響OpenCL程序執(zhí)行效率的主要是數(shù)據(jù)傳輸階段以及設(shè)備程序執(zhí)行階段。 OpenCL程序提供了兩種數(shù)據(jù)傳輸模式,即復(fù)制模式和映射模式。
[0062] 復(fù)制模式是指將操作數(shù)據(jù)從主機端內(nèi)存復(fù)制到設(shè)備端內(nèi)存,或者從設(shè)備端內(nèi)存復(fù) 制到主機端內(nèi)存。
[0063] 映射模式是指在數(shù)據(jù)傳輸階段,僅建立設(shè)備內(nèi)存到主機內(nèi)存的映射關(guān)系,操作數(shù) 據(jù)仍存在于主機端內(nèi)存。
[0064] 若操作數(shù)據(jù)的數(shù)據(jù)傳輸模式為復(fù)制模式,數(shù)據(jù)傳輸階段可能耗時較長,設(shè)備程序 執(zhí)行階段耗時較短;若操作數(shù)據(jù)的數(shù)據(jù)傳輸模式為映射模式,數(shù)據(jù)傳輸階段可能耗時較短, 設(shè)備程序執(zhí)行階段耗時較長。
[0065] 因此復(fù)制模式主要適用于數(shù)據(jù)一次傳輸、多次使用的應(yīng)用場景;映射模式主要適 用于數(shù)據(jù)傳輸量較大、訪問量較小的應(yīng)用場景,
[0066] 源程序文件是由用戶編寫,但是由于用戶的主觀性較大,且對用戶經(jīng)驗要求較高, 因此按照源程序文件中定義的操作數(shù)據(jù)的數(shù)據(jù)傳輸模式執(zhí)行,將無法有效保證程序執(zhí)行時 的執(zhí)行效率。
[0067] 且發(fā)明人在研究中還進一步發(fā)現(xiàn),由于OpenCL程序移植性較好,可以在不同異構(gòu) 系統(tǒng)執(zhí)行,但是OpenCL程序在一個異構(gòu)系統(tǒng)中執(zhí)行效率較高,但在另一個異構(gòu)系統(tǒng)中執(zhí)行 效率不一定1?。
[0068] 因此,發(fā)明人在實現(xiàn)本發(fā)明的過程中,轉(zhuǎn)變了思維模式,由于OpenCL程序在執(zhí)行 過程中,需要進行編譯,將源程序文件變成計算機可以識別的二進制語言,因此本申請實施 例,即利用編譯器對源程序文件進行編譯時,對編譯過程進行了改進。
[0069] 當(dāng)編譯器獲取到源程序文件后,通過對源程序文件的分析,確定出該源程序文件 中定義的操作數(shù)據(jù),以及該操作數(shù)據(jù)的第一數(shù)據(jù)傳輸模式。
[0070] 該第一數(shù)據(jù)傳輸模式可以是復(fù)制模式或者映射模式,由源程序文件中定義的函數(shù) 可知,例如,當(dāng)操作數(shù)據(jù)對應(yīng)的操作函數(shù)為c 1 WriteBuf f er,則表明操作數(shù)據(jù)的數(shù)據(jù)傳輸模 式為復(fù)制模式,當(dāng)對應(yīng)的操作函數(shù)為clEnqueueMapBuffer,則表明操作數(shù)據(jù)的數(shù)據(jù)傳輸模 式為映射模式。
[0071] 例如一段OpenCL程序的源程序文件中包括:
[0072] Double h_A[65536]=......;
[0073] clffriteBuffer(d_A, 65536*8, h_A[0],......);
[0074] 可知,定義的操作數(shù)據(jù)為A,數(shù)據(jù)類型為Double (雙精度浮點型),其數(shù)據(jù)傳輸模式 根據(jù)函數(shù)clWriteBuffer可知為復(fù)制模式。
[0075] 源程序文件中定義的操作數(shù)據(jù)可能包括多個,對于每一操作數(shù)據(jù)均執(zhí)行本申請實 施例所述的處理操作。
[0076] 102:計算所述操作數(shù)據(jù)分別在所述第一數(shù)據(jù)傳輸模式和第二數(shù)據(jù)傳輸模式下的 執(zhí)行消耗時間。
[0077] 第二數(shù)據(jù)傳輸模式為與該第一數(shù)據(jù)傳輸模式不同的數(shù)據(jù)傳輸模式,本申請實施例 中,第一數(shù)據(jù)傳輸模式為復(fù)制模式時,該第二數(shù)據(jù)傳輸模式即為映射模式;第一數(shù)據(jù)傳輸模 式為映射模式時,該第二數(shù)據(jù)傳輸模式即為復(fù)制模式。
[0078] 本實施例中計算操作數(shù)據(jù)分別在第一數(shù)據(jù)傳輸模式和第二數(shù)據(jù)傳輸模式下的執(zhí) 行消耗時間,也即分別在復(fù)制模式以及映射模式下的執(zhí)行消耗時間。
[0079] 該執(zhí)行消耗時間包括該操作數(shù)據(jù)的數(shù)據(jù)傳輸時間以及設(shè)備程序執(zhí)行時間。
[0080] 在復(fù)制模式下,由于數(shù)據(jù)需要在主機端內(nèi)存以及設(shè)備端內(nèi)存中實際傳輸,因此數(shù) 據(jù)傳輸時間與該操作數(shù)據(jù)的總數(shù)據(jù)量以及數(shù)據(jù)傳輸速率有關(guān)。
[0081] 該操作數(shù)據(jù)的總數(shù)據(jù)量可以從OpenCL源程序中對操作數(shù)據(jù)的定義可知。該數(shù)據(jù) 傳輸速率可以結(jié)合當(dāng)前異構(gòu)系統(tǒng)的執(zhí)行平臺的硬件特征預(yù)先確定。
[0082] 由于在復(fù)制模式下,數(shù)據(jù)需要在主機端和設(shè)備端復(fù)制傳輸,因此數(shù)據(jù)傳輸時間包 括操作數(shù)據(jù)從主機端內(nèi)存?zhèn)鬏斨猎O(shè)備端內(nèi)存的時間,以及從設(shè)備端內(nèi)存?zhèn)鬏斨林鳈C端內(nèi)存 的時間,兩次傳輸時間大致相同。因此數(shù)據(jù)傳輸時間可以等于操作數(shù)據(jù)的總數(shù)據(jù)量與數(shù)據(jù) 傳輸速率的乘積的2倍。
[0083] 設(shè)備程序執(zhí)行時間與設(shè)備程序執(zhí)行過程中,對操作數(shù)據(jù)的內(nèi)存訪問總數(shù)據(jù)量以及 對設(shè)備端內(nèi)存的內(nèi)存訪問速率有關(guān)。
[0084] 對操作數(shù)據(jù)的內(nèi)存訪問總數(shù)據(jù)量可以根據(jù)設(shè)備程序的工作項work-item數(shù)量以 及單位工作項的內(nèi)存訪問數(shù)據(jù)量計算得到,工作項數(shù)量以及單位工作項的內(nèi)存訪問數(shù)據(jù)量 可以通過對源程序文件的分析得到。
[0085] 在映射模式下,操作數(shù)據(jù)并不在主機端和設(shè)備端之間真正傳輸,而是通過建立映 射關(guān)系來實現(xiàn)。映射模式下的數(shù)據(jù)傳輸時間由建立映射關(guān)系的時間確定,其包括映射關(guān)系 建立時間和映射關(guān)系消除時間,通常映射關(guān)系消除時間與映射關(guān)系建立時間相同,因此映 射模式下的數(shù)據(jù)傳輸時間可以等于映射關(guān)系建立或消除時間的2倍。
[0086] 映射模式下,設(shè)備程序執(zhí)行過程中,是訪問主機端的內(nèi)存中的操作數(shù)據(jù),因此設(shè)備 程序執(zhí)行時間與設(shè)備程序執(zhí)行過程中對操作數(shù)據(jù)的內(nèi)存訪問總數(shù)據(jù)量以及對主機端內(nèi)存 的內(nèi)存訪問速率有關(guān)。
[0087] 同樣,對操作數(shù)據(jù)的內(nèi)存訪問總數(shù)據(jù)量可以根據(jù)設(shè)備程序的工作項work-item數(shù) 量以及單位工作項的內(nèi)存訪問數(shù)據(jù)量計算得到。
[0088] 設(shè)備程序?qū)υO(shè)備端內(nèi)存的訪問速率以及對主機端的內(nèi)存訪問速率,可以結(jié)合當(dāng)前 異構(gòu)向執(zhí)行平臺的硬件特征預(yù)先確定。
[0089] 由此,可以分別計算得出操作數(shù)據(jù)在復(fù)制模式和映射模式下的執(zhí)行消耗時間。
[0090] 103 :選擇所述執(zhí)行消耗時間較小的數(shù)據(jù)傳輸模式作為所述OpenCL源程序編譯時 所述操作數(shù)據(jù)的編譯數(shù)據(jù)傳輸模式。
[0091] 104 :按照所述編譯數(shù)據(jù)傳輸模式生成編譯執(zhí)行代碼文件。
[0092] 分別計算出操作數(shù)據(jù)在第一數(shù)據(jù)傳輸模式以及第二數(shù)據(jù)傳輸模式下的執(zhí)行消耗 時間時,即可從中選擇執(zhí)行消耗時間較小的數(shù)據(jù)傳輸模式作為所述源程序文件進行編譯時 所述操作數(shù)據(jù)的編譯數(shù)據(jù)傳輸模式,從而在進行編譯時,即按照該編譯數(shù)據(jù)傳輸模式生成 相應(yīng)的編譯執(zhí)行代碼文件,使得OpenCL程序執(zhí)行時,操作數(shù)據(jù)按照所選擇的編譯數(shù)據(jù)傳輸 模式進行傳輸和處理,可以縮短執(zhí)行消耗時間,提高執(zhí)行效率。
[0093] 在本實施例中,獲取源程序文件,并確定出源程序中定義的操作數(shù)據(jù)的第一數(shù)據(jù) 傳輸模式;然后通過分別計算操作數(shù)據(jù)分別在第一數(shù)據(jù)傳輸模式以及第二數(shù)據(jù)傳輸模式下 的執(zhí)行消耗時間,選擇出執(zhí)行消耗時間較小的數(shù)據(jù)傳輸模式作為該源程序文件編譯時所述 操作數(shù)據(jù)的編譯數(shù)據(jù)傳輸模式,據(jù)此可以生成編譯執(zhí)行代碼文件,從而程序在機器中運行 時,可以按照所選擇的編譯數(shù)據(jù)傳輸模式對操作數(shù)據(jù)進行處理,縮短了執(zhí)行消耗時間,可以 有效提高執(zhí)行效率,且將程序移植到另一個異構(gòu)系統(tǒng)中執(zhí)行時,采用本申請實施例技術(shù)方 案,可以確定出操作數(shù)據(jù)符合該異構(gòu)系統(tǒng)的數(shù)據(jù)傳輸模式,從而有效保證了程序在不同異 構(gòu)系統(tǒng)中的執(zhí)行效率。
[0094] 圖2為本申請實施例一種開放運算語言O(shè)penCL程序編譯方法另一個實施例的流 程圖,可以包括以下幾個步驟:
[0095] 201 :獲取OpenCL程序的源程序文件,并確定所述源程序文件中定義的操作數(shù)據(jù) 的第一數(shù)據(jù)傳輸模式;
[0096] 202:驗證所述操作數(shù)據(jù)按照第二數(shù)據(jù)傳輸模式處理時,所述操作數(shù)據(jù)是否安全, 如果是,執(zhí)行步驟203,如果否,則結(jié)束流程。
[0097] 該第二數(shù)據(jù)傳輸模式與第一數(shù)據(jù)傳輸模式不同,例如,當(dāng)?shù)谝粩?shù)據(jù)傳輸模式為復(fù) 制模式時,該第二數(shù)據(jù)傳輸模式為映射模式;當(dāng)?shù)谝粩?shù)據(jù)傳輸模式為映射模式時,該第二數(shù) 據(jù)傳輸模式為復(fù)制模式。
[0098] 本實施例中,在對源程序文件進行編譯時,需要確定該操作數(shù)據(jù)若按照不同與第 一數(shù)據(jù)傳輸模式的第二數(shù)據(jù)傳輸模式處理時,該操作數(shù)據(jù)是否安全,若不安全,則直接結(jié)束 流程。
[0099] 操作數(shù)據(jù)是否安全可以通過判斷操作數(shù)據(jù)若按照第二數(shù)據(jù)傳輸模式進行處理時, 程序執(zhí)行是否出現(xiàn)錯誤來進行判斷,例如操作數(shù)據(jù)在主機端和設(shè)備端是否保持一致。
[0100] 作為一種可能的實現(xiàn)方式,
[0101] 當(dāng)所述第一數(shù)據(jù)傳輸模式為復(fù)制模式,所述第二數(shù)據(jù)傳輸模式為映射模式,該驗 證所述操作數(shù)據(jù)按照所述第二數(shù)據(jù)傳輸模式處理,所述操作數(shù)據(jù)是否安全可以為:
[0102] 分析在程序執(zhí)行過程中,是否存在主機端對所述操作數(shù)據(jù)的寫操作,若否,確定所 述操作數(shù)據(jù)按照所述第二數(shù)據(jù)傳輸模式處理時安全。
[0103] 由于操作數(shù)據(jù)的第一數(shù)據(jù)傳輸模式為復(fù)制模式,主機端和設(shè)備端分別保存該操作 數(shù)據(jù),而若程序執(zhí)行過程中,存在主機端對該操作數(shù)據(jù)的寫操作,操作數(shù)據(jù)將會與設(shè)備端的 操作數(shù)據(jù)不一致。
[0104] 因此,若操作數(shù)據(jù)按照映射模式處理時,操作數(shù)據(jù)只存在與主機端,在程序執(zhí)行過 程中,設(shè)備端處理的操作數(shù)據(jù)與主機端的操作數(shù)據(jù)是一致的,這將導(dǎo)致與操作數(shù)據(jù)在復(fù)制 模式下的處理不相同,使得操作數(shù)據(jù)不安全,程序執(zhí)行會發(fā)生錯誤。
[0105] 當(dāng)所述第一數(shù)據(jù)模式為映射模式,所述第二數(shù)據(jù)傳輸模式為復(fù)制模式時,該驗證 所述操作數(shù)據(jù)按照所述第二數(shù)據(jù)傳輸模式處理,所述操作數(shù)據(jù)是否安全可以為:
[0106] 分析在程序執(zhí)行過程中,是否存在設(shè)備端對所述操作數(shù)據(jù)的寫操作,若否,確定所 述操作數(shù)據(jù)按照所述第二數(shù)據(jù)傳輸模式處理時安全。
[0107] 由于操作數(shù)據(jù)的第一數(shù)據(jù)傳輸模式為映射模式,操作數(shù)據(jù)只存在與主機端。而如 若操作數(shù)據(jù)按照復(fù)制模式處理,主機端和設(shè)備端均存在該操作數(shù)據(jù),設(shè)備端若存在對操作 數(shù)據(jù)的寫操作,此時設(shè)備端的數(shù)據(jù)就會改變,但是不會同時改變主機端的數(shù)據(jù),因此將導(dǎo)致 設(shè)備端和主機端的數(shù)據(jù)不一致。使得操作數(shù)據(jù)在復(fù)制模式下處理時,不安全,程序執(zhí)行會發(fā) 生錯誤。
[0108] 因此,只有在確定出操作數(shù)據(jù)若按照第二數(shù)據(jù)傳輸模式處理安全時,再繼續(xù)執(zhí)行 本實施例的操作流程。
[0109] 其中,判斷主機端或設(shè)備端是否存在對操作數(shù)據(jù)的寫操作,可以通過數(shù)據(jù)流分析 技術(shù)對該OpenCL源程序中對數(shù)據(jù)的定義及使用情況進行分析,以確定出是否存在主機端 或設(shè)備端對操作數(shù)據(jù)的寫操作。
[0110] 203:計算所述操作數(shù)據(jù)分別在所述第一數(shù)據(jù)傳輸模式和第二數(shù)據(jù)傳輸模式下的 執(zhí)行消耗時間,所述第一數(shù)據(jù)傳輸模式與所述第二數(shù)據(jù)傳輸模式不同,所述執(zhí)行消耗時間 包括數(shù)據(jù)傳輸時間和設(shè)備程序執(zhí)行時間。
[0111] 其中,該第一數(shù)據(jù)傳輸模式可以為復(fù)制模式,則該第二數(shù)據(jù)傳輸模式即可以為映 射模式時;或,該第一數(shù)據(jù)傳輸模式為映射模式,該第二數(shù)據(jù)傳輸模式即可以為復(fù)制模式。
[0112] 因此,該計算所述操作數(shù)據(jù)分別在第一數(shù)據(jù)傳輸模式和第二數(shù)據(jù)傳輸模式下的執(zhí) 行消耗時間可以包括:
[0113] 根據(jù)所述操作數(shù)據(jù)的總數(shù)據(jù)量以及數(shù)據(jù)傳輸速率,計算所述操作數(shù)據(jù)在復(fù)制模式 下的數(shù)據(jù)傳輸時間。
[0114] 其中,該數(shù)據(jù)傳輸速率可以以單位數(shù)據(jù)傳輸消耗時間表示,該數(shù)據(jù)傳輸時間可以 等于操作數(shù)據(jù)的總數(shù)據(jù)量與單位數(shù)據(jù)傳輸消耗時間乘積的2倍。
[0115] 根據(jù)設(shè)備程序執(zhí)行過程中,對所述操作數(shù)據(jù)的內(nèi)存訪問總數(shù)據(jù)量以及訪問設(shè)備端 的內(nèi)存訪問速率,計算所述操作數(shù)據(jù)的設(shè)備程序執(zhí)行時間。
[0116] 其中,訪問設(shè)備端的內(nèi)存訪問速率可以根據(jù)當(dāng)前異構(gòu)系統(tǒng)程序執(zhí)行平臺的硬件特 征預(yù)先確定。
[0117] 對所述操作數(shù)據(jù)的內(nèi)存訪問總數(shù)據(jù)量可以等于:設(shè)備程序的工作項數(shù)量以及單位 工作項內(nèi)存訪問數(shù)據(jù)量。
[0118] 工作項work-item是最小的執(zhí)行單元,工作項數(shù)量表明了計算機被分割成多少單 元進行處理,每一工作項的內(nèi)存訪問數(shù)據(jù)量可以根據(jù)該OpenCL源程序中的定義得知,具體 可以通過數(shù)據(jù)流分析技術(shù)分析得出。
[0119] 將所述復(fù)制模式下計算的數(shù)據(jù)傳輸時間以及設(shè)備程序執(zhí)行時間之和,作為所述操 作數(shù)據(jù)在復(fù)制模式下的執(zhí)行消耗時間。
[0120] 根據(jù)主機端與設(shè)備端的映射關(guān)系建立和消除時間,計算操作數(shù)據(jù)在映射模式下的 數(shù)據(jù)傳輸時間。
[0121] 映射關(guān)系建立和消除時間可以根據(jù)當(dāng)異構(gòu)系統(tǒng)執(zhí)行平臺的硬件特征預(yù)先確定。
[0122] 根據(jù)設(shè)備程序執(zhí)行過程中,對所述操作數(shù)據(jù)的內(nèi)存訪問總數(shù)據(jù)量以及訪問主機端 的內(nèi)存訪問速率,計算所述操作數(shù)據(jù)的設(shè)備程序執(zhí)行時間。
[0123] 其中,訪問主機端的內(nèi)存訪問速率可以根據(jù)當(dāng)異構(gòu)系統(tǒng)執(zhí)行平臺的硬件特征預(yù)先 確定。對所述操作數(shù)據(jù)的內(nèi)存訪問總數(shù)據(jù)量可以等于:設(shè)備程序的工作項數(shù)量以及單位工 作項內(nèi)存訪問數(shù)據(jù)量的乘積。
[0124] 將所述映射模式下計算的數(shù)據(jù)傳輸時間以及設(shè)備程序執(zhí)行時間之和,作為所述操 作數(shù)據(jù)在映射模式下的執(zhí)行消耗時間。
[0125] 204:選擇所述執(zhí)行消耗時間較小的數(shù)據(jù)傳輸模式作為所述源程序文件編譯時所 述操作數(shù)據(jù)的編譯數(shù)據(jù)傳輸模式。
[0126] 205 :按照所述編譯數(shù)據(jù)傳輸模式生成編譯執(zhí)行代碼文件。
[0127] 通過計算操作數(shù)據(jù)分別按照復(fù)制模式和映射模式處理時的執(zhí)行消耗時間,選擇執(zhí) 行消耗時間較小的數(shù)據(jù)傳輸模式作為操作數(shù)據(jù)的編譯數(shù)據(jù)傳輸模式,該編譯數(shù)據(jù)傳輸模式 可能是該操作數(shù)據(jù)的第一數(shù)據(jù)傳輸模式,或者不同與第一數(shù)據(jù)傳輸模式的第二數(shù)據(jù)傳輸模 式。
[0128] 通過選擇執(zhí)行消耗時間較小的編譯數(shù)據(jù)傳輸模式,可以使得OpenCL程序在機器 上運行時,減小執(zhí)行時間,提1?執(zhí)行效率。
[0129] 在本實施例中,獲取源程序文件,并確定出源程序中定義的操作數(shù)據(jù)的第一數(shù)據(jù) 傳輸模式,對該操作數(shù)據(jù)進行驗證,若其按照第二數(shù)據(jù)傳輸模式處理,安全時,則分別計算 操作數(shù)據(jù)分別在第一數(shù)據(jù)傳輸模式以及第二數(shù)據(jù)傳輸模式下的執(zhí)行消耗時間,選擇出執(zhí)行 消耗時間較小的數(shù)據(jù)傳輸模式作為編譯時所述操作數(shù)據(jù)的的編譯數(shù)據(jù)傳輸模式,據(jù)此可以 生成編譯執(zhí)行代碼文件,從而程序在機器中運行時,可以按照所選擇的編譯數(shù)據(jù)傳輸模式 對操作數(shù)據(jù)進行處理,縮短了執(zhí)行消耗時間,可以有效提高執(zhí)行效率,且將程序移植到另一 個異構(gòu)系統(tǒng)中執(zhí)行時,采用本申請實施例技術(shù)方案,可以確定出操作數(shù)據(jù)符合該異構(gòu)系統(tǒng) 的數(shù)據(jù)傳輸模式,從而保證了程序在不同異構(gòu)系統(tǒng)中的執(zhí)行效率。
[0130] 下面結(jié)合一個實際應(yīng)用場景,來詳細介紹本申請技術(shù)方案,圖3為本申請實施 例一種開放運算語言O(shè)penCL程序編譯方法另一個實施例的流程圖,本實施例中,以如下 OpenCL程序的源程序文件中的一段片段為例:
[0131]

【權(quán)利要求】
1. 一種開放運算語言O(shè)penCL程序編譯方法,其特征在于,包括: 獲取OpenCL程序的源程序文件,并確定所述源程序文件中定義的操作數(shù)據(jù)的第一數(shù) 據(jù)傳輸模式; 計算所述操作數(shù)據(jù)分別在所述第一數(shù)據(jù)傳輸模式和第二數(shù)據(jù)傳輸模式下的執(zhí)行消耗 時間,所述第二數(shù)據(jù)傳輸模式與所述第一數(shù)據(jù)傳輸模式不同,所述執(zhí)行消耗時間包括所述 操作數(shù)據(jù)的數(shù)據(jù)傳輸時間和設(shè)備程序執(zhí)行時間; 選擇所述執(zhí)行消耗時間較小的數(shù)據(jù)傳輸模式作為所述源程序文件編譯時所述操作數(shù) 據(jù)的編譯數(shù)據(jù)傳輸模式; 按照所述編譯數(shù)據(jù)傳輸模式生成編譯執(zhí)行代碼文件。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述計算所述操作數(shù)據(jù)分別在所述第一 數(shù)據(jù)傳輸模式和第二數(shù)據(jù)傳輸模式下的程序執(zhí)行消耗時間包括: 驗證所述操作數(shù)據(jù)按照所述第二數(shù)據(jù)傳輸模式處理時,所述操作數(shù)據(jù)是否安全; 當(dāng)所述操作數(shù)據(jù)安全時,計算所述操作數(shù)據(jù)分別在所述第一數(shù)據(jù)傳輸模式和所述第二 數(shù)據(jù)傳輸模式下的程序執(zhí)行消耗時間。
3. 根據(jù)權(quán)利要求2所述的方法,其特征在于,當(dāng)所述第一數(shù)據(jù)傳輸模式為復(fù)制模式, 所述第二數(shù)據(jù)傳輸模式為映射模式,所述驗證所述操作數(shù)據(jù)按照所述第二數(shù)據(jù)傳輸模式處 理,所述操作數(shù)據(jù)是否安全包括: 分析在程序執(zhí)行過程中,是否存在主機端對所述操作數(shù)據(jù)的寫操作,若否,確定所述操 作數(shù)據(jù)按照所述第二數(shù)據(jù)傳輸模式處理時安全; 當(dāng)所述第一數(shù)據(jù)模式為映射模式,所述第二數(shù)據(jù)傳輸模式為復(fù)制模式時,所述驗證所 述操作數(shù)據(jù)按照所述第二數(shù)據(jù)傳輸模式處理,所述操作數(shù)據(jù)是否安全包括: 分析在程序執(zhí)行過程中,是否存在設(shè)備端對所述操作數(shù)據(jù)的寫操作,若否,確定所述操 作數(shù)據(jù)按照所述第二數(shù)據(jù)傳輸模式處理時安全。
4. 根據(jù)權(quán)利要求1?3任一項所述的方法,其特征在于,所述第一數(shù)據(jù)傳輸模式為復(fù)制 模式時,所述第二數(shù)據(jù)傳輸模式為映射模式;或,所述第一數(shù)據(jù)傳輸模式為映射模式時,所 述第二數(shù)據(jù)傳輸模式為復(fù)制模式; 所述計算所述操作數(shù)據(jù)分別在第一數(shù)據(jù)傳輸模式和第二數(shù)據(jù)傳輸模式下的執(zhí)行消耗 時間包括: 根據(jù)所述操作數(shù)據(jù)的總數(shù)據(jù)量以及數(shù)據(jù)傳輸速率,計算復(fù)制模式下所述操作數(shù)據(jù)的數(shù) 據(jù)傳輸時間; 根據(jù)設(shè)備程序執(zhí)行過程中,對所述操作數(shù)據(jù)的內(nèi)存訪問總數(shù)據(jù)量以及訪問設(shè)備端的內(nèi) 存訪問速率,計算所述復(fù)制模式下所述操作數(shù)據(jù)的設(shè)備程序執(zhí)行時間; 將所述復(fù)制模式下計算的數(shù)據(jù)傳輸時間以及設(shè)備程序執(zhí)行時間之和,作為所述操作數(shù) 據(jù)在所述復(fù)制模式下的執(zhí)行消耗時間; 根據(jù)主機端與設(shè)備端的映射關(guān)系建立以及消除時間,計算映射模式下所述操作數(shù)據(jù)的 數(shù)據(jù)傳輸時間; 根據(jù)設(shè)備程序執(zhí)行過程中,對所述操作數(shù)據(jù)的內(nèi)存訪問總數(shù)據(jù)量以及訪問主機端的內(nèi) 存訪問速率,計算所述映射模式下所述操作數(shù)據(jù)的設(shè)備程序執(zhí)行時間; 將所述映射模式下計算的數(shù)據(jù)傳輸時間以及設(shè)備程序執(zhí)行之和,作為所述操作數(shù)據(jù)在 所述映射模式下的執(zhí)行消耗時間。
5. 根據(jù)權(quán)利要求4所述的方法,其特征在于,所述對所述操作數(shù)據(jù)的內(nèi)存訪問總數(shù)據(jù) 量為根據(jù)源程序文件中定義的設(shè)備程序的工作項數(shù)量以及單位工作項的內(nèi)存訪問數(shù)據(jù)量 計算得到。
6. 根據(jù)權(quán)利要求4所述的方法,其特征在于,所述數(shù)據(jù)傳輸速率、所述訪問設(shè)備端的內(nèi) 存訪問速率或者所述訪問主機端的內(nèi)存訪問速率是根據(jù)當(dāng)前異構(gòu)系統(tǒng)執(zhí)行硬件平臺的硬 件特征預(yù)先確定的。
7. -種編譯器,其特征在于,包括: 模式確定模塊,用于獲取OpenCL程序的源程序文件,并確定所述源程序文件中定義的 操作數(shù)據(jù)的第一數(shù)據(jù)傳輸模式; 計算模塊,用于計算所述操作數(shù)據(jù)分別在所述第一數(shù)據(jù)傳輸模式和第二數(shù)據(jù)傳輸模式 下的執(zhí)行消耗時間,所述第二數(shù)據(jù)傳輸模式與所述第一數(shù)據(jù)傳輸模式不同,所述執(zhí)行消耗 時間包括所述操作數(shù)據(jù)的數(shù)據(jù)傳輸時間和設(shè)備程序執(zhí)行時間; 模式選擇模塊,用于選擇消耗時間較小的數(shù)據(jù)傳輸模式作為所述源程序文件編譯時所 述操作數(shù)據(jù)的編譯數(shù)據(jù)傳輸模式。 編譯模塊,用于按照所述編譯數(shù)據(jù)傳輸模式生成編譯執(zhí)行代碼文件。
8. 根據(jù)權(quán)利要求7所述的編譯器,其特征在于,還包括: 驗證模塊,用于驗證所述操作數(shù)據(jù)按照第二數(shù)據(jù)傳輸模式處理時,所述操作數(shù)據(jù)是否 安全,若是,再觸發(fā)所述計算模塊。
9. 根據(jù)權(quán)利要求8所述的編譯器,其特征在于,所述驗證模塊具體用于當(dāng)所述第一數(shù) 據(jù)傳輸模式為復(fù)制模式,所述第二數(shù)據(jù)傳輸模式為映射模式,分析在程序執(zhí)行過程中,是否 存在主機端對所述操作數(shù)據(jù)的寫操作,若否,確定所述操作數(shù)據(jù)安全;或者,當(dāng)所述第一數(shù) 據(jù)模式為映射模式,所述第二數(shù)據(jù)傳輸模式為復(fù)制模式時,分析在程序執(zhí)行過程中,是否存 在設(shè)備端對所述操作數(shù)據(jù)的寫操作,若否,確定所述數(shù)據(jù)安全。
10. 根據(jù)權(quán)利要求7?9任一項所述的編譯器,其特征在于,所述第一數(shù)據(jù)傳輸模式為 復(fù)制模式,所述第二數(shù)據(jù)傳輸模式為映射模式時;或,所述第一數(shù)據(jù)傳輸模式為映射模式, 所述第二數(shù)據(jù)傳輸模式為復(fù)制模式; 所述計算模塊包括: 第一傳輸時間計算模塊,用于根據(jù)所述操作數(shù)據(jù)的總數(shù)據(jù)量以及數(shù)據(jù)傳輸速率,計算 復(fù)制模式下所述操作數(shù)據(jù)的數(shù)據(jù)傳輸時間; 第一執(zhí)行時間計算模塊,用于根據(jù)設(shè)備程序執(zhí)行過程中,對所述操作數(shù)據(jù)的內(nèi)存訪問 總數(shù)據(jù)量以及訪問設(shè)備端的內(nèi)存訪問速率,計算復(fù)制模式下所述操作數(shù)據(jù)的設(shè)備程序執(zhí)行 時間; 第一消耗時間計算模塊,用于將將所述復(fù)制模式下計算的數(shù)據(jù)傳輸時間以及設(shè)備程序 執(zhí)行時間之和,作為所述操作數(shù)據(jù)在復(fù)制模式下的執(zhí)行消耗時間; 第二傳輸時間計算模塊,用于根據(jù)主機端與設(shè)備端的映射關(guān)系建立以及消除時間,計 算映射模式下所述操作數(shù)據(jù)的數(shù)據(jù)傳輸時間; 第二執(zhí)行時間計算模塊,用于根據(jù)設(shè)備程序執(zhí)行過程中,對所述操作數(shù)據(jù)的內(nèi)存訪問 總數(shù)據(jù)量以及訪問主機端的內(nèi)存訪問速率,計算映射模式下所述操作數(shù)據(jù)的設(shè)備程序執(zhí)行 時間; 第二消耗時間計算模塊,用于將所述映射模式下計算的數(shù)據(jù)傳輸時間以及設(shè)備程序執(zhí) 行之和,作為所述操作數(shù)據(jù)在映射模式下的執(zhí)行消耗時間。
【文檔編號】G06F9/45GK104424009SQ201310404125
【公開日】2015年3月18日 申請日期:2013年9月6日 優(yōu)先權(quán)日:2013年9月6日
【發(fā)明者】劉穎 申請人:華為技術(shù)有限公司, 中國科學(xué)院計算技術(shù)研究所
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
五河县| 平山县| 绵竹市| 南安市| 鄂州市| 桦南县| 平凉市| 搜索| 滨海县| 凯里市| 商洛市| 宁陕县| 科尔| 大方县| 滨州市| 库伦旗| 江口县| 宁津县| 通江县| 二连浩特市| 霸州市| 高邮市| 琼中| 宣化县| 石林| 大方县| 招远市| 平塘县| 通城县| 安达市| 英山县| 新平| 清河县| 东乡县| 同德县| 依安县| 缙云县| 论坛| 渭源县| 平昌县| 大厂|