摘要:目前,鯤鵬親和開發框架提供:場景化SDK、啟發式程式設計、鯤鵬親和分析、鯤鵬偵錯程式、遠端實驗室等功能,降低開發應用難度,方便開發者使用鯤鵬架構提供的軟硬協同能力,提升開發效率。
本文分享自華為雲社群《掌握這5大功能,解鎖鯤鵬開發新發現》,作者:華為雲社群精選 。
本文主要介紹鯤鵬開發框架外掛工具能力和使用方法,還會將鯤鵬編譯偵錯的新特性和功能也和大家同步一下,內容主要包括三個方面:鯤鵬開發框架整體介紹和鯤鵬編譯偵錯工具。
我們先看第一部分內容,目前鯤鵬應用開發面臨的問題:
隨著鯤鵬發展,越來越多的應用有訴求在鯤鵬進行原生開發,使用好鯤鵬算力。通過廣泛的調研,我們瞭解到開發者開發鯤鵬架構應用主要痛點是:不瞭解鯤鵬架構的特點,不知道在應用中,怎麼樣可以使用出最大算力。
1. 開發階段:缺乏鯤鵬親和開發的實時引導、缺乏對鯤鵬特點檢查工具、依賴庫生態難以快速獲取;
2. 編譯偵錯階段:難以充分利用微架構效能優勢、無多樣算力編譯和偵錯能力;
3. 測試階段:存在相容性測試工作量大、應用的安全性、穩定性、效能及功耗等問題難以保障。
為了解決開發者的痛點,我們推出了鯤鵬親和開發框架,幫助開發者降低學習成本和入門門檻,提高開發效率。
目前,鯤鵬親和開發框架提供:場景化SDK、啟發式程式設計、鯤鵬親和分析、鯤鵬偵錯程式、遠端實驗室等功能,降低開發應用難度,方便開發者使用鯤鵬架構提供的軟硬協同能力,提升開發效率。
• 通過鯤鵬親和開發框架,使用者方便獲取線上實驗資源、程式設計指南、指導手冊資料;通過快速學習,賦能開發者鯤鵬應用開發能力,開發者通過工程嚮導建立程式碼工程,並利用鯤鵬場景化SDK,快速學習鯤鵬架構特性,開發鯤鵬親和程式碼。
• 開發過程中,通過啟發式程式設計,可以智慧提示近萬條優化函數和百萬級依賴檔案。
• 通過靜態檢查工具,遮蔽底層的硬體差異,大大提高軟體設計和開發效率。
• 提供多樣化偵錯工具,通過鯤鵬偵錯程式,使用者可以針對不同的使用場景和應用型別,對通用應用程式進行偵錯,方便定位程式碼問題。
• 提供遠端實驗室,免費向開發者提供遠端功能,可以隨時隨地體驗鯤鵬多樣算力。
接下來,會逐一詳細介紹這5個功能:
鯤鵬開發框架主要是提供給開發者:開發體驗好、架構自親和、應用高效能、多算力相容的框架,降低開發者學習和開發鯤鵬應用的難度。
場景化SDK包括:提供安全計算,高效能運算和通用計算三大類,以及二十餘種應用場景的Demo工程的建立和管理支援對應SDK的下載、部署和檢查,零成本學習鯤鵬開發框架,助力開發者快速進行工程構建。
隨著作業系統複雜性提升,攻擊視窗也在變大,如果沒有安全加固,漏洞會被利用,有些應用被設定為可信應用,具有較高特權,但也存在固有安全漏洞,被駭客能夠獲取到使用者資料。
而鯤鵬開發框架基於機密計算TrustZone套件,向開發者提供了安全計算SDK,從硬體架構上提供可信運營環境TEE,在應用被系統攻破後,駭客也無法獲取使用者環境,保護了應用和資料的安全性。
安全sdk提供了CA工程、TA工程、RSA工程、機密資料儲存、匿名投票和證書籤發6個參考實現,幫助開發者快速學習安全計算SDK的使用。
1、 CA工程主要是執行在業務環境下的應用程式工程,展示的是CA工程如何呼叫TA工程。
2、 TA工程主要是執行在可信執行環境下的TEE應用程式,主要是TEE環境工程介面呼叫。
3、 RSA工程包含了CA工程和TA工程,是基於RSA加解密、簽名和驗籤的工程。
4、 機密資料儲存工程使用TEE安全儲存介面,儲存機密資料,可以支援將敏感資料進行加密操作,不再需要從軟體層進行加密工作。
5、 匿名投票系統可以在保證資料隱私安全的情況下,完成匿名投票,可在業務執行環境中,可以檢視使用者是否投票,但是無法獲取其投票選項。
6、 證書籤發工程主要是使用者簽發X509場景,主要功能是建立證書,對使用者提交的證書請求檔案進行簽名,生成X509證書,使用TEE對證書的私鑰加密儲存,保證證書私鑰不會洩露。
高效能SDK包含兩個內容:
1、高效能通訊庫
高效能運算簡稱HPC,是一個計算機叢集系統,通過互聯技術將多個計算機系統連在一起,運用所有系統的綜合算力來處理單個系統無法完成的資料密集型任務,包括:模擬、建模、渲染等。HPC整合多個單元計算能力,將大規模運算任務拆分在各個伺服器上執行的能力,再將計算結果彙總,得到最終結果,從而實現強大計算功能。
鯤鵬親和開發框架面向HPC場景提供Hyper MPI和數學加速庫,助力開發者構建高效能應用。
2、數學庫
提供基於鯤鵬平臺優化的高效能數學庫,包括:基礎數學運算庫、線性代數運算庫、基礎線性代數庫、稀疏線性代數庫、快速傅立葉變換庫。
通用計算SDK包含三個內容:
1、硬體加速應用:基於鯤鵬硬體加速的壓縮、國密加解密工程。
2、加速庫應用:正則表達匹配、壓縮、加解密、資訊摘要、迴圈校驗。
3、同構加速應用:註解形式實現JAVA程式遠端解除安裝,從而實現程式碼的加速效果。
鯤鵬開發框架向開發者展示SDK模組架構圖,可以清晰瞭解到所需要元件以及在系統中位置,選擇自動部署或者下載後手動部署SDK到遠端伺服器,使用者可以根據元件架構圖的提示,檢視部署是否完成。
工程建立完成後,鯤鵬開發框架會展示下載的模板工程、程式碼和目錄數,使用者通過閱讀和偵錯樣例程式碼,瞭解鯤鵬架構特性,學習和使用場景化SDK來提供鯤鵬軟硬體能力,並基於這些程式碼可以進行二次開發,圖示是RSA工程執行結果。
藉助啟發式程式設計搜尋功能,提高應用開發效率和質量,使用者可以獲得相關函數線上說明檔案和使用介紹。智慧聯想補全主要針對是開發程式碼編寫過程,函數搜尋主要是針對想提前瞭解一個函數的使用。
鯤鵬親和開發框架提供鯤鵬親和分析的功能,幫助開發階段使用更高效鯤鵬加速庫,檢查應用軟體的鯤鵬親和性,更高效的使用鯤鵬算力。
之前介紹的是通用應用程式的編譯偵錯功能,今年增加本地/遠端偵錯、GPU程式偵錯、HPC並行偵錯的能力。
在實際開發場景中,開發者經常需要在伺服器上進行開發、編譯、偵錯和執行操作。由於絕大多數開發者更喜歡在本地windows環境上使用IDE編碼,需要開發者編寫好程式碼後,手動上傳到遠端服務,在伺服器上進行編譯調整等一系列操作,若編譯偵錯報錯,這還需要在本地修改程式碼再繼續上傳;若執行報錯,則需要開發者在遠端伺服器進行跟蹤定位,最後在本地修改程式碼再上傳編譯執行。
這個過程相對來說是比較低效,為解決因開發編譯偵錯環境分離,造成的開發效率低下問題,鯤鵬親和開發框架提供了鯤鵬編譯偵錯功能,該功能可以簡化程式開發流程,提高開發效率,可以在本地IDE中實現開發同步、程式碼遠端編譯和遠端偵錯功能。
在編譯之前,使用者可以使用一鍵部署編譯器功能,將選擇的編譯器一鍵部署到目標伺服器,目前可選部署的編譯器支援:畢昇編譯器,畢昇JDK還有GCC for openEuler的部署,在部署完成後,可建立一個編譯任務,通過一鍵同步程式碼功能,將我們的程式碼同步到遠端節點,程式碼同步完成後,點選按鈕執行遠端編譯操作。編譯過程中的結果,可以在終端顯示,整個過程無需我們頻繁在IDE和遠端伺服器之間進行切換,實現了我們IDE一站式部署開發,遠端編譯和偵錯。
鯤鵬親和開發框架提供的編譯偵錯外掛,在原有功能上增加了CUDA程式偵錯程式。可以在本地ID上偵錯,遠端伺服器上的CUDA應用程式。通過圖形化頁面的方式向用戶提供CUDA程式偵錯能力,功能更加貼近開發習慣,簡單易用,降低了使用者的使用門檻和學習成本,提升了程式碼偵錯效率。
CUDA偵錯程式支援兩種模式,一種是Launch,還有一種是attach,其中 launch模式支援選擇GPU裝置進行偵錯。CUDA支援多執行緒偵錯,在偵錯過程中可以進行執行緒切換,支援對應執行緒的堆疊變數等資訊的一個展示。
接下來介紹是一個重點功能。編譯偵錯針對大規模MPI應用叢集的偵錯能力,目前現狀是:HPC並行程式具有複雜邏輯、並行量大、計算節點多、程序數多、狀態切換迅速且複雜等特點,難以進行一個叢集偵錯。針對這個問題,鯤鵬偵錯程式提供HPC並行偵錯功能,支援launch模式啟動,最多支援256個本地或遠端的MPI叢集應用進行偵錯。
在偵錯過程中,開發者可實時檢視每個程序的全域性rank排序,所在計算節點IP和PID,方便開發者查詢指定程序。同時開發者可以通過按鍵切換顯示原始檔目錄數,檢視被呼叫程式的原始碼列表,切換不同原始碼閱讀,能夠直接對應匹配上原始碼位置。
開發者還可以點選分組列表中不同程序進行切換,檢視不同程序執行位置,在偵錯資訊區可以看到呼叫站,支援變數修改斷點、新增和刪除。鯤鵬偵錯程式支援按照全域性單程序或單通訊組方式進行同步偵錯。當程式執行到某一關鍵步驟時,開可以選擇單獨偵錯執行關鍵的一個或者一個組的程序,排除其餘程序對該偵錯干擾,在非關鍵步驟情況下,再切回全域性進行偵錯。
可以看到通訊組變化介面,鯤鵬偵錯程式支援通訊組生命週期的展示。當開發者點開詳情頁面後,鯤鵬偵錯程式會在時間軸上展示每一個通訊組程式時間段,方便使用者瞭解對應時間段執行通訊組的情況,幫助開發者去更好的定位問題,提高偵錯效率。