国产强伦姧在线观看无码,中文字幕99久久亚洲精品,国产精品乱码在线观看,色桃花亚洲天堂视频久久,日韩精品无码观看视频免费

      您現(xiàn)在的位置:智能制造網(wǎng)>技術(shù)中心>漢振分享 | 算法的工程優(yōu)化技術(shù)

      直播推薦

      更多>

      企業(yè)動(dòng)態(tài)

      更多>

      推薦展會(huì)

      更多>

      漢振分享 | 算法的工程優(yōu)化技術(shù)

      2020年07月07日 16:32:11人氣:687來源:漢振智能

      當(dāng)一個(gè)算法實(shí)現(xiàn)之后,需要集成到產(chǎn)品中去,這時(shí)就要面臨性能問題。在實(shí)際工程應(yīng)用中,除采用降低算法的復(fù)雜度去解決性能問題外,通常也會(huì)選擇優(yōu)化代碼以及良好運(yùn)用硬件等方式。接下來將針對在不改動(dòng)算法情況下,對純工程方面做性能優(yōu)化的技術(shù)作一個(gè)介紹。

      1. 流程優(yōu)化

      對初始算法進(jìn)行流程優(yōu)化主要有:

      A.避免算法執(zhí)行過程中的重復(fù)操作及冗余計(jì)算。

      B.避免算法中循環(huán)語句內(nèi)部有過多依賴和跳轉(zhuǎn)。

      C.定點(diǎn)化:定點(diǎn)化的思想是將浮點(diǎn)型運(yùn)算轉(zhuǎn)換為整型運(yùn)算,具體做法是將數(shù)據(jù)乘上一個(gè)很大的數(shù)后,將所有運(yùn)算轉(zhuǎn)為整型計(jì)算,例如某個(gè)乘法只關(guān)心小數(shù)點(diǎn)后3位,那把數(shù)據(jù)都乘上10000后,進(jìn)行整型運(yùn)算的結(jié)果也就滿足所需的精度。

      D.以空間換時(shí)間:空間換時(shí)間(zui)經(jīng)典的就是查找表,某些計(jì)算相當(dāng)耗時(shí),但其自變量的值域是比較有限的,這樣的情況可以預(yù)先計(jì)算好每個(gè)自變量對應(yīng)的函數(shù)值,存在一個(gè)表格中,每次根據(jù)自變量的值去索引對應(yīng)的函數(shù)值即可。

      E.預(yù)先分配內(nèi)存:把握算法整個(gè)執(zhí)行過程中內(nèi)存的使用,提前分配好內(nèi)存,避免內(nèi)存不斷開辟與釋放而產(chǎn)生的耗時(shí)。

      2. 指令優(yōu)化

      SIMD(Single Instruction Multiple Data),單指令多數(shù)據(jù)流,是CPU中能夠復(fù)制多個(gè)操作數(shù),并把它們打包在大型寄存器的一組指令集。

      目前PCI-n-t-e-l指令集有SSE、AVX等,SSE/AVX是對其X86體系的SIMD擴(kuò)展指令集,它基于SIMD向量化技術(shù),提高X86硬件的計(jì)算性能,增強(qiáng)了X86多核向量處理器的圖像和視頻處理能力。SSE/AVX指令支持向量化數(shù)據(jù)并行,一個(gè)指令可以同時(shí)對多個(gè)操作數(shù)進(jìn)行操作,同時(shí)操作的數(shù)據(jù)個(gè)數(shù)由向量寄存器的長度和數(shù)據(jù)類型共同決定。

      SIMD屬于細(xì)粒度的并行,對于圖像算法中利用SIMD技術(shù)優(yōu)化,可以一次性對多個(gè)像素進(jìn)行處理,性能提升明顯,大部分情況下都有3-4倍的提升。

      3. 多線程優(yōu)化

      當(dāng)系統(tǒng)有多個(gè)線程/進(jìn)程時(shí),CPU會(huì)按一定的調(diào)度策略,把它們盡可能放在不同的核上執(zhí)行,多線程優(yōu)化就是把算法拆成多個(gè)子任務(wù),跑在不同的線程上,利用CPU多個(gè)核的能力,并行執(zhí)行算法。

      比較有名的框架就是OpenMP,OpenMP是一種共享內(nèi)存并行系統(tǒng)的多線程程序設(shè)計(jì)方案,支持的編程語言包括C、C++PythonOpenMP提供了對并行算法的高層抽象描述,特別適合在多核CPU機(jī)器上的并行程序設(shè)計(jì)。編譯器根據(jù)程序中添加的pragma指令,自動(dòng)將程序并行處理,使用OpenMP簡化了并行程序設(shè)計(jì)。OpenMP采用fork-join的執(zhí)行模式,開始的時(shí)候只存在一個(gè)主線程,當(dāng)需要并行計(jì)算的時(shí)候,派生出若干個(gè)分支線程來執(zhí)行并行任務(wù)。當(dāng)并行代碼執(zhí)行完成之后,分支線程匯合,并把控制流程交給單獨(dú)的主線程。一個(gè)典型的fork-join執(zhí)行模型如圖1所示。

       圖1. fork-join執(zhí)行模型示意圖

      4. GPU加速

      GPU(Graphic Processing Unit),圖形處理器。如圖2所示,CPU功能模塊很多,能適應(yīng)復(fù)雜運(yùn)算環(huán)境;GPU構(gòu)成則相對簡單,目前流處理器和顯存控制器占據(jù)了絕大部分晶體管。CPU中大部分晶體管主要用于構(gòu)建控制電路(比如分支預(yù)測等)和Cache,只有少部分的晶體管來完成實(shí)際的運(yùn)算工作。而GPU的控制相對簡單,且對Cache的需求小,所以大部分晶體管可以組成各類電路、多條流水線,使得GPU的計(jì)算速度有了突破性的飛躍,擁有了更強(qiáng)大的處理浮點(diǎn)運(yùn)算的能力。

       圖2. GPU和CPU架構(gòu)

      要使用GPU進(jìn)行通用計(jì)算,需要基于一個(gè)框架,目前的框架主要有CUDAOpenCL。

      CUDA是一種由NVIDIA推出的通用并行計(jì)算架構(gòu),該架構(gòu)使GPU能夠解決復(fù)雜的計(jì)算問題。 它包含了CUDA指令集架構(gòu)(ISA)以及GPU內(nèi)部的并行計(jì)算引擎。這個(gè)架構(gòu)只能在裝配了NVIDIA顯卡的機(jī)器上使用。

      OpenCL是一個(gè)為異構(gòu)平臺(tái)編寫程序的框架,此異構(gòu)平臺(tái)可由CPUGPU或其他類型的處理器組成。OpenCL由一門用于編寫kernels(在OpenCL設(shè)備上運(yùn)行的函數(shù))的語言(基于C99)和一組用于定義并控制平臺(tái)的API組成。OpenCL提供了基于任務(wù)分割和數(shù)據(jù)分割的并行計(jì)算機(jī)制。

      關(guān)鍵詞:處理器控制器晶體管
      全年征稿/資訊合作 聯(lián)系郵箱:1271141964@qq.com

      免責(zé)聲明

      • 凡本網(wǎng)注明"來源:智能制造網(wǎng)"的所有作品,版權(quán)均屬于智能制造網(wǎng),轉(zhuǎn)載請必須注明智能制造網(wǎng),http://towegas.com。違反者本網(wǎng)將追究相關(guān)法律責(zé)任。
      • 企業(yè)發(fā)布的公司新聞、技術(shù)文章、資料下載等內(nèi)容,如涉及侵權(quán)、違規(guī)遭投訴的,一律由發(fā)布企業(yè)自行承擔(dān)責(zé)任,本網(wǎng)有權(quán)刪除內(nèi)容并追溯責(zé)任。
      • 本網(wǎng)轉(zhuǎn)載并注明自其它來源的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個(gè)人從本網(wǎng)轉(zhuǎn)載時(shí),必須保留本網(wǎng)注明的作品來源,并自負(fù)版權(quán)等法律責(zé)任。
      • 如涉及作品內(nèi)容、版權(quán)等問題,請?jiān)谧髌钒l(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

      <
      更多 >

      工控網(wǎng)機(jī)器人儀器儀表物聯(lián)網(wǎng)3D打印工業(yè)軟件金屬加工機(jī)械包裝機(jī)械印刷機(jī)械農(nóng)業(yè)機(jī)械食品加工設(shè)備制藥設(shè)備倉儲(chǔ)物流環(huán)保設(shè)備造紙機(jī)械工程機(jī)械紡織機(jī)械化工設(shè)備電子加工設(shè)備水泥設(shè)備海洋水利裝備礦冶設(shè)備新能源設(shè)備服裝機(jī)械印染機(jī)械制鞋機(jī)械玻璃機(jī)械陶瓷設(shè)備橡塑設(shè)備船舶設(shè)備電子元器件電氣設(shè)備


      我要投稿
      • 投稿請發(fā)送郵件至:(郵件標(biāo)題請備注“投稿”)1271141964.qq.com
      • 聯(lián)系電話0571-89719789
      工業(yè)4.0時(shí)代智能制造領(lǐng)域“互聯(lián)網(wǎng)+”服務(wù)平臺(tái)
      智能制造網(wǎng)APP

      功能豐富 實(shí)時(shí)交流

      智能制造網(wǎng)小程序

      訂閱獲取更多服務(wù)

      微信公眾號(hào)

      關(guān)注我們

      抖音

      智能制造網(wǎng)

      抖音號(hào):gkzhan

      打開抖音 搜索頁掃一掃

      視頻號(hào)

      智能制造網(wǎng)

      公眾號(hào):智能制造網(wǎng)

      打開微信掃碼關(guān)注視頻號(hào)

      快手

      智能制造網(wǎng)

      快手ID:gkzhan2006

      打開快手 掃一掃關(guān)注
      意見反饋
      關(guān)閉
      企業(yè)未開通此功能
      詳詢客服 : 0571-87858618