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

代碼移植的案例

神威OpenFOAM——最流行的開源CFD軟件與神威·太湖之光的珠聯璧合
它不是簡單的代碼移植,而是根據神威超算的架構與特性,特別為OpenFOAM量身定制了一整套的優化方案。神威與OpenFOAM二者強強聯合,真正實現了1+1>2的效果。 swOpenFOAM優化之道 OpenFOAM求解CFD問題主要包括“預處理-求解-后處理”三個步驟,每個步驟的關鍵流程與面臨的問題如下圖所示。為了讓swOpenFOAM充分發揮神威的性能優勢,需要根據神威處理器的特點——異構眾核,詳細定制代碼移植與優化方案。同時,OpenFOAM求解過程中的三個關鍵環節:并行剖分、方程離散與方程求解,其對應的負載均衡、數據訪存和代數求解算法選擇等問題又與處理器架構息息相關。綜上所述,這“三位一體”的問題共同構成了swOpenFOAM所面臨的最大挑戰。 OpenFOAM在神威上的求解流程與關鍵性能瓶頸 01 基于處理器架構的優化 神威·太湖之光使用中國自主研制的“申威 26010”處理器,其特點是片上融合的異構眾核架構。每塊處理器包含四個“核組”,一個核組中集成了一個主核與64個從核。一個“申威 26010”處理器總共集成了260個運算核心,因此利用好從核是發揮神威性能的關鍵。 “申威 26010”異構眾核處理器架構圖 與處理器架構相關的問題是數據訪存。高性能處理器內存帶寬的增長遠滯后于其浮點性能的提升[1](如下圖所示),這一性能瓶頸對于“申威 26010”處理器顯得更為突出。同時,由于一些圖計算或稀疏矩陣特殊的數據結構,致使其迭代運算中存在內存訪問不連續的問題。
展開
基于matlab機器學習圖像處理的傳統模擬儀表數字讀取系統
代碼移植: 將Matlab編輯器中的仿真代碼移植到Matlab的APP Designer中,以創建圖形用戶界面(GUI),使得系統更易于操作和使用。 用戶界面設計: 設計直觀易用的界面,包括必要的輸入控件、按鈕、文本框和顯示區域,使用戶能夠輕松地加載圖像、設置參數并啟動讀數過程。 功能實現與封裝: 利用APP Designer的回調函數,將圖像預處理、表盤提取、指針定位、刻度線識別和示數計算等關鍵功能封裝成獨立的模塊。 系統測試: 對每個功能模塊進行單獨測試,確保它們在集成到用戶界面后能夠正常工作。測試包括圖像加載、參數設置、一鍵識別等功能。 性能驗證: 通過實際圖像的測試,驗證系統的識別準確性和響應速度。比較系統讀數結果與人工讀數,確保誤差在可接受范圍內。 用戶交互優化: 根據測試反饋,調整用戶界面布局和交互邏輯,提高用戶體驗。確保系統提示信息清晰,操作流程直觀。 打包與部署: 在APP Designer中將應用程序打包成可執行文件(.exe),以便在不同平臺上部署和使用,無需用戶安裝Matlab環境。 擴展功能測試: 除了一鍵識別功能外,還提供了一系列輔助功能,如圖像預處理、表盤提取、指針識別等單獨步驟的測試,以便用戶在識別失敗時進行問題診斷。 實驗結果分析: 分析實驗結果,評估系統的整體性能,包括識別準確率、處理速度和用戶滿意度,并根據結果進行必要的調整和優化。 系統開發與實驗階段是確保研究成果能夠轉化為實際可用技術的重要環節,通過這一階段的工作,研究者能夠提供一個成熟的產品,為工業自動化和智能化做出貢獻。
展開
POSIX算汽車行業黑話?
但創建POSIX就是為了可移植性,所以它并不只適用于UNIX系統,非UNIX系統也可以符合POSIX標準。所以像Linux、macOS、QNX和Android這些我們熟悉的操作系統,都是遵循POSIX的。而像Windows操作系統,本來是獨立于UNIX體系的,但隨著POSIX市場和用戶的擴大,也不得不開發兼容POSIX的接口和子系統。比如Windows 10里就有支持POSIX的Linux子系統(WSL),方便一些UNIX程序移植到Windows上。 POSIX內容簡介 POSIX定義了一個標準的操作系統界面和環境,包括一個命令解釋器(也就是"Shell"),以及常見的實用程序,以支持源代碼層面的應用可移植。POSIX是給應用程序開發人員和系統實施者使用的,包括四個主要部分: 1.基礎定義。 這部分為POSIX提供通用的定義,包括關于術語、概念、語法、服務功能、C語言頭的定義和命令行的信息。 2.系統接口。 這部分提供與接口有關的術語和概念細節,并定義了訪問符合POSIX的系統的應用程序可用的功能接口。系統服務功能和子程序的定義、C語言編程語言的特定系統服務、功能問題,包括可移植性、錯誤處理和錯誤恢復,都包含在這部分。 3.Shell和可用工具。 這部分描述了命令解釋服務的標準源代碼級接口,也就是著名的Shell。以及Shell中可用的命令和工具。 4.理論依據。 這部分主要描述POSIX內容的歷史信息,以及為什么增加或刪除某些功能的相應理由。 POSIX并沒有規定具體應用程序或操作系統的開發,只是定義了它們之間的接口規范。符合POSIX標準的應用程序源代碼應該能夠在許多系統中運行,因為該標準是在源代碼層面上定義的。然而POSIX并不保證任何對象或二進制代碼級別的可移植性。
展開
一文搞懂CAN總線的AUTOSAR網絡管理
再再再直白一點: 各個廠家在五花八門的硬件上隨意開發,想怎么寫就怎么寫,怎么爽怎么來,導致開發一時爽,維護火葬場,如果底層硬件換掉了,上面的代碼基本就要全部推倒重來,而且不同廠家之間的代碼移植性也幾乎沒有,各個廠家和工程師都很頭大,于是AUTOSAR應運而生。AUTOSAR將各個硬件的底層接口做了封裝,以后如果換硬件,只需要配置一下AUTOSAR,告訴它我換硬件了,趕緊給我適配就可以了,上層代碼完全不需要改動就可以使用。從開發的角度來講,提高了代碼的復用性,降低了代碼的復雜度,提高了代碼的可維護性。 2、什么是網絡管理? 網絡管理的目的是使網絡中的ECU節點有序的睡眠和喚醒。在沒有通信需求的時候睡眠,在需要通信的時候喚醒,可以節約汽車電池的電量。 3、什么是CAN總線? 這個CSDN和知乎都有很多的介紹,這里就不贅述了。 4、CAN總線的AUTOSAR網絡管理報文(以下簡稱NM報文)長啥樣? 首先要明確一點,NM報文就是CAN報文。NM報文符合CAN報文的格式,由幀起始、仲裁場、控制場、數據場、CRC場、應答場、幀結尾組成。 一般廠家在設計的時候會規定好NM報文的ID范圍。 舉個例子:規定標識符在0x500到0x5FF范圍為NM報文。當在CANoe中抓取到此ID范圍內的報文,那就是NM報文。
展開
代碼移植圖1
職等你來 | 大連工業軟件創新發展研究院招聘公告
,對開發團隊進行技術指導和培訓 4.負責解決核心技術難題,并能識別風險,提供性能優化方案等 5.解決各類潛在系統技術風險,加固系統,保證系統的安全、穩定、快速運行 任職要求: 1.計算機、數學、力學、機械、化機、土木水利等相關專業,碩士及以上學歷 2.具有5年及以上C++開發經驗,熟悉C++開發標準 3.具有軟件架構開發經驗和項目經驗,獨立完成過中大型軟件架構設計者優先考慮 4.對內存分配和管理、STL等具有較深的理解,熟悉數據結構與編譯原理 5.掌握軟件架構設計的原理,熟悉常用軟件架構模式及開發原則,對大型開源CAx軟件有深入研究者優先考慮 6.了解Boost等開發框架,熟悉Python、Fortan開發語言 7.熟悉Windows、Linux操作系統基本原理,具有跨平臺開發經驗,熟悉代碼移植與交叉編譯 C++開發高級工程師 崗位職責: 1.參與CAE前后處理軟件、數據庫與測試工具等模塊的開發與優化 2.根據設計文檔和技術規范,完成模塊設計、編碼、單元測試及文檔編寫 3.協助實現界面、數據管理、圖形交互、結果可視化等功能 4.參與軟件缺陷修復、代碼重構、版本維護及系統兼容性處理 5.協助架構師推進平臺組件化、模塊化重構 6.支持產品上線前的集成測試、性能分析與系統優化 任職要求: 1.計算機、軟件工程、數學、力學、機械、化機、土木水利等相關專業,碩士及以上學歷 2.具有5年及以上C++開發經驗 3.熟練掌握C++、Python語言,理解常用開發標準,具有良好編碼習慣 4.了解Qt、Boost、OpenMP、MPI等開發框架,具有Docker等容器技術的使用經驗 5.具有跨平臺(Windows/Linux)開發經驗,理解代碼移植、依賴管理、動態庫/靜態庫機制 6
展開
我是 Julio Mendez,這就是我網格劃分的方式
他的團隊開發了這段代碼,而我只是在參與這項最近的研究,但這項偉大的工作是由他的團隊完成的。幾個月前,我與 Sengupta 教授進行了同樣的對話,回顧一下,一切都歸結為緩存命中和重疊計算和通信。幸運的是,大多數編譯器在優化代碼方面做得很好,但作為開發人員,您必須精通如何編寫求解器,對于 HPC 應用程序,您需要精通如何將通信與計算重疊。這是為科學應用開發代碼時最重要的方面之一。同樣,我不是開發代碼的小組的成員,但開發團隊做得非常出色。這通過線性可擴展性得到證明。隨著核心數量的增加(同時保持網格固定),您正在使核心級別的子域變小。因此,在某些情況下,大部分計算都適合緩存,而您的求解器會利用緩存命中。 總之,我通過以下方式看到這一點。幾個核心的通信時間相當長。此外,您在核心級別有一個更大的問題,需要在主內存上獲取數據。隨著核心數量的增加,每個處理器(較小的域)分配的內存總量就會減少;因此我們的緩存命中率高于緩存未命中率。除此之外,我們增加了 PE(核心)的數量,因此我們向更多的鄰居發送更多的數據包,這些數據包更小,因此我們減少了消息量(延遲)。這是我的觀點,也許是錯誤的,所以請三思而后行。 你最引以為豪的項目是什么?為什么? 有多個項目我確實感到自豪,但我認為有兩個我非常自豪能在上面蓋上我的姓氏。其中之一是我去年在 AIAA SciTech 上發表的一篇論文。這篇論文的獨特之處在于,我是在獲得博士學位后做的,而且不知何故,我一個人完成了所有事情。這是我推動我的想法、更多 CFD 開發、撰寫提案以獲得 HPC 資源等的機會。當你看到你努力工作可以完成的所有事情時,感覺非常好。 這篇論文的目的是進一步驗證我在博士期間使用的 IDS(積分微分方案)。這一次,我想對方案進行更深入的分析,我們給出了幾個計算來證明新方案的流動物理捕獲能力。
展開
深入_Python_3PDF文檔下載
用 2to3 移植代碼到 Python 3 是一個有關 2to3 工具能夠自動整理的所有東西的參考手冊。很多這些東西都是語法的變更,因此了解 Python 3 里面許多的語法變更是一個好的起點。(print 現在是一個函數,x 不能使用,等等。) 在 HTTP Web 服務這章,httplib2 模塊通過 HTTP 獲取頭信息和數據。HTTP頭信息返回的是字符串,而 HTTP 正文則返回的是字節。 在序列化 Python 對象這章,你將了解到為什么 Python 3 里面的 pickle 模塊定義了一個和 Python 2 向后不兼容的新的數據類型。(提示:這就是因為字節和字符串的原因。) 同樣 JSON也根本不支持字節類型。我將向你展示如何解決這個問題。 在案例分析:移植 chardet 到 Python 3這章,到處都是一大堆一大堆關于字節和字符串的東西。 即使你不關心 Unicode (但實際上你會的),你也會想閱讀一下 Python 3 里面的字符串格式,這和 Python 2 里面的完全不一樣。 Python 的專家們聰明的把 ElementTree 變成了標準庫的一部分 ,然后現在它構成了新的 XML 章節的基礎。解析 XML 的那些老的方式仍然可用,但是你應該避免使用它們,因為他們很糟糕! 除此之外,還有個關于 Python 的新東西 — 不是語言上的,而是社區中的 — 像 Python 包裝索引(PyPI) 的出現。Python 提供了實 用工具類用來將你的代碼打包成標準格式,并分發那些包到PyPI 中。閱讀 打包 Python 庫了解詳細信息。
展開
基于多語言的跨平臺靜態測試解決方案
產品介紹 Klocwork是Perforce公司的產品,主要用于C、C++、C#、Java和python代碼的自動化敏捷靜態分析工作,可以提供編碼規則檢查、代碼質量度量、軟件結構分析、測試結果管理、代碼評審等敏捷測試功能。Klocwork可以擴展到任何規模的項目,與大型復雜環境、各種開發工具集成,并提供控制、協作和報告。Klocwork提供即時的分析結果,同時保持準確性,并與CI/CD無縫集成,保護您的軟件在每次提交時免受漏洞的傷害。 Klocwork能夠準確地發現軟件中潛在的問題,例如:可發現代碼中的質量缺陷和安全漏洞;發現軟件中運行時錯誤及缺陷以及不合規范代碼;發現危險、過于復雜和不可移植代碼等問題。目前已廣泛應用于汽車、電子商務、醫療器械、生產和通信等領域。
展開
Klocwork—符合功能安全要求的自動化靜態測試工具
產品概述 Klocwork是Perforce公司產品,主要用于C、C++、C#、Java、 python和Kotlin代碼的自動化靜態分析工作,可以提供編碼規則檢查、代碼質量度量、測試結果管理等功能。Klocwork可以擴展到大多數規模的項目,與大型復雜環境、各種開發工具集成,并提供控制、協作和報告。Klocwork提供即時的分析結果,同時保持準確性,并支持CI/CD、容器、云服務和機器配置集成,進行自動化測試,保護您的軟件在每次提交時免受漏洞的傷害。 Klocwork能夠較為全面而準確地發現軟件中潛在的問題,例如:可發現代碼中的質量缺陷和安全漏洞;發現軟件中運行時錯誤及缺陷以及不合規范代碼;發現危險、過于復雜和不可移植代碼等問題。目前已廣泛應用于汽車電子商務、醫療器械、生產和通信等領域。
展開
干貨|操作系統RTOS為什么要搞兩種API?
5、打開FreeRTOS 這里可以看到STM32CubeMX只提供了一種RTOS就是FreeRTOS,并且提供的是CMSIS接口API,并沒有提供原生的API,所以如果你想學習原生API就必須學會手動移植源碼,使用STM32CubeMX來創建工程就必須使用ARM公司的CMSIS API Include paramters 這一個與FreeRTOS的原生接口有關,大家凡是看到v打頭、x打頭的函數,都是FreeRTOS的原生函數,我們現在要使用的是對原生接口封裝后的CMSIS API,通過Include paramter的配置可以決定哪些原生接口被使用,哪些不被使用,不過有關Include paramters中的內容,一般情況下使用默認設置即可。 User Constant 在該這欄目中可以添加宏定義,添加后就會在代碼中自動生成宏定義的代碼,但是我們一般不會這樣添加,我們需要定義什么宏定義,我們一般都是直接在代碼中編寫。 Task and Queues 在這一個欄目中,我們可以添加任務(線程),自動生成代碼時就會生成創建任務(線程)的代碼,一般會有一個默認任務,如果需要的話我們可以額外添加一個任務,當然我們也可以自己去寫這些創建任務的代碼。 添加一個任務(線程),默認任務+添加的任務,目前我們有兩個任務,創建工程時會自動生成創建這兩個任務的代碼
展開
AI是FPGA企業苦等的殺手級應用嗎?
如果您想針對GPU銷售FPGA,請設計一個使GPU代碼可輕松移植到FPGA的流程。這樣,你就可以預先克服編程挑戰——或者至少讓它變得更容易。 不幸的是,GPU加速器市場由一家公司--Nvidia主導。Nvidia為希望使用Nvidia GPU加速其應用程序的軟件開發人員創建了一種名為CUDA(類似于OpenCL)的專有語言。當OpenCL出現時(名稱中帶有令人討厭的“Open”)Nvidia宣布了對OpenCL的“支持”,但顯然它們大部分努力都落后于CUDA,他們的CUDA客戶非常樂意繼續編寫CUDA代碼,非常感謝你。 CUDA和Nvidia在GPU加速市場的成功阻礙了OpenCL的采用,這大大減緩了OpenCL作為從基于GPU的加速到基于FPGA的加速的橋梁——這正是Nvidia想要達到的。 此外,許多神經網絡專家尚未采用OpenCL或CUDA。他們需要更多幫助來減小他們訓練有素的模型和基于FPGA的推理引擎之間的差距。許多公司正在攻擊這個非常重要的問題,我們將來會對它們進行更多的討論。但就目前而言,基于FPGA的神經網絡推理基本上僅限于能夠與其神經網絡/ AI工程師一起部署FPGA專家的組織。事實上,這個問題很可能是我們早前撰寫的Xilinx /戴姆勒聯盟的驅動因素—— 戴姆勒可能需要Xilinx幫助在Xilinx硬件上實現其汽車專用AI算法。 除了編程問題之外,FPGA在不可替代性方面還存在另一個障礙。在大容量嵌入式應用(例如汽車)中,解決方案將隨著時間的推移變得具體和有限。這意味著將不再需要FPGA的靈活性。如果行人識別網絡被證明是有效的,那么該應用的硬件仍然可以硬化,可能會大大提高性能,降低功耗,并且(最重要的是)降低成本。
展開
代碼移植圖2
新能源汽車動力系統部件測試大揭秘
MBD開發相比C的優點是能夠以圖形化的方式表達復雜的邏輯、代碼可讀性、可移植性、開發調試便利程度都大大增強,同時利用成熟的代碼生成工具鏈,也避免了手工代碼容易產生的低級錯誤。在基于模型的軟件開發環節中規定了MIL/SIL/HIL等多項測試: 1) MIL(Model-In-Loops)既模型在環測試,就是驗證軟件模型是否可以實現軟件功能,測試依據是由系統需求分解而來的軟件需求。 2) SIL(Software-In-Loops)軟件在環測試,對比模型自動生成的C代碼和模型本身實現的功能是否一致,使用Simulink自身工具就可以進行Sil測試。 3) PIL(Processer-In-Loops)處理器在環測試,目的是測試自動生成的代碼寫入控制器后,功能實現上是否與模型有偏差。PIL看似無關緊要,但不做重視也會引起一些不良后果(如調度問題、CPU Load,堆棧溢出等)。 4) HIL(Hardware-In-Loops)硬件在環測試,測試控制器完整系統功能,一般會搭建控制器所在系統的測試臺架,使用電氣元件模擬傳感器(如溫度)和執行器(如風扇負載)的電氣特性,驗證完整的系統功能。 這些測試環節的用例來源于系統需求。在汽車軟件開發流程中,開發和測試成V字型進行,俗稱軟件開發V模型,感興趣的同學可以查看汽車軟件開發流程ASPICE。 統開發流程中非常強調測試軟件環節的。要知道手機軟件出問題最多也就是秒退而已,車輛軟件出問題影響的是人命。 當年豐田剎車門事件,美國政府就派了嵌入式軟件專家和卡耐基梅隆的計算機教授詳細審查了發動機控制系統的軟件代碼,豐田對全局變量的濫用(上萬個)以及軟件安全機制的混亂就遭到了巨額處罰。如果豐田重視軟件測試工作的話,這件事也許不會發生。
展開
Python相比其他計算機語言真的更有優勢嗎?
②明確優雅:Python的語法非常簡潔,代碼量少,非常容易編寫,代碼的測試、重構、維護等都非常容易。一 個小小的腳本,用C可能需要1000行,用JA可能幾百行,但是用Python往往只需要幾十行! ③開發速度快:當前互聯網企業的生命線是什么?產品開發速度!如果你的開發速度不夠快,在你的產品推出 之前別人家的產品已經上線了,你也就沒有生存空間了,這里的真實例子數不勝數。那么,Python的開發速 度說第二沒人敢稱第一!(不歡迎辯論_) 二、跨平臺、可移植、可擴展、交互式、解釋型、面向對象的動態語言 ①跨平臺:Python支持Windows、Linux和MAC os等主流操作系統。 ②可移植代碼通常不需要多少改動就能移植到別的平臺上使用。 ③可擴展:Python語言本身由C語言編寫而成的,你完全可以在Python中嵌入C,從而提高代碼的運行速度和 效率。你也可以使用C語言重寫Python的任何模塊,從根本上改寫Python,PyPy就是這么干的。 ④交互式:Python提供很好的人機交互界面,比如IDLE和IPython??梢詮慕K端輸入執行代碼并獲得結果,互動的測試和調試代碼片斷。 ⑤解釋型:Python語言在執行過程中由解釋器逐行分析,逐行運行并輸出結果。 面向對象:Python語言具備所有的面向對象特性和功能,支持基于類的程序開發。 ⑥動態語言:在運行時可以改變其結構。例如新的函數、對象、甚至代碼可以被引進,已有的函數可以被刪除 或是其他結構上的變化。動態語言非常具有活力。
展開
奧迪自動駕駛汽車計劃曝光:擬2021年商用
其他的自動駕駛研發企業可能會被已經開發的代碼拖累,難以移植到更新的平臺。
汽車軟件測試:需求和最佳實踐
MISRA MISRA是一個汽車安全組織,由供應商、工程咨詢公司、靜態代碼分析師和OEM制造商組成。MISRA編碼標準指南于1998年首次發布,現已涵蓋基于C和C++編碼語言構建的系統。同樣,雖然MISRA是一套非強制性標準,但由于它有助于關鍵安保系統中安全、可靠和可移植代碼開發,所以它仍然被許多行業廣泛采用。 汽車軟件測試最佳實踐示例 雖然產品在車輛中的功能(安全關鍵、機械、美學等方面)會影響所需的安全測試水平,但無論產品如何,軟件測試的最佳實踐始終如一。 在實際情況中,您需要考慮的是如何選擇適合某項測試的工具。例如,生產制動系統的OEM可能需要復雜的HIL測試,而信息娛樂或導航系統可能只需要SIL測試。 汽車產品的GUI自動化測試 Squish是一款用于跨平臺桌面端、移動端、嵌入式和Web應用程序的GUI自動化測試工具。在汽車測試方面,Squish通常用于測試導航系統、觸摸面板、儀表盤和前面板。 為什么Squish適用于汽車GUI測試 汽車軟件的用戶界面近年來變得越來越生動,動畫效果令人眼花繚亂。在這種情況下,從GUI的角度進行測試具有挑戰性,因為視覺元素都在不斷變化,而您需要確保應用程序的狀態和您的測試保持同步。 如果我們從手動測試的角度來測試動畫,那么測試人員需要手動截取屏幕截圖,然后比較指示器是否在正確的位置、顏色是否正確、動畫速度是否正確(如果指示器需要按預期設定移動)。 在Squish的幫助下,我們的目標是模擬終端用戶的行為。Squish能夠完全按照終端用戶的方式自動與應用程序交互(單擊、拖放、觸摸)。Squish還可以截屏以檢查應用程序的當前狀態,以及圖像是否按照設計和開發團隊的預期呈現。
展開