无码人妻精品一区二区三18禁,影音先锋男人AV橹橹色,污污污污污污www网站免费,日韩成人av无码一区二区三区,欧美性受xxxx狂喷水

TDengine 3.2.3.0 集成英特爾 AVX512!快來看看為你增添了哪些助力

TAOS Data

2024-03-13 / ,

在當今的 IoT 和智能制造領域,海量時序數據持續產生,對于這些數據的實時存儲、高效查詢和分析已經成為時序數據庫(Time Series Database,TSDB)的核心競爭力。作為一款高性能的時序數據庫,TDengine 不僅采用了先進數據處理算法,還在 3.2.3.0 版本引入了英特爾(er)? AVX512 高級向(xiang)量擴(kuo)展指令集,實現并(bing)行(xing)處理數(shu)據,產品查詢性能獲得了進一步(bu)提升。本篇(pian)文章將深入介紹 TDengine 與 AVX512 集成的(de)優化工作(zuo)。

TDengine 與 AVX-512 集成原理

作(zuo)(zuo)為一種(zhong)單指令(ling)(ling)多數據(Single Instruction Multiple Data,SIMD)指令(ling)(ling)集,英(ying)特爾? AVX-512 在密集型(xing)計算負載中(zhong)有著得天獨厚的(de)優(you)勢(shi)。得益(yi)于其 512 位(wei)的(de)寄(ji)存器寬度和兩個(ge) 512 位(wei)的(de)融合乘(cheng)加(Fused Multiply Add,FMA)單元,該指令(ling)(ling)集能(neng)并(bing)行執(zhi)行 32 次(ci)雙精(jing)度、64 次(ci)單精(jing)度浮點(dian)運算,或操作(zuo)(zuo) 8 個(ge) 64 位(wei)和 16 個(ge) 32 位(wei)整數,極大地(di)提升了數據的(de)處理能(neng)力。

TDengine 3.2.3.0 集成英特爾 AVX512!快來看看為你增添了哪些助力 - TDengine Database 時序數據庫

時(shi)序(xu)數(shu)據(ju)(ju)中存在(zai)大量相似數(shu)據(ju)(ju),而 TDengine 對時(shi)序(xu)數(shu)據(ju)(ju)的(de)處(chu)理(li)流(liu)程(cheng)是(shi)一(yi)致的(de)。對于(yu)這些無(wu)前后(hou)依賴性(xing)的(de)時(shi)序(xu)數(shu)據(ju)(ju),采(cai)用 AVX512 并行(xing)處(chu)理(li)數(shu)據(ju)(ju)可(ke)以顯著提(ti)升系(xi)統性(xing)能(neng)。特別(bie)是(shi)在(zai) TDengine 進行(xing)數(shu)據(ju)(ju)平均(jun)值(zhi)查詢(xun)時(shi),由于(yu)符合數(shu)據(ju)(ju)并行(xing)化特點,引入 AVX512 技術可(ke)有(you)效提(ti)升性(xing)能(neng)。

為了(le)節(jie)省數(shu)據(ju)存儲(chu)空間(jian),TDengine 在(zai)數(shu)據(ju)存儲(chu)前會(hui)進(jin)行(xing)編碼(ma)處(chu)理,去(qu)除數(shu)據(ju)中的(de)(de)冗余,并進(jin)行(xing)壓縮,從而(er)使最終存儲(chu)的(de)(de)數(shu)據(ju)占用空間(jian)大大減(jian)少(shao)。而(er)數(shu)據(ju)平均值的(de)(de)查詢過程(cheng)則是(shi)相反的(de)(de),需要(yao)對(dui)存儲(chu)的(de)(de)數(shu)據(ju)進(jin)行(xing)解(jie)碼(ma)和(he)計算。如下(xia)圖(tu)所示:

TDengine 3.2.3.0 集成英特爾 AVX512!快來看看為你增添了哪些助力 - TDengine Database 時序數據庫

其(qi)中算(suan)法 Simple8B、ZigZag、Delta of Delta 可以通過 AVX512 進(jin)行(xing)優化。

  • Simple8B 的 AVX512 優化

如(ru)果要將相同長度的(de)(de)數據使用(yong) Simple8B 存(cun)儲在(zai)(zai)一(yi)個(ge) 64bit 空(kong)間中(zhong),例如(ru)每個(ge)有(you)效數據占用(yong) 3bit,在(zai)(zai) 64bit 內(nei),索引(yin)占用(yong) 4bit,剩下的(de)(de) 60bit 可(ke)以(yi)存(cun)儲 20 個(ge) 3bit 的(de)(de)有(you)效數據。在(zai)(zai)解碼過程中(zhong),傳(chuan)統(tong)的(de)(de)方法是將每個(ge)有(you)效的(de)(de) 3bit 數據逐(zhu)個(ge)加(jia)載到 32bit 變量中(zhong),然后進(jin)行處(chu)理,這(zhe)將需要進(jin)行 20 次處(chu)理。

