不知火舞的被虐|伊人天伊人天天综合网|博洛尼亚天气|任你懆这里只有精品4|久久美日韩精品久久|掌中之物漫画免费阅读观看|0丨d老妇

代碼移植

關(guān)注
創(chuàng)建者:鄭雨 創(chuàng)建時間:2015-07-24
代碼移植圖1

代碼移植的實例教程

它不是簡單的代碼移植,而是根據(jù)神威超算的架構(gòu)與特性,特別為OpenFOAM量身定制了一整套的優(yōu)化方案。神威與OpenFOAM二者強強聯(lián)合,真正實現(xiàn)了1+1>2的效果。 swOpenFOAM優(yōu)化之道 OpenFOAM求解CFD問題主要包括“預(yù)處理-求解-后處理”三個步驟,每個步驟的關(guān)鍵流程與面臨的問題如下圖所示。為了讓swOpenFOAM充分發(fā)揮神威的性能優(yōu)勢,需要根據(jù)神威處理器的特點——異構(gòu)眾核,詳細(xì)定制代碼移植與優(yōu)化方案。同時,OpenFOAM求解過程中的三個關(guān)鍵環(huán)節(jié):并行剖分、方程離散與方程求解,其對應(yīng)的負(fù)載均衡、數(shù)據(jù)訪存和代數(shù)求解算法選擇等問題又與處理器架構(gòu)息息相關(guān)。綜上所述,這“三位一體”的問題共同構(gòu)成了swOpenFOAM所面臨的最大挑戰(zhàn)。 OpenFOAM在神威上的求解流程與關(guān)鍵性能瓶頸 01 基于處理器架構(gòu)的優(yōu)化 神威·太湖之光使用中國自主研制的“申威 26010”處理器,其特點是片上融合的異構(gòu)眾核架構(gòu)。每塊處理器包含四個“核組”,一個核組中集成了一個主核與64個從核。一個“申威 26010”處理器總共集成了260個運算核心,因此利用好從核是發(fā)揮神威性能的關(guān)鍵。 “申威 26010”異構(gòu)眾核處理器架構(gòu)圖 與處理器架構(gòu)相關(guān)的問題是數(shù)據(jù)訪存。高性能處理器內(nèi)存帶寬的增長遠(yuǎn)滯后于其浮點性能的提升[1](如下圖所示),這一性能瓶頸對于“申威 26010”處理器顯得更為突出。同時,由于一些圖計算或稀疏矩陣特殊的數(shù)據(jù)結(jié)構(gòu),致使其迭代運算中存在內(nèi)存訪問不連續(xù)的問題。
展開
代碼移植: 將Matlab編輯器中的仿真代碼移植到Matlab的APP Designer中,以創(chuàng)建圖形用戶界面(GUI),使得系統(tǒng)更易于操作和使用。 用戶界面設(shè)計: 設(shè)計直觀易用的界面,包括必要的輸入控件、按鈕、文本框和顯示區(qū)域,使用戶能夠輕松地加載圖像、設(shè)置參數(shù)并啟動讀數(shù)過程。 功能實現(xiàn)與封裝: 利用APP Designer的回調(diào)函數(shù),將圖像預(yù)處理、表盤提取、指針定位、刻度線識別和示數(shù)計算等關(guān)鍵功能封裝成獨立的模塊。 系統(tǒng)測試: 對每個功能模塊進(jìn)行單獨測試,確保它們在集成到用戶界面后能夠正常工作。測試包括圖像加載、參數(shù)設(shè)置、一鍵識別等功能。 性能驗證: 通過實際圖像的測試,驗證系統(tǒng)的識別準(zhǔn)確性和響應(yīng)速度。比較系統(tǒng)讀數(shù)結(jié)果與人工讀數(shù),確保誤差在可接受范圍內(nèi)。 用戶交互優(yōu)化: 根據(jù)測試反饋,調(diào)整用戶界面布局和交互邏輯,提高用戶體驗。確保系統(tǒng)提示信息清晰,操作流程直觀。 打包與部署: 在APP Designer中將應(yīng)用程序打包成可執(zhí)行文件(.exe),以便在不同平臺上部署和使用,無需用戶安裝Matlab環(huán)境。 擴展功能測試: 除了一鍵識別功能外,還提供了一系列輔助功能,如圖像預(yù)處理、表盤提取、指針識別等單獨步驟的測試,以便用戶在識別失敗時進(jìn)行問題診斷。 實驗結(jié)果分析: 分析實驗結(jié)果,評估系統(tǒng)的整體性能,包括識別準(zhǔn)確率、處理速度和用戶滿意度,并根據(jù)結(jié)果進(jìn)行必要的調(diào)整和優(yōu)化。 系統(tǒng)開發(fā)與實驗階段是確保研究成果能夠轉(zhuǎn)化為實際可用技術(shù)的重要環(huán)節(jié),通過這一階段的工作,研究者能夠提供一個成熟的產(chǎn)品,為工業(yè)自動化和智能化做出貢獻(xiàn)。
展開
但創(chuàng)建POSIX就是為了可移植性,所以它并不只適用于UNIX系統(tǒng),非UNIX系統(tǒng)也可以符合POSIX標(biāo)準(zhǔn)。所以像Linux、macOS、QNX和Android這些我們熟悉的操作系統(tǒng),都是遵循POSIX的。而像Windows操作系統(tǒng),本來是獨立于UNIX體系的,但隨著POSIX市場和用戶的擴大,也不得不開發(fā)兼容POSIX的接口和子系統(tǒng)。比如Windows 10里就有支持POSIX的Linux子系統(tǒng)(WSL),方便一些UNIX程序移植到Windows上。 POSIX內(nèi)容簡介 POSIX定義了一個標(biāo)準(zhǔn)的操作系統(tǒng)界面和環(huán)境,包括一個命令解釋器(也就是"Shell"),以及常見的實用程序,以支持源代碼層面的應(yīng)用可移植。POSIX是給應(yīng)用程序開發(fā)人員和系統(tǒng)實施者使用的,包括四個主要部分: 1.基礎(chǔ)定義。 這部分為POSIX提供通用的定義,包括關(guān)于術(shù)語、概念、語法、服務(wù)功能、C語言頭的定義和命令行的信息。 2.系統(tǒng)接口。 這部分提供與接口有關(guān)的術(shù)語和概念細(xì)節(jié),并定義了訪問符合POSIX的系統(tǒng)的應(yīng)用程序可用的功能接口。系統(tǒng)服務(wù)功能和子程序的定義、C語言編程語言的特定系統(tǒng)服務(wù)、功能問題,包括可移植性、錯誤處理和錯誤恢復(fù),都包含在這部分。 3.Shell和可用工具。 這部分描述了命令解釋服務(wù)的標(biāo)準(zhǔn)源代碼級接口,也就是著名的Shell。以及Shell中可用的命令和工具。 4.理論依據(jù)。 這部分主要描述POSIX內(nèi)容的歷史信息,以及為什么增加或刪除某些功能的相應(yīng)理由。 POSIX并沒有規(guī)定具體應(yīng)用程序或操作系統(tǒng)的開發(fā),只是定義了它們之間的接口規(guī)范。符合POSIX標(biāo)準(zhǔn)的應(yīng)用程序源代碼應(yīng)該能夠在許多系統(tǒng)中運行,因為該標(biāo)準(zhǔn)是在源代碼層面上定義的。然而POSIX并不保證任何對象或二進(jìn)制代碼級別的可移植性。
展開
再再再直白一點: 各個廠家在五花八門的硬件上隨意開發(fā),想怎么寫就怎么寫,怎么爽怎么來,導(dǎo)致開發(fā)一時爽,維護火葬場,如果底層硬件換掉了,上面的代碼基本就要全部推倒重來,而且不同廠家之間的代碼移植性也幾乎沒有,各個廠家和工程師都很頭大,于是AUTOSAR應(yīng)運而生。AUTOSAR將各個硬件的底層接口做了封裝,以后如果換硬件,只需要配置一下AUTOSAR,告訴它我換硬件了,趕緊給我適配就可以了,上層代碼完全不需要改動就可以使用。從開發(fā)的角度來講,提高了代碼的復(fù)用性,降低了代碼的復(fù)雜度,提高了代碼的可維護性。 2、什么是網(wǎng)絡(luò)管理? 網(wǎng)絡(luò)管理的目的是使網(wǎng)絡(luò)中的ECU節(jié)點有序的睡眠和喚醒。在沒有通信需求的時候睡眠,在需要通信的時候喚醒,可以節(jié)約汽車電池的電量。 3、什么是CAN總線? 這個CSDN和知乎都有很多的介紹,這里就不贅述了。 4、CAN總線的AUTOSAR網(wǎng)絡(luò)管理報文(以下簡稱NM報文)長啥樣? 首先要明確一點,NM報文就是CAN報文。NM報文符合CAN報文的格式,由幀起始、仲裁場、控制場、數(shù)據(jù)場、CRC場、應(yīng)答場、幀結(jié)尾組成。 一般廠家在設(shè)計的時候會規(guī)定好NM報文的ID范圍。 舉個例子:規(guī)定標(biāo)識符在0x500到0x5FF范圍為NM報文。當(dāng)在CANoe中抓取到此ID范圍內(nèi)的報文,那就是NM報文。
展開
,對開發(fā)團隊進(jìn)行技術(shù)指導(dǎo)和培訓(xùn) 4.負(fù)責(zé)解決核心技術(shù)難題,并能識別風(fēng)險,提供性能優(yōu)化方案等 5.解決各類潛在系統(tǒng)技術(shù)風(fēng)險,加固系統(tǒng),保證系統(tǒng)的安全、穩(wěn)定、快速運行 任職要求: 1.計算機、數(shù)學(xué)、力學(xué)、機械、化機、土木水利等相關(guān)專業(yè),碩士及以上學(xué)歷 2.具有5年及以上C++開發(fā)經(jīng)驗,熟悉C++開發(fā)標(biāo)準(zhǔn) 3.具有軟件架構(gòu)開發(fā)經(jīng)驗和項目經(jīng)驗,獨立完成過中大型軟件架構(gòu)設(shè)計者優(yōu)先考慮 4.對內(nèi)存分配和管理、STL等具有較深的理解,熟悉數(shù)據(jù)結(jié)構(gòu)與編譯原理 5.掌握軟件架構(gòu)設(shè)計的原理,熟悉常用軟件架構(gòu)模式及開發(fā)原則,對大型開源CAx軟件有深入研究者優(yōu)先考慮 6.了解Boost等開發(fā)框架,熟悉Python、Fortan開發(fā)語言 7.熟悉Windows、Linux操作系統(tǒng)基本原理,具有跨平臺開發(fā)經(jīng)驗,熟悉代碼移植與交叉編譯 C++開發(fā)高級工程師 崗位職責(zé): 1.參與CAE前后處理軟件、數(shù)據(jù)庫與測試工具等模塊的開發(fā)與優(yōu)化 2.根據(jù)設(shè)計文檔和技術(shù)規(guī)范,完成模塊設(shè)計、編碼、單元測試及文檔編寫 3.協(xié)助實現(xiàn)界面、數(shù)據(jù)管理、圖形交互、結(jié)果可視化等功能 4.參與軟件缺陷修復(fù)、代碼重構(gòu)、版本維護及系統(tǒng)兼容性處理 5.協(xié)助架構(gòu)師推進(jìn)平臺組件化、模塊化重構(gòu) 6.支持產(chǎn)品上線前的集成測試、性能分析與系統(tǒng)優(yōu)化 任職要求: 1.計算機、軟件工程、數(shù)學(xué)、力學(xué)、機械、化機、土木水利等相關(guān)專業(yè),碩士及以上學(xué)歷 2.具有5年及以上C++開發(fā)經(jīng)驗 3.熟練掌握C++、Python語言,理解常用開發(fā)標(biāo)準(zhǔn),具有良好編碼習(xí)慣 4.了解Qt、Boost、OpenMP、MPI等開發(fā)框架,具有Docker等容器技術(shù)的使用經(jīng)驗 5.具有跨平臺(Windows/Linux)開發(fā)經(jīng)驗,理解代碼移植、依賴管理、動態(tài)庫/靜態(tài)庫機制 6
展開
代碼移植圖2

