天天看點

異構硬體與驗證順序分析,環境自适應軟體的創新應用與實作方法

作者:不訴青史

引言

環境自适應軟體是指能夠根據外部環境的變化,和使用者需求的變化,來自動調整其行為和功能的軟體系統。

在如今快節奏的社會中,環境自适應軟體的需求越來越大,為了提供高效、可靠的環境自适應功能,異構硬體和驗證順序分析等創新技術,被廣泛應用于環境自适應軟體的開發和實作中。

異構硬體與驗證順序分析,環境自适應軟體的創新應用與實作方法

異構硬體在環境自适應軟體中的應用

随着摩爾定律的放緩,中央處理器的半導體密度,不再能夠每1.5年翻倍一次,為了彌補這一點,越來越多的系統采用異構硬體,如圖形處理器、現場可程式設計門陣列和多核CPU,微軟的搜尋引擎Bing使用現場可程式設計門陣列(FPGA),亞馬遜網絡服務則利用雲技術提供圖形處理器(GPU)和FPGA執行個體。

要在這些系統中,正确利用除了小核心CPU以外的裝置,需要進行一些配置和程式設計工作,考慮到裝置特性,如開放多處理、開放計算語言和計算統一裝置架構,對于大多數程式員來說,技術門檻很高,物聯網技術在這些系統中的使用越來越普遍,對所需技能的要求也在增加。

異構硬體與驗證順序分析,環境自适應軟體的創新應用與實作方法

對于使用異構硬體的應用程式的期望越來越高,目前使用它們的技術障礙很高,為了克服這些障礙,應用程式員隻需編寫要處理的邏輯,然後軟體應該适應具備異構硬體的環境,以便輕松使用這些硬體。

Java,于1995年出現,引起了環境适應方面的範式轉變,使得一次編寫的軟體可以在其他CPU機器上運作,在移植目标上沒有考慮應用程式性能的問題,先前提出了一種環境自适應軟體,通過自動執行代碼轉換和配置,有效地運作一次編寫的應用程式,以便在部署環境中适當地使用GPU、FPGA、多核CPU等各種裝置。

異構硬體與驗證順序分析,環境自适應軟體的創新應用與實作方法

作為環境自适應軟體的基本技術,還提出了一種将循環語句和函數塊,自動遷移到GPU或FPGA的方法,研究目的是在存在各種GPU、FPGA,以及多核CPU裝置的混合遷移目标環境中,自動遷移具有高性能的應用程式。

異構硬體與驗證順序分析,環境自适應軟體的創新應用與實作方法

提出了一種自動遷移到單個GPU、FPGA,或多核CPU裝置的方法,接下來,提出了一種在具有各種裝置的混合遷移目标環境中,适當遷移的方法,對現有應用程式中,提出的方法的有效性進行評估。

對于混合環境的遷移,還使用了先前提出的将循環語句遷移到GPU、FPGA,和函數塊遷移到FPGA的方法作為基本技術,目标是使用先前的單獨裝置遷移技術,在混合環境中适當地進行遷移。

異構硬體與驗證順序分析,環境自适應軟體的創新應用與實作方法

實作環境自适應軟體的方法

為了實作環境自适應軟體,提出了一種将程式循環語句自動遷移到GPU和FPGA,将程式函數塊自動遷移到GPU和FPGA的方法,基于這些基本技術,介紹了針對各種裝置的基本思想,并提出了一種自動遷移到混合遷移目标環境的方法。

涉及的遷移目标環境包括GPU、FPGA和多核CPU,GPU和FPGA作為異構硬體,已經被長時間使用,有許多使用CUDA和OpenCL進行手動遷移的加速執行個體,可以以幾百美元購買具有16個,或更多核心的多核CPU。

異構硬體與驗證順序分析,環境自适應軟體的創新應用與實作方法

并且還有32到64個核心的更多核CPU,可以使用OpenMP等技術規範進行并行化,在許多情況下,通過手動調優進行并行化可以提高速度,為了實作高速自動解除安裝,通過在驗證環境中測量實體機器的性能,逐漸搜尋高速解除安裝模式,并使用進化計算進行優化。

這與以前提出的GPU解除安裝類似,其原因在于性能的變化在很大程度上,取決于代碼結構以及實際處理内容,如處理硬體規格、資料大小和循環次數,性能很難靜态預測,需要進行動态測量。

異構硬體與驗證順序分析,環境自适應軟體的創新應用與實作方法

