多樣性計(jì)算時(shí)代,跨平臺(tái)的應(yīng)用遷移和開(kāi)發(fā)不簡(jiǎn)單數(shù)字經(jīng)濟(jì)時(shí)代,自動(dòng)駕駛、智能制造、電子政務(wù)、智慧金融等新型行業(yè)應(yīng)用場(chǎng)景和多元化的數(shù)據(jù)結(jié)構(gòu)驅(qū)動(dòng)計(jì)算架構(gòu)向多樣性發(fā)展。鯤鵬架構(gòu)因其多核多并發(fā)、低功耗等特點(diǎn)能夠有效解決行業(yè)數(shù)字化轉(zhuǎn)型中海量數(shù)據(jù)的高算力需求,在多樣性計(jì)算場(chǎng)景下具備顯著優(yōu)勢(shì)。目前,鯤鵬已成為政府、金融、電信、能源等各行業(yè)IT基礎(chǔ)設(shè)施的主流平臺(tái),為行業(yè)應(yīng)用提供高效強(qiáng)勁的算力支撐。然而,由于指令集的差異,從傳統(tǒng)X86到鯤鵬平臺(tái)的應(yīng)用遷移和開(kāi)發(fā)的過(guò)程并不簡(jiǎn)單:X86 上的程序必須經(jīng)過(guò)適配遷移才能運(yùn)行,過(guò)程中涉及大量的代碼修改、重新編譯和試錯(cuò),人工分析投入大、準(zhǔn)確率低;另外,X86平臺(tái)的開(kāi)發(fā)經(jīng)驗(yàn)和兼容生態(tài)相比鯤鵬平臺(tái)也有很多不同之處。因此,如何快速實(shí)現(xiàn)跨平臺(tái)的應(yīng)用遷移,以及在開(kāi)發(fā)過(guò)程中便捷地引導(dǎo)用戶(hù)熟悉和充分利用鯤鵬架構(gòu)優(yōu)勢(shì)成為了開(kāi)發(fā)人員亟需解決的問(wèn)題。
鯤鵬開(kāi)發(fā)套件DevKit 2.0,加速應(yīng)用遷移、使能極簡(jiǎn)開(kāi)發(fā)基于上述挑戰(zhàn),2019年鯤鵬面向合作伙伴和廣大開(kāi)發(fā)者提供了鯤鵬開(kāi)發(fā)套件DevKit 1.0,聚焦有源碼與無(wú)源碼兩大場(chǎng)景下的無(wú)憂遷移。隨著應(yīng)用遷移的不斷深入,基于鯤鵬進(jìn)行軟件開(kāi)發(fā)的需求也越來(lái)越多,鯤鵬DevKit全新升級(jí)為2.0版本,從加速“應(yīng)用遷移”走向使能“原生開(kāi)發(fā)”,該版本已經(jīng)于2021年12月31日在鯤鵬社區(qū)正式上線。2022年2月23日的 “鯤鵬DevKit新版本推介會(huì)”上,來(lái)自鯤鵬DevKit產(chǎn)品研發(fā)專(zhuān)家們向廣大開(kāi)發(fā)者詳細(xì)解讀了新版本的最新特性?!蚌H鵬DevKit 2.0面向開(kāi)發(fā)者全面升級(jí),提供面向研發(fā)作業(yè)流的全流程開(kāi)發(fā)工具鏈,包括鯤鵬開(kāi)發(fā)框架、原生編程語(yǔ)言和編譯器、云上自動(dòng)測(cè)試平臺(tái)、全場(chǎng)景性能調(diào)優(yōu)端到端工具等,為開(kāi)發(fā)者提供更優(yōu)的體驗(yàn)?!宾H鵬DevKit項(xiàng)目經(jīng)理馬德強(qiáng)對(duì)新版本的整體框架和版本規(guī)劃做了詳細(xì)解讀:
在開(kāi)發(fā)階段,全新上線的鯤鵬開(kāi)發(fā)框架能夠幫助開(kāi)發(fā)者便捷學(xué)習(xí)鯤鵬架構(gòu)知識(shí),充分應(yīng)用鯤鵬架構(gòu)優(yōu)勢(shì),高效開(kāi)發(fā)高性能應(yīng)用;
遷移階段,代碼遷移工具在原有的軟件遷移評(píng)估、源代碼遷移、軟件包重構(gòu)、專(zhuān)項(xiàng)軟件遷移基礎(chǔ)之上進(jìn)一步能力增強(qiáng),豐富了專(zhuān)項(xiàng)軟件遷移和HPC應(yīng)用遷移的能力,同時(shí)新增鯤鵬親和檢查等能力,提升軟件在鯤鵬平臺(tái)的運(yùn)行效率。
在編譯調(diào)試階段,提供基于鯤鵬平臺(tái)優(yōu)化后的GCC foropenEuler、畢昇編譯器、畢昇JDK等全套編譯工具,屏蔽硬件架構(gòu)差異,充分發(fā)揮鯤鵬架構(gòu)優(yōu)勢(shì)。
在測(cè)試階段,7*24小時(shí)的云測(cè)服務(wù),幫助用戶(hù)快速檢測(cè)程序在鯤鵬平臺(tái)上的兼容性、可靠性、安全、功能、性能等能力。
在調(diào)優(yōu)&診斷階段,性能調(diào)優(yōu)工具在原有的系統(tǒng)性能分析、Java性能分析基礎(chǔ)之上,新增調(diào)優(yōu)助手功能,指導(dǎo)用戶(hù)快速掌握調(diào)優(yōu)方法、降低調(diào)優(yōu)難度。此外,系統(tǒng)診斷在內(nèi)存和網(wǎng)絡(luò)診斷基礎(chǔ)上完善了存儲(chǔ)診斷能力,能夠快速定位相關(guān)部件異常點(diǎn),準(zhǔn)確度大于90%。
馬德強(qiáng)表示“2022年,我們將持續(xù)迭代開(kāi)發(fā)鯤鵬DevKit,為開(kāi)發(fā)者提供更多更好用的原生開(kāi)發(fā)能力,包括場(chǎng)景化SDK,以及簡(jiǎn)單易用的Demo示例等,打造最佳的鯤鵬親和原生開(kāi)發(fā)體驗(yàn),讓開(kāi)發(fā)者零成本學(xué)習(xí)開(kāi)發(fā)?!?/p>
基于鯤鵬開(kāi)發(fā)框架,高效開(kāi)發(fā)鯤鵬架構(gòu)親和的高性能應(yīng)用“目前,鯤鵬開(kāi)發(fā)套件DevKit的軟件遷移效率已實(shí)現(xiàn)2人天/應(yīng)用,并初步提供了對(duì)鯤鵬原生開(kāi)發(fā)的支持?!宾H鵬計(jì)算架構(gòu)與設(shè)計(jì)技術(shù)專(zhuān)家張汝濤解讀了DevKit代碼遷移工具的增強(qiáng)功能、并重點(diǎn)介紹了最新上線的鯤鵬開(kāi)發(fā)框架的主要能力。新版本中進(jìn)一步增強(qiáng)了遷移能力:新增10余款主流HPC專(zhuān)項(xiàng)軟件的快速遷移能力;新增了鯤鵬親和檢查,包括程序運(yùn)行模式、結(jié)構(gòu)體字節(jié)對(duì)齊、Cacheline對(duì)齊、內(nèi)存一致性(靜態(tài)檢查&編譯器自動(dòng)修復(fù))等檢查功能,幫助用戶(hù)軟件更好地適配鯤鵬架構(gòu),產(chǎn)生更優(yōu)的鯤鵬親和代碼。鯤鵬開(kāi)發(fā)框架是面向鯤鵬原生開(kāi)發(fā)打造的全新工具,“我們通過(guò)廣泛的調(diào)研,了解到開(kāi)發(fā)者基于鯤鵬開(kāi)發(fā)應(yīng)用的主要痛點(diǎn)是不知道鯤鵬架構(gòu)的特點(diǎn)是什么,也不知道如何最大程度釋放鯤鵬算力。因此我們?nèi)峦瞥隽琐H鵬開(kāi)發(fā)框架,幫助開(kāi)發(fā)者降低學(xué)習(xí)成本、降低學(xué)習(xí)難度,提高開(kāi)發(fā)效率?!睆埲隄榻B道。目前,鯤鵬開(kāi)發(fā)框架主要提供新手成長(zhǎng)路徑、鯤鵬工程向?qū)?、啟發(fā)式編程、和鯤鵬親和檢查等能力。
通過(guò)新手成長(zhǎng)路徑開(kāi)發(fā)者能夠快速獲取豐富的鯤鵬架構(gòu)賦能材料,包括原生開(kāi)發(fā)指導(dǎo)文檔、代碼樣例和實(shí)踐案例、培訓(xùn)課程、實(shí)驗(yàn)沙箱等,系統(tǒng)學(xué)習(xí)鯤鵬處理器架構(gòu)知識(shí),建立系統(tǒng)完整的知識(shí)體系,占領(lǐng)技術(shù)的制高點(diǎn)。
在項(xiàng)目的初始階段,鯤鵬工程管理向?qū)В蜷_(kāi)發(fā)者推薦親和鯤鵬架構(gòu)的選項(xiàng)、參數(shù)和優(yōu)選的鯤鵬加速庫(kù),開(kāi)發(fā)者可以快速創(chuàng)建鯤鵬應(yīng)用項(xiàng)目。
在開(kāi)發(fā)階段,通過(guò)啟發(fā)式編程提高開(kāi)發(fā)效率和質(zhì)量。啟發(fā)式編程提供了編碼智能補(bǔ)全功能,用戶(hù)在編寫(xiě) makefile/cmakelists.txt構(gòu)建文件時(shí),智能聯(lián)想鯤鵬親和的宏定義和編譯選項(xiàng);編輯C/C++源碼時(shí),智能聯(lián)想鯤鵬親和的GCC built-in函數(shù)、intrinsic指令函數(shù)和5大類(lèi)鯤鵬加速庫(kù)函數(shù)。此外,開(kāi)發(fā)者在編輯完構(gòu)建文件時(shí)還可以快速檢查依賴(lài)文件兼容性,并提供獲取方式。目前提供了20+ Linux版本的鯤鵬兼容性檢查及獲取。
鯤鵬親和檢查功能幫助開(kāi)發(fā)者進(jìn)行鯤鵬加速優(yōu)化檢查,推薦使用更高效的鯤鵬加速庫(kù),提升軟件運(yùn)行性能;同時(shí)提供4種鯤鵬架構(gòu)親和檢查功能(64位運(yùn)行模式檢查、內(nèi)存一致性檢查、結(jié)構(gòu)體字節(jié)對(duì)齊和變量cache line對(duì)齊檢查),給出優(yōu)化修改建議。
由此可見(jiàn),鯤鵬開(kāi)發(fā)框架從學(xué)習(xí)資料的獲取、到軟件工程構(gòu)建、軟件源碼開(kāi)發(fā),再到軟件編譯構(gòu)建,提供了全方位的輔助能力,幫助開(kāi)發(fā)者快速上手,高效編程,硬件架構(gòu)差異無(wú)感,打造極簡(jiǎn)開(kāi)發(fā)過(guò)程。
多重優(yōu)化技術(shù)全面提升編譯性能,屏蔽硬件差異,發(fā)揮鯤鵬架構(gòu)優(yōu)勢(shì)鯤鵬DevKit提供一鍵式部署的全套編譯軟件,滿(mǎn)足不同場(chǎng)景下的編譯需求,并結(jié)合鯤鵬架構(gòu)的優(yōu)勢(shì)提升編譯性能,讓軟件運(yùn)行效率更佳。華為畢昇編譯器架構(gòu)師魏偉針對(duì)畢昇編譯器和畢昇JDK的主要特性及關(guān)鍵優(yōu)化技術(shù)做了詳細(xì)解讀:畢昇編譯器是華為編譯器實(shí)驗(yàn)室針對(duì)鯤鵬等通用處理器架構(gòu)場(chǎng)景,打造的高性能、高可信及易擴(kuò)展的編譯器工具鏈。支持C/C++/Fortran等編程語(yǔ)言,增強(qiáng)和引入了多種編譯優(yōu)化技術(shù):
高性能編譯算法:編譯深度優(yōu)化,增強(qiáng)多核并行化,自動(dòng)矢量化等,大幅提升指令和數(shù)據(jù)呑吐量。
加速指令集:結(jié)合NEON/SVE等內(nèi)嵌指令技術(shù),深度優(yōu)化指令編譯和運(yùn)行時(shí)庫(kù),發(fā)揮鯤鵬架構(gòu)最佳表現(xiàn)。
AI迭代調(diào)優(yōu):內(nèi)置AI自學(xué)習(xí)模型,自動(dòng)優(yōu)化編譯配置,迭代提升程序性能,完成最優(yōu)編譯。
此外,畢昇編譯器在2021年版本中還重點(diǎn)引入了包括:SLP矢量化增強(qiáng)、數(shù)組數(shù)據(jù)流分析優(yōu)化實(shí)現(xiàn)、數(shù)據(jù)軟件預(yù)取、浮點(diǎn)精度調(diào)優(yōu)等關(guān)鍵優(yōu)化技術(shù),通過(guò)上述優(yōu)化使其編譯性能相比開(kāi)源編譯軟件有25%+的提升。畢昇JDK是華為基于openJDK定制開(kāi)發(fā)的開(kāi)源版本,并針對(duì)鯤鵬架構(gòu)上進(jìn)行了優(yōu)化,包括快速序列化、AppCDS、G1GC 堆內(nèi)存伸縮、KAEProvider 等,是一款高性能、可用于生產(chǎn)環(huán)境的OpenJDK發(fā)行版。而鯤鵬原生的開(kāi)發(fā)語(yǔ)言畢昇C++是一門(mén)面向多樣算力的編程語(yǔ)言,它以C++為基礎(chǔ),基于SYCL異構(gòu)編程行業(yè)標(biāo)準(zhǔn),增加矩陣編程、張量編程等特色的編程抽象,支持鯤鵬、昇騰、GPU等業(yè)界常用算力,并簡(jiǎn)化多算力編程,為開(kāi)發(fā)者提供高效、簡(jiǎn)潔的編程體驗(yàn)。據(jù)悉,畢昇C++第一個(gè)版本將于2022年三季度正式上線。魏偉表示,畢昇編譯器將結(jié)合鯤鵬架構(gòu)特點(diǎn),針對(duì)不同場(chǎng)景,不同應(yīng)用特點(diǎn),使用不同的編譯優(yōu)化手段,通過(guò)深度優(yōu)化指令編譯,引入或增強(qiáng)優(yōu)化算法等,發(fā)揮鯤鵬極致算力。
快速引導(dǎo)式性能調(diào)優(yōu)和診斷,消除性能瓶頸、提升軟件性能軟件運(yùn)行時(shí),性能瓶頸可能存在于任何層次,設(shè)備、內(nèi)核、系統(tǒng)調(diào)用、系統(tǒng)庫(kù)、應(yīng)用程序等某一配置和指標(biāo)出現(xiàn)問(wèn)題,都可能導(dǎo)致系統(tǒng)運(yùn)行緩慢。當(dāng)前業(yè)界的性能分析工具眾多且分散,不僅帶來(lái)大量的學(xué)習(xí)成本、效率低下,更重要的是數(shù)據(jù)不能互通,無(wú)法全局分析。鯤鵬DevKit性能分析工具能夠幫助開(kāi)發(fā)者綜合、全面的了解系統(tǒng)軟硬件的相關(guān)信息,分析其配置和運(yùn)行情況,調(diào)節(jié)各模塊之間的系統(tǒng)資源占用關(guān)系,實(shí)現(xiàn)整個(gè)系統(tǒng)的性能最大化。華為鯤鵬性能分析技術(shù)專(zhuān)家金垚針對(duì)本次版本新增的調(diào)優(yōu)助手、HPC場(chǎng)景性能分析、系統(tǒng)診斷等主要功能進(jìn)行了詳細(xì)介紹:
首先,缺乏調(diào)優(yōu)經(jīng)驗(yàn)的用戶(hù)能夠通過(guò)調(diào)優(yōu)助手快速掌握調(diào)優(yōu)方法:通過(guò)系統(tǒng)化組織和分析性能指標(biāo)、熱點(diǎn)函數(shù)、系統(tǒng)配置等信息,形成系統(tǒng)資源消耗鏈條,引導(dǎo)用戶(hù)根據(jù)優(yōu)化路徑分析性能瓶頸,并針對(duì)每條優(yōu)化路徑給出優(yōu)化建議和操作指導(dǎo),降低調(diào)優(yōu)難度。
其次,增強(qiáng)了HPC場(chǎng)景的性能分析,能夠快速獲取HPC應(yīng)用運(yùn)行時(shí)的CPU流水線使用情況、以及每個(gè)函數(shù)、模塊、parallel-region、barrier-to-barrier-segment的微架構(gòu)信息,確定性能瓶頸,并提供優(yōu)化建議指導(dǎo)用戶(hù)調(diào)優(yōu)。
第三,系統(tǒng)診斷能夠快速定位內(nèi)存、網(wǎng)絡(luò)、存儲(chǔ)等部件的異常,主動(dòng)解決軟件運(yùn)行中出現(xiàn)的常見(jiàn)問(wèn)題,包括識(shí)別內(nèi)存泄漏、越界、OOM等問(wèn)題點(diǎn),優(yōu)化源代碼中內(nèi)存使用的問(wèn)題;以及測(cè)試網(wǎng)絡(luò)和存儲(chǔ)的最大能力,為性能優(yōu)化提供基礎(chǔ)參考數(shù)據(jù)等。
目前鯤鵬DevKit已成功運(yùn)用于運(yùn)營(yíng)商、數(shù)字政府、金融、互聯(lián)網(wǎng)、HPC等眾多行業(yè),支撐近千家伙伴進(jìn)行遷移適配和性能優(yōu)化。未來(lái),鯤鵬DevKit始終聚焦開(kāi)發(fā)者的需求,持續(xù)優(yōu)化開(kāi)發(fā)者體驗(yàn),幫助開(kāi)發(fā)者更加便捷的基于鯤鵬平臺(tái)進(jìn)行極簡(jiǎn)開(kāi)發(fā),共同推動(dòng)鯤鵬生態(tài)繁榮發(fā)展。
原文標(biāo)題:快速遷移、極簡(jiǎn)開(kāi)發(fā),探索鯤鵬開(kāi)發(fā)套件DevKit2.0的價(jià)值密碼
文章出處:【微信公眾號(hào):華為開(kāi)發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
審核編輯:湯梓紅
-
互聯(lián)網(wǎng)
+關(guān)注
關(guān)注
54文章
11013瀏覽量
102082 -
編譯器
+關(guān)注
關(guān)注
1文章
1602瀏覽量
48895 -
性能
+關(guān)注
關(guān)注
0文章
268瀏覽量
18934
原文標(biāo)題:快速遷移、極簡(jiǎn)開(kāi)發(fā),探索鯤鵬開(kāi)發(fā)套件DevKit2.0的價(jià)值密碼
文章出處:【微信號(hào):Huawei_Developer,微信公眾號(hào):華為開(kāi)發(fā)者社區(qū)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論