代碼移植的最新內(nèi)容

性能分析與系統(tǒng)優(yōu)化 任職要求: 1.計算機、軟件工程、數(shù)學(xué)、力學(xué)、機械、化機、土木水利等相關(guān)專業(yè),碩士及以上學(xué)歷 2.具有5年及以上C++開發(fā)經(jīng)驗 3.熟練掌握C++、Python語言,理解常用開發(fā)標(biāo)準(zhǔn),具有良好編碼習(xí)慣 4.了解Qt、Boost、OpenMP、MPI等開發(fā)框架,具有Docker等容器技術(shù)的使用經(jīng)驗 5.具有跨平臺(Windows/Linux)開發(fā)經(jīng)驗,理解代碼移植
代碼移植: 將Matlab編輯器中的仿真代碼移植到Matlab的APP Designer中,以創(chuàng)建圖形用戶界面(GUI),使得系統(tǒng)更易于操作和使用。 用戶界面設(shè)計: 設(shè)計直觀易用的界面,包括必要的輸入控件、按鈕、文本框和顯示區(qū)域,使用戶能夠輕松地加載圖像、設(shè)置參數(shù)并啟動讀數(shù)過程。
Klocwork能夠較為全面而準(zhǔn)確地發(fā)現(xiàn)軟件中潛在的問題,例如:可發(fā)現(xiàn)代碼中的質(zhì)量缺陷和安全漏洞;發(fā)現(xiàn)軟件中運行時錯誤及缺陷以及不合規(guī)范代碼;發(fā)現(xiàn)危險、過于復(fù)雜和不可移植代碼等問題。目前已廣泛應(yīng)用于汽車電子商務(wù)、醫(yī)療器械、生產(chǎn)和通信等領(lǐng)域。
同樣,雖然MISRA是一套非強制性標(biāo)準(zhǔn),但由于它有助于關(guān)鍵安保系統(tǒng)中安全、可靠和可移植代碼開發(fā),所以它仍然被許多行業(yè)廣泛采用。 汽車軟件測試最佳實踐示例 雖然產(chǎn)品在車輛中的功能(安全關(guān)鍵、機械、美學(xué)等方面)會影響所需的安全測試水平,但無論產(chǎn)品如何,軟件測試的最佳實踐始終如一。 在實際情況中,您需要考慮的是如何選擇適合某項測試的工具。
(Sonic Jet 橫流相互作用) 除了在新框架的開發(fā)方面工作外,我還負(fù)責(zé)將源代碼移植到 HPC,這是一項我喜歡的工作,并且從編程中學(xué)到了很多東西。在這里,我使用了多個系統(tǒng)和編程模型:CUDA、OpenMP、OpenACC、MPI 以及它們的組合。我認(rèn)為所有的經(jīng)歷塑造了我現(xiàn)在的工程師/科學(xué)家類型。我的興趣從計算機科學(xué)到數(shù)值分析不等。
然而POSIX并不保證任何對象或二進(jìn)制代碼級別的可移植性。因此,即使在具有相同硬件和操作系統(tǒng)的類似機器上,二進(jìn)制可執(zhí)行文件也可能無法運行。 POSIX與AUTOSAR 在討論POSIX和AUTOSAR的關(guān)系之前,我們得先說說POSIX 1003.13。
它不是簡單的代碼移植,而是根據(jù)神威超算的架構(gòu)與特性,特別為OpenFOAM量身定制了一整套的優(yōu)化方案。神威與OpenFOAM二者強強聯(lián)合,真正實現(xiàn)了1+1>2的效果。
再再再直白一點: 各個廠家在五花八門的硬件上隨意開發(fā),想怎么寫就怎么寫,怎么爽怎么來,導(dǎo)致開發(fā)一時爽,維護火葬場,如果底層硬件換掉了,上面的代碼基本就要全部推倒重來,而且不同廠家之間的代碼移植性也幾乎沒有,各個廠家和工程師都很頭大,于是AUTOSAR應(yīng)運而生。
Klocwork能夠準(zhǔn)確地發(fā)現(xiàn)軟件中潛在的問題,例如:可發(fā)現(xiàn)代碼中的質(zhì)量缺陷和安全漏洞;發(fā)現(xiàn)軟件中運行時錯誤及缺陷以及不合規(guī)范代碼;發(fā)現(xiàn)危險、過于復(fù)雜和不可移植代碼等問題。目前已廣泛應(yīng)用于汽車、電子商務(wù)、醫(yī)療器械、生產(chǎn)和通信等領(lǐng)域。
本文以FreeRTOS為例,如果我們自己在官網(wǎng)下載源碼然后手動移植代碼就是使用FreeRTOS的原生API接口,如果我們使用STM32CubeMX來配置工程就是使用的CMSIS-API接口,是對FreeRTOS的原生API接口進(jìn)行了封裝。 一、RTOS為什么要搞兩種API?