市場上有一些自動并行編譯器,可以在編譯階段查找循環語句并實作并行化,由于可并行化循環語句的并行化通常會導緻速度較慢,是以常常需要進行性能測量,關于動态測量,所提出的方法能夠遞歸地執行它。

它不會歸納出優化的方式,在模闆計算的情況下,有優化的專門技巧,但是方法無法提取這些技巧,所提出的方法的一個主要特點是,它實際上執行并測量使用使用者資料的所有遷移目标候選者的性能,并選擇高速模式。

異構硬體與驗證順序分析,環境自适應軟體的創新應用與實作方法

對于要解除安裝的對象,關注程式的循環語句和函數塊,這與迄今為止提出GPU和FPGA解除安裝的情況類似,循環語句是解除安裝的首要目标,因為大多數耗時的程式處理都在循環中進行,另一方面,對于函數塊。

當加速特定處理時,通常會使用适合處理内容和處理硬體的算法,是以與解除安裝單獨的循環語句相比,處理速度可以大大加快,通過将傅裡葉變換等經常使用的函數塊,替換為基于适當算法的處理,可以提高性能,該算法适用于裝置特性。

異構硬體與驗證順序分析,環境自适應軟體的創新應用與實作方法

關于代碼模式,有一些研究對循環的類型等施加限制,但是這項研究對代碼模式沒有特定的限制,在這項研究中,針對函數塊的解除安裝和循環語句的解除安裝,嘗試了所有代碼模式,包括多核CPU、GPU和FPGA。

使用兩種方法,描述了針對三個解除安裝目标的自動解除安裝,關于GPU和FPGA的解除安裝,提出了一種适用于循環語句的自動多核CPU解除安裝方法,與GPU類似,多核CPU利用許多計算核心并将處理并行化以加快速度。

異構硬體與驗證順序分析,環境自适應軟體的創新應用與實作方法

與GPU不同,多核CPU具有共享記憶體,是以無需考慮CPU和GPU記憶體之間資料傳輸的開銷,這通常是解除安裝到GPU時的一個問題,針對多核CPU上的程式處理并行化,通常使用開放多處理器(OpenMP)規範。

OpenMP是一種規範,通過諸如#pragma omp parallel for等指令,來指定程式的并行處理和其他處理,OpenMP程式員負責在OpenMP中進行處理的并行化,當試圖并行化無法并行化的處理時,編譯器不會輸出錯誤,并且計算結果會變得錯誤。

異構硬體與驗證順序分析,環境自适應軟體的創新應用與實作方法

采用漸進加速循環語句,自動解除安裝到多核CPU的遺傳算法方法,研究人員介紹了使用GA在GPU上進行的代碼優化,與GPU的差別在于,使用OpenMP的#pragma omp parallel for,來訓示多核CPU執行循環語句。

而不是使用OpenACC的#pragma acc kernels,具體而言,建立了多個模式,使用OpenMP的#pragma指令,指定循環是否以并行方式處理,并在驗證環境中重複實際性能測量,在此過程中,用于自動GPU解除安裝的PGI編譯器,在無法并行化時會輸出錯誤。

異構硬體與驗證順序分析,環境自适應軟體的創新應用與實作方法

像gcc這樣的OpenMP編譯器不會輸出此類錯誤,為了自動化錯誤輸出,通過僅檢查循環語句在多核CPU上,是否并行化來簡化OpenMP指令執行的處理,通過檢查每次測量的最終計算結果是否正确,隻有産生正确計算結果的模式才會保留在進化計算中。

當輸入代碼時,使用諸如Clang的解析庫分析文法,并确定循環語句,在這裡,當多核CPU上執行并行處理時,基因模式設定為1,當不執行并行處理時,設定為0,如果值為1,該方法将在循環語句中添加#pragma omp parallel for,建立指定并行處理的OpenMP代碼。

異構硬體與驗證順序分析,環境自适應軟體的創新應用與實作方法

該方法使用諸如gcc的OpenMP編譯器,編譯準備好的多個OpenMP檔案,并測量配備多核CPU的驗證環境機器的性能,通過性能測量,高速處理的模式被認為具有較高的适應度,低速處理的模式被認為具有較低的适應度。

然後通過遺傳算法的精英選擇、交叉和突變等處理建立下一代的模式,在性能測量中,将最終計算結果,與使用CPU的單個核心處理原始代碼的情況進行比較,如果差異過大,則将模式的适應度設定為足夠低,以便在下一代中不被選擇。