而(er)使(shi)用 AVX512 指(zhi)令(ling),可以一次(ci)(ci)并行將 8 個 3bit 的數據(ju)(ju)(ju)變換成 32bit 的數據(ju)(ju)(ju),這樣我們用很(hen)少的次(ci)(ci)數就可以處理(li)完(wan)所有數據(ju)(ju)(ju),大大提(ti)(ti)升了系統性能。如下(xia)圖,payload 是 64bit 的 simple8B 數據(ju)(ju)(ju),使(shi)用 AVX512 指(zhi)令(ling),通過并行同(tong)步移位(wei)和掩(yan)碼的方式,一次(ci)(ci)提(ti)(ti)取出 8 個有效(xiao)數據(ju)(ju)(ju),并裝載在 512bit 的寄存器里(32bit x 8),為 ZigZag 算(suan)法提(ti)(ti)供數據(ju)(ju)(ju)輸入(ru)。

TDengine 3.2.3.0 集成英特爾 AVX512!快來看看為你增添了哪些助力 - TDengine Database 時序數據庫

  • ZigZag 算法的 AVX512 優化

通過 AVX512 的(de)指令(ling),替代了(le)之前(qian)的(de) 8 次相同的(de)循(xun)環(huan)操作,實(shi)現了(le)一(yi)次并(bing)行處理(li) 8 個數(shu)據,利用(yong)減法和(he)移位異(yi)或操作,將數(shu)據還(huan)原成 ZigZag 編碼前(qian)的(de)數(shu)值(zhi)。在優化后(hou),只用(yong)了(le)很少的(de) AVX512 指令(ling),就實(shi)現了(le)循(xun)環(huan)多次才能(neng)(neng)獲得的(de)結果,極大的(de)減少了(le)指令(ling)數(shu),提升了(le)系(xi)統的(de)性能(neng)(neng)。

TDengine 3.2.3.0 集成英特爾 AVX512!快來看看為你增添了哪些助力 - TDengine Database 時序數據庫

AVX512 的編譯環境和運行環境

為(wei)了充(chong)分利用(yong) AVX512 指令(ling)集,建(jian)議使用(yong) gcc 版(ban)本(ben) 9 以(yi)上的編譯器進行(xing)編譯,以(yi)獲得更完善(shan)的 AVX512 指令(ling)支(zhi)(zhi)持(chi)。在運行(xing)時,應(ying)檢(jian)查 CPU 是(shi)否支(zhi)(zhi)持(chi) AVX512 指令(ling),只有(you)在支(zhi)(zhi)持(chi) AVX512 的 CPU 上運行(xing) AVX512 指令(ling),才能做(zuo)到和其他非 AVX512 的 CPU 的代碼兼(jian)容。

總而言之,通(tong)過利(li)用英特爾? AVX512 高級向量擴展指令,TDengine 成(cheng)功優化了數(shu)據(ju)處理(li)算法(fa),提升了時(shi)序(xu)數(shu)據(ju)庫(ku)的性(xing)(xing)能(neng)。特別是針對 Simple8B 和(he) ZigZag 算法(fa)的優化,讓(rang)時(shi)序(xu)數(shu)據(ju)的處理(li)得以實(shi)現更高效(xiao)的并行計(ji)算,通(tong)過一次性(xing)(xing)處理(li)多(duo)個(ge)數(shu)據(ju),減少了指令數(shu),顯著提升了系統的性(xing)(xing)能(neng)表(biao)現。

開啟 AVX512 指令集優化以后,在 TDengine 新版本 3.2.3.0 上(shang),解(jie)碼(ma)整數(shu)類型數(shu)據的(de)性(xing)能(neng)是軟件解(jie)碼(ma)性(xing)能(neng)的(de) 1.82 倍,是 AVX2 指令集解(jie)碼(ma)性(xing)能(neng)的(de) 1.28 倍。這些(xie)優(you)化措施也讓 TDengine 在處(chu)理海量數(shu)據的(de)查(cha)詢和分析(xi)過程中更加高效,為實時應用場景提(ti)供了更強(qiang)大(da)的(de)支持。

注:AVX指令集支持(chi)的開(kai)啟,需要(yao)用戶自己編(bian)譯(yi)代(dai)碼并打開(kai)配置開(kai)關。具(ju)體操作可以聯系(xi) TDengine 官方團(tuan)隊。

特別鳴謝:在本(ben)次 TDengine 與(yu) AVX512 的(de)優化(hua)集(ji)成(cheng)工(gong)作中,英特爾數據(ju)中心與(yu)人工(gong)智能事業部的(de)高級軟件架(jia)構師蔣鍇,憑借專業知識(shi)和技術能力,積極推動著(zhu)優化(hua)工(gong)作的(de)進(jin)展(zhan),為(wei) TDengine 的(de)發展(zhan)貢獻著(zhu)重要(yao)的(de)力量。

PR 鏈接:

TDengine 3.2.3.0 集成英特爾 AVX512!快來看看為你增添了哪些助力 - TDengine Database 時序數據庫