專利名稱:一種異構多處理器上并行執行任務的方法
技術領域:
本發明涉及一種計算機應用技術,具體地說是一種異構多處理器上并行執行同一任務的方法。
背景技術:
隨著GPU逐漸納入高性能并行計算設備,GPU被按照一般目的的計算設備,開發了越來越多的應用程序,完成數據并行計算。現在我們能用GPU供應商提供的專業接口和專業GPU設備,來設計這些應用程序,使CPU和GPU—起用于數據處理系統,CPU也不會負載過重。如何使應用程序可以更好的運行在不同廠商的GPU上。
H前,越來越多的CPU被嵌入多核完成數據并行計算,越來越多的數據處理任務可以用CPUs和GPUs —起完成。但是如何同時更好的利用CPU和GPU目前還未有好的辦法,因此,需要一個新的數據處理系統,來克服上述困難,允許應用完成任務時,可以利用多個CPU組合或GPU組合或多個CPU和多個GPU的組合進行大規模數據處理。
發明內容
本發明的目的是提供一種多個CPU和多個GPU異構多處理器上并行執行任務的方法。
本發明的目的是按以下方式實現的,主處理器和輔助處理器并行對應用程序進行數據處理,應用程序運行在主處理器,為完成數據處理的并行處理,產生API請求,要求加載一個或多個可執行程序;然后應用程序通過API請求在加載的一個或多個可執行程序中為輔助處理器選擇一個可執行程序,具體步驟如下
運行在主處理器的應用,為完成數據并行處理任務,將產生一個API請求,要求加載一個或多個可執行程序,來進行數據處理。為了響應這個API請求,將產生一個新任務,這個新任務中包含要求加載的一個或多個可執行程序,同時輔助處理器的任務隊列被更新。
然后應用程序又產生一個API請求,要求輔助處理器選擇新任務中的一個可執行程序來運行。這個可執行程序是基于完成新任務的條件來進行選擇的,即選擇保證新任務完成的一個可執行程序去執行。被選擇的可執行程序由于可能與輔助處理器不匹配,因此在運行時刻,可執行程序需要得到源代碼重新編譯成輔助處理器的可以運行的可執行程序。
可執行程序中包括描述數據和源代碼,描述數據中描述可執行程序支持的處理器的版本、類型,源代碼是從與被加載的可執行程序相關的庫中加載,將被用來編譯產生輔助處理器的可執行程序。加載描述數據和源代碼到輔助處理器的過程是比較描述數據和輔助處理器的信息;基于比較得到的信息,為輔助處理器從源代碼中在線編譯可執行程序。
基于比較得到的信息包括1)可執行程序對于輔助處理器需要優化的信息;2)可執行程序不支持輔助處理器的信息。
在線編譯可執行程序的編譯過程包括生成新的可執行程序,產生更新的描述數據,描述數據中包括輔助處理器的版本信息;保存新生成的可執行程以及更新的描述數據,新生成的可執行程序至少替代了一個原有的Bj執行程序。
源代碼和已編譯的可執行程序保存在API庫中,為響應運行在主處理器的應用的API請求,輔助處理器為執行數據處理功能,將在API庫中找到這些源代碼和已編譯的可執行程序,同時,在線編譯的可執程序和可執行程序的描述數據,也保存在這個API庫中。
主處理器是一個或多個普通CPU的組合,輔助處理器是一個或多個普通CPU或GPU的組合。
主處理器收到API的命令,執行有多個線程的應用程序,為并行執行多個線程,可執行程序被加載到輔助處理器,主處理器聯系著眾多輔助處理器,輔助處理器中包括CPUs或者GPUs,如果一個線程被初始化或者調度到某個GPU上執行,而這個GPU正忙于圖像處理其它線程,那么這個線程可以重新被初始化或調度到某個CPU上執行。
本發明的有益效果是克服現有技術中存在的問題,允許應用程序執行任務時,利用多個CPU組合或GPU組合或多個CPU和多個GPU的組合進行大規模數據處理。
圖1完成應用中數據并行計算的計算設備配置圖;圖2物理計算設備識別示意圖;圖3應用程序執行的過程示意圖;圖4可執行程序加載分派編譯保存的過程示意圖。
具體實施例方式
運行在主處理器的應用程序,為完成數據并行處理任務,將產生一個API請求,要求加載一個或多個可執行程序來進行數據處理,為了響應這個API請求,將產生一個新任務,這個新任務中包含要求加載的一個或多個可執行程序,同時
輔助處理器的任務隊列被更新。然后應用程序又產生一個API請求,要求選擇新任務中的一個可執行程序在主處理器附加的輔助處理器運行,輔助處理器可以是CPU或者GPU。這個可執行程序是基于完成新任務的條件來進行選擇的,即選擇保證新任務完成條件的一個可執行程序去執行。被選擇的可執行程序加載輔助處理器,由于可能與輔助處理器不匹配,因此在運行時刻,可執行程序需要得到源代碼重新編譯成輔助處理器的可執行程序。應用程序將加載源代碼,并自動判斷輔助處理器的類型。基于輔助處理器的類型,在線編譯可執行程序。源代碼和相應的為處理器編譯的可執行程序都存儲在一個API庫中,供應用程序調度來完成API功能。在線編譯完成的可執行程序也要保存到這個API庫。加載到輔助處理器的可執行程序和其它輔助處理器單元的可執行程序并發執行。
主處理器可以是一個或多個普通CPU,輔助處理器可以是多個CPUs或者多個GPUs。主處理器收到API的命令,去執行含有多線程的應用。可執行程序為并行執行一組線程被加載到輔助處理器。主處理器聯系著眾多輔助處理器,如果一個線程被初始化或者調度到某個GPU上執行,而GPU正忙于圖像處理其它線程,那么這個線程可以重新被初始化或調度到某個CPU或GPU上執行。實施例
為了使本發明的目的、技術方案和優點更加清晰,下面結合附圖和實施例,對本發明作以下詳細說明。
圖l是為完成應用數據并行處理的計算設備配置圖,在這個計算設備中,包含中央處理器CPU和圖形處理器GPU,其中的主處理系統中有一個主處理器,可以在網絡中上傳下載數據和計算結果,主處理器通過數據總線連接異構處理器CPUs和GPUs。 CPU可以是多核的CPU, GPU是可以支持圖形處理和雙精度浮點運算的硬件。函數庫保存源代碼和可執行程序,編譯層負責編譯源代碼,應用通過API調用,加載可執行程序到運行層,運行層通過計算資源的分配,管理處理任務的執行,運算平臺層,負責物理計算設備的標識。編譯完成的可執行程序,通過API調用加載到運行層,運行時運行層根據處理器的數據文件,與編譯層交互,實時編譯源代碼生成新的可執行程序。運行層把符合條件的可執行程序通過運算平臺層分配到計算資源。
圖2是運算平臺層中設備識別器識別物理計算設備的示意圖。物理設備的標示是通過運算平臺層完成的,為響應應用的API請求,配置并行數據處理的資源,運算平臺層中有一個設備識別器,產生物理計算設備的標識符。
在本發明方法中,應用運行在主處理器,為完成數據的并行處理任務,將產生
一個API請求,要求加載一個或多個可執行程序來進行數據處理。為了響應這個API請求,將產生一個新任務,這個新任務中包含要求加載的一個或多個可執行程序,同時輔助處理器(也可以稱之計算處理器或目標計算處理器)的任務隊列被更新。然后應用程序又產生一個API請求,要求選擇新任務中的一個可執行程序在主處理器附加的輔助處理器運行,輔助處理器可以是CPU或者GPU。這個可執行程序是基于完成新任務的條件來進行選擇的,即選擇保證新任務完成條件的一個可執行程序去執行。被選擇的可執行程序加載到目標計算處理器,由于可能與目標計算處理器不匹配,因此在運行時刻,可執行程序需要得到源代碼重新編譯成目標計算處理器的可執行程序。應用程序將加載源代碼,并自動判斷目標數據處理器的類型。基于目標數據處理器的類型,在線編譯可執行程序。源代碼和相應的為處理器編譯的可執行程序都存儲在一個API庫中,供應用程序調度來完成API功能。在線編譯完成的可執行程序也要保存到這個API庫。加載到目標處理器的可執行程序和其它計算單元的可執行程序并發執行。其簡要過程如圖三所示應用程序運行在一個包含AIP庫的數據處理系統上,通過API調用,在API庫中找到源代碼和可執行程序,通過在計算處理器上執行可執行程序完成數據的并行處理。可執行程序的加載、指派、編譯、保存的過程如圖4所示從API庫中把可執行程序及所要使用的源代碼離線的加載到數據處理系統中,為可執行程序指派目標物理計算設備,從源代碼中,為每個目標物理計算設備在線編譯可執行程序,保存源代碼以及目標物理計算設備的可執行程序到API庫中。
權利要求
1.一種異構多處理器上并行執行任務的方法,其特征在于主處理器和輔助處理器并行對應用程序進行數據處理,其中應用程序運行在主處理器,為完成應用程序的數據處理,應用將產生API請求,要求加載一個或多個可執行程序;然后應用程序通過API請求在加載的一個或多個可執行程序中為輔助處理器選擇一個可執行程序。
2、 根據權利要求1所述的方法,其特征在于,主處理器被加載的一個或多個可執行程序包括描述數據和源代碼,描述數據中描述可執行程序支持的處理器的 版本、類型,源代碼是從與被加載的可執行程序相關的庫中加載,將被用來在線 編譯產生輔助處理器的可執行程序。
3、 根據權利要求2所述的方法,其特征在于主處理器中描述數據和源代碼的 加載過程是比較描述數據和輔助處理器的信息;基于比較得到的信息,為輔助 處理器從源代碼中在線編譯可執行程序。
4、 根據權利要求3所述的方法,其特征在于基于比較得到的信息包括1) 可執行程序對于輔助處理器需要優化的信息;2)可執行程序不支持輔助處理器的 信息。
5、 根據權利要求3所述的方法,其特征在于在線編譯可執行程序的編譯過程 包括生成新的可執行程序,產生更新的描述數據,描述數據中包括輔助處理器 的版本信息;保存新生成的可執行程以及更新的描述數據,新生成的可執行程序 至少替代了一個原有的可執行程序。
6、 根據權利要求1所述的方法,其特征在于,源代碼和已編譯的可執行程序 保存在API庫中,為響應運行在主處理器的應用的API請求,輔助處理器為執行 數據處理功能,將在API庫中找到這些源代碼和已編譯的可執行程序,同時,在 線編譯的可執程序和可執行程序的描述數據,也保存在這個API庫中。
7、 根據權利要求1所述的方法,其特征在于,主處理器是一個或多個普通CPU 的組合,輔助處理器是一個或多個普通CPU或GPU的組合。
8、 根據權利要求1所述的方法,其特征在于主處理器通過API請求,執行有 多個線程的應用程序,在輔助處理器上調度多個線程的并行執行,輔助處理器包 括CPUs或者GPUs,如果GPU忙于圖像處理線程,調度到GPU的線程可以被調度到 era上去執行。
全文摘要
本發明提供一種異構多處理器上并行執行任務的方法,具體地說是在一個或者多個物理計算設備CPUs或者GPUs上,并發執行多個可執行程序的方法。這些可執行程序之間的依賴關系,決定了同時運行在多個物理計算設備中的眾多線程選擇哪個可執行程序調度執行。如果一個線程被物理計算設備中的某個GPU初始化,但是這個GPU正忙于處理其他圖形處理的線程,那么這個線程可以被物理計算設備中的另一個CPU初始化。為了在多個物理計算設備上并行執行多個可執行程序,源代碼和作為API函數的現有可執行程序都存儲在一個API庫中。這些被執行的可執行程序可以是現有的可執行程序,也可以是從源代碼中在線編譯的可執行程序。
文檔編號G06F9/38GK101599009SQ200910014939
公開日2009年12月9日 申請日期2009年4月30日 優先權日2009年4月30日
發明者王守昊, 健 魏 申請人:浪潮電子信息產業股份有限公司