異構硬體與驗證順序分析,環境自适應軟體的創新應用與實作方法

之前提出了一種針對循環語句的自動GPU解除安裝方法,在論文中,使用了該方法,通過使用遺傳算法提取适當的循環語句,并減少CPU-GPU記憶體資料傳輸,實作了自動解除安裝,還需要減少CPU和GPU之間的通信延遲以提高性能。

在和其他論文中,考慮在嵌套循環中盡可能高地傳輸變量,并考慮批量傳輸變量,之前提出了一種針對循環語句的自動FPGA解除安裝方法,在研究中,使用了該方法,通過使用算術強度、循環次數和資源量來縮小候選循環語句範圍。

異構硬體與驗證順序分析,環境自适應軟體的創新應用與實作方法

縮小範圍後,在驗證環境中測量多種模式的性能,實作自動解除安裝,之前提出了一種函數塊的自動解除安裝方法,在研究中使用了該方法,該方法在GPU和FPGA上進行了驗證,但是對于可以通過名稱比對,和相似性檢測解除安裝的函數塊,處理方式是相同的。

是以也可以在多核CPU上采用,使用Deckard的抽象文法樹相似性比對,來進行函數塊解除安裝,并不是所有的函數塊都能夠被解除安裝,根據基本思想和個體裝置解除安裝方法,研究了在混合解除安裝目标環境中的自動解除安裝。

異構硬體與驗證順序分析,環境自适應軟體的創新應用與實作方法

從單裝置遷移到混合環境的主要差別在于,當同一節點上存在多個高速解除安裝模式時,會嘗試組合,即使程式代碼相同,性能也取決于處理硬體的規格和處理内容,需要進行實際的性能測量,由于有三種類型的解除安裝裝置,和兩種解除安裝重點的方法,至少需要進行六個種解除安裝驗證。

與循環語句和函數塊相比,如果存在可解除安裝的函數,函數塊解除安裝可能更快,與一個模式的驗證時間相比,多核CPU = GPU < FPGA,FPGA需要幾個小時進行電路實作,測量其性能需要時間。

異構硬體與驗證順序分析,環境自适應軟體的創新應用與實作方法

基于上述原因,提議按照以下順序進行六種解除安裝驗證,多核CPU函數塊解除安裝,GPU函數塊解除安裝,FPGA函數塊解除安裝,多核CPU循環語句解除安裝,GPU循環語句解除安裝和FPGA循環語句解除安裝。

按照這個順序進行解除安裝驗證,以尋找高性能的模式,前三種和後三種的目标代碼可能不同,具體來說,如果在前三種中可以進行函數塊解除安裝,則在沒有可解除安裝的函數塊部分的代碼中,驗證後三種循環語句的解除安裝。

異構硬體與驗證順序分析,環境自适應軟體的創新應用與實作方法

在解除安裝驗證中,使用者可以指定目标性能,如果在使用者指定範圍内的前六個驗證中,找到足夠快的解除安裝模式,則不會執行後續的驗證,之是以這樣做是因為函數塊解除安裝可以更快,是以将提前進行驗證。

在執行自動解除安裝時,期望盡快進行高速模式搜尋,需要耗費較長驗證時間的FPGA被放在最後,如果在之前的階段找到了滿足使用者需求的模式,則不進行FPGA驗證,多核CPU和GPU在驗證時間上的差異很小,但多核CPU與具有單獨記憶體空間的GPU相比更類似于小核心CPU。

異構硬體與驗證順序分析,環境自适應軟體的創新應用與實作方法

驗證順序遵循上述描述,如果在多核CPU之前,找到了足夠滿足使用者需求的模式,則不會進行GPU驗證,接下來,确定最終模式,如果在六種解除安裝驗證中,存在比單個CPU核心更快的模式,提議的方法将準備一個具有該模式的可執行檔案。

在準備可執行檔案時,除了選擇性能最高的模式外,還可以根據所使用加速裝置的價格,選擇最具成本效益的模式,在六種驗證中,當出現多種速度提升模式時,來考察最終的模式,在解除安裝到另一個節點時,需要使用消息傳遞接口等技術規範。

異構硬體與驗證順序分析,環境自适應軟體的創新應用與實作方法

并且由于通信開銷,加速變得困難,在通常的伺服器機器配置中,有具有多核CPU和GPU的機器,具有多核CPU和FPGA的機器,但具有多核CPU、GPU和FPGA的機器很少,如果多個裝置可以加速,則在文中,解除安裝到同一節點是必要條件。

