直播推薦
企業(yè)動態(tài)
- 會后報道 | 世界級制造WCM與工業(yè)4.0創(chuàng)新大會暨頒獎盛典新聞動態(tài)
- 東莞皓天交付隔爆試驗箱,助力廣東電子科技企業(yè)品質(zhì)升級
- SNEC 2025大秦數(shù)能兩類新品連發(fā),以“智慧儲能”助推能源轉(zhuǎn)型
- 藍芯科技即將亮相泰國NEPCON Thailand 2025
- 漢達森攜手瑞典AQ邀您共聚CPHI China 2025
- 歐姆龍亮相SNEC 2025:助推新能源產(chǎn)業(yè)加速升級,為零碳未來蓄能
- 東莞市皓天試驗設備有限公司召開線上技術(shù)會議 凝聚智慧共促技術(shù)升級
- 天津市投資促進局、天津市建設銀行一行到訪國聯(lián)股份肥多多
推薦展會
當一個算法實現(xiàn)之后,需要集成到產(chǎn)品中去,這時就要面臨性能問題。在實際工程應用中,除采用降低算法的復雜度去解決性能問題外,通常也會選擇優(yōu)化代碼以及良好運用硬件等方式。接下來將針對在不改動算法情況下,對純工程方面做性能優(yōu)化的技術(shù)作一個介紹。
1. 流程優(yōu)化
對初始算法進行流程優(yōu)化主要有:
A.避免算法執(zhí)行過程中的重復操作及冗余計算。
B.避免算法中循環(huán)語句內(nèi)部有過多依賴和跳轉(zhuǎn)。
C.定點化:定點化的思想是將浮點型運算轉(zhuǎn)換為整型運算,具體做法是將數(shù)據(jù)乘上一個很大的數(shù)后,將所有運算轉(zhuǎn)為整型計算,例如某個乘法只關(guān)心小數(shù)點后3位,那把數(shù)據(jù)都乘上10000后,進行整型運算的結(jié)果也就滿足所需的精度。
D.以空間換時間:空間換時間(zui)經(jīng)典的就是查找表,某些計算相當耗時,但其自變量的值域是比較有限的,這樣的情況可以預先計算好每個自變量對應的函數(shù)值,存在一個表格中,每次根據(jù)自變量的值去索引對應的函數(shù)值即可。
E.預先分配內(nèi)存:把握算法整個執(zhí)行過程中內(nèi)存的使用,提前分配好內(nèi)存,避免內(nèi)存不斷開辟與釋放而產(chǎn)生的耗時。
2. 指令優(yōu)化
SIMD即(Single Instruction Multiple Data),單指令多數(shù)據(jù)流,是CPU中能夠復制多個操作數(shù),并把它們打包在大型寄存器的一組指令集。
目前PC上I-n-t-e-l指令集有SSE、AVX等,SSE/AVX是對其X86體系的SIMD擴展指令集,它基于SIMD向量化技術(shù),提高X86硬件的計算性能,增強了X86多核向量處理器的圖像和視頻處理能力。SSE/AVX指令支持向量化數(shù)據(jù)并行,一個指令可以同時對多個操作數(shù)進行操作,同時操作的數(shù)據(jù)個數(shù)由向量寄存器的長度和數(shù)據(jù)類型共同決定。
SIMD屬于細粒度的并行,對于圖像算法中利用SIMD技術(shù)優(yōu)化,可以一次性對多個像素進行處理,性能提升明顯,大部分情況下都有3-4倍的提升。
3. 多線程優(yōu)化
當系統(tǒng)有多個線程/進程時,CPU會按一定的調(diào)度策略,把它們盡可能放在不同的核上執(zhí)行,多線程優(yōu)化就是把算法拆成多個子任務,跑在不同的線程上,利用CPU多個核的能力,并行執(zhí)行算法。
比較有名的框架就是OpenMP,OpenMP是一種共享內(nèi)存并行系統(tǒng)的多線程程序設計方案,支持的編程語言包括C、C++和Python。OpenMP提供了對并行算法的高層抽象描述,特別適合在多核CPU機器上的并行程序設計。編譯器根據(jù)程序中添加的pragma指令,自動將程序并行處理,使用OpenMP簡化了并行程序設計。OpenMP采用fork-join的執(zhí)行模式,開始的時候只存在一個主線程,當需要并行計算的時候,派生出若干個分支線程來執(zhí)行并行任務。當并行代碼執(zhí)行完成之后,分支線程匯合,并把控制流程交給單獨的主線程。一個典型的fork-join執(zhí)行模型如圖1所示。
圖1. fork-join執(zhí)行模型示意圖
4. GPU加速
GPU即(Graphic Processing Unit),圖形處理器。如圖2所示,CPU功能模塊很多,能適應復雜運算環(huán)境;GPU構(gòu)成則相對簡單,目前流處理器和顯存控制器占據(jù)了絕大部分晶體管。CPU中大部分晶體管主要用于構(gòu)建控制電路(比如分支預測等)和Cache,只有少部分的晶體管來完成實際的運算工作。而GPU的控制相對簡單,且對Cache的需求小,所以大部分晶體管可以組成各類電路、多條流水線,使得GPU的計算速度有了突破性的飛躍,擁有了更強大的處理浮點運算的能力。
圖2. GPU和CPU架構(gòu)
要使用GPU進行通用計算,需要基于一個框架,目前的框架主要有CUDA和OpenCL。
CUDA是一種由NVIDIA推出的通用并行計算架構(gòu),該架構(gòu)使GPU能夠解決復雜的計算問題。 它包含了CUDA指令集架構(gòu)(ISA)以及GPU內(nèi)部的并行計算引擎。這個架構(gòu)只能在裝配了NVIDIA顯卡的機器上使用。
OpenCL是一個為異構(gòu)平臺編寫程序的框架,此異構(gòu)平臺可由CPU,GPU或其他類型的處理器組成。OpenCL由一門用于編寫kernels(在OpenCL設備上運行的函數(shù))的語言(基于C99)和一組用于定義并控制平臺的API組成。OpenCL提供了基于任務分割和數(shù)據(jù)分割的并行計算機制。
免責聲明
- 凡本網(wǎng)注明"來源:智能制造網(wǎng)"的所有作品,版權(quán)均屬于智能制造網(wǎng),轉(zhuǎn)載請必須注明智能制造網(wǎng),http://www.caslcampaign.com。違反者本網(wǎng)將追究相關(guān)法律責任。
- 企業(yè)發(fā)布的公司新聞、技術(shù)文章、資料下載等內(nèi)容,如涉及侵權(quán)、違規(guī)遭投訴的,一律由發(fā)布企業(yè)自行承擔責任,本網(wǎng)有權(quán)刪除內(nèi)容并追溯責任。
- 本網(wǎng)轉(zhuǎn)載并注明自其它來源的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔此類作品侵權(quán)行為的直接責任及連帶責任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品來源,并自負版權(quán)等法律責任。
- 如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。
2025中國鄭州衡器與計量技術(shù)設備展覽會
展會城市:鄭州市展會時間:2025-11-07