同一節點上的多核CPU和GPU可以成為候選項,但另一個節點上的GPU和FPGA則不行,研究了函數塊解除安裝的組合方法,對于函數塊解除安裝,有以下規則适用,如果同一個函數塊可以解除安裝到多個裝置上提議的方法,會選擇性能改進最大的解除安裝目标。

異構硬體與驗證順序分析,環境自适應軟體的創新應用與實作方法

如果不同的函數塊可以解除安裝到不同的裝置上,而不能解除安裝到同一節點上,那麼會選擇性能改進最大的函數塊進行解除安裝,如果不同的函數塊可以解除安裝到不同的裝置上,并且可以解除安裝到同一節點上,那麼這些函數塊都會進行解除安裝。

請注意,頻繁使用的處理或函數塊,可能會以較高的優先級進行解除安裝,在這種情況下,應進行帶有重點放在高優先級處理上的樣本測試,執行六種解除安裝驗證,以衡量性能,然後研究了循環語句解除安裝的組合。

異構硬體與驗證順序分析,環境自适應軟體的創新應用與實作方法

當可以解除安裝函數塊時,循環語句會解除安裝到代碼中,排除了可以解除安裝的函數塊部分的部分,如果循環語句隻能解除安裝到,與函數塊解除安裝目标不同的節點,并且性能改進很小,則不會進行循環語句的解除安裝。

當通過函數塊解除安裝快速傅裡葉變換處理,并且FPGA可以在100秒内處理1秒時,餘下的循環語句可以使用GPU在100秒内處理30秒,不會将循環語句從另一個節點解除安裝到GPU上,如果可以解除安裝到同一節點上,提議的方法會檢查将函數塊,和循環語句都解除安裝到該節點上的模式的加速情況。

異構硬體與驗證順序分析,環境自适應軟體的創新應用與實作方法

在循環語句解除安裝中,有以下規則适用,如果相同的循環語句組可以解除安裝到多個裝置上,提出的方法會選擇性能改進最大的解除安裝目标,如果不同的循環語句組,可以解除安裝到不同的裝置上而不能解除安裝到同一節點上,那麼會選擇性能改進最大的循環語句組進行解除安裝。

如果不同的循環語句組可以解除安裝到不同的裝置上,并且可以解除安裝到同一節點上,那麼會優先解除安裝性能改進最大的循環語句組,而将其餘的循環語句組解除安裝到性能改進較低的解除安裝目标上,當解除安裝到同一節點的多個裝置上,同時解除安裝到多個裝置上不一定能加速程序,需要同時解除安裝到多個裝置上,并進行性能驗證,以确定是否比單個裝置的解除安裝更快。

異構硬體與驗證順序分析,環境自适應軟體的創新應用與實作方法

結語

異構硬體和驗證順序分析等創新技術,為環境自适應軟體的開發和實作,提供了重要的支援和保障,它們可以提高系統的自适應能力、性能和可靠性,滿足不同使用者和環境的需求。

未來,在不斷推進技術發展的背景下,可以進一步探索和拓展環境自适應軟體的創新應用,并提升其在實際生活和工作中的價值和意義。

參考文獻

1.Alias, C., Darte, A., & Plesco, A. (2013, March). Optimizing remote accesses for offloaded kernels: Application to high-level synthesis for FPGA. 2013 Design, Automation and Test in Europe (DATE), 575–23. https://doi.org/10.7873/date.2013.127 [Google Scholar]

2.Bertolli, C., Antao, S. F., Bercea, G. T., Jacob, A. C., Eichenberger, A. E., Chen, T., Sura, Z., Sung, H., Rokos, G., Appelhans, D., & O’Brien, K., “Integrating GPU support for OpenMP offloading directives into Clang,” ACM Second Workshop on the LLVM Compiler Infrastructure in HPC (LLVM’15), November. 2015. [Crossref], [Google Scholar]

3.Chen, J., Joo, B., Watson, W., III, & Edwards, R., “Automatic offloading C++ expression templates to CUDA enabled GPUs,” 2012 IEEE 26th International Parallel and Distributed Processing Symposium Workshops & PhD Forum, pp.2359–2368, May 2012. [Crossref], [Google Scholar]

4.Deckard web site. 2021. http://github.com/skyhover/Deckard [Google Scholar]

5.DPC++ web site 2021. https://www.intel.com/content/www/us/en/developer/tools/oneapi/dpc-library.html#gs.flx6xq [Google Scholar]

繼續閱讀