NEON指令化並行技術簡介和簡單使用

2021-10-24 22:30:07 字數 1523 閱讀 3922

向量化simd是一種單指令多資料的並行執行方式。具體而言,向量化是指相同指令在硬體向量處理單元上對多個資料流進行操作。這些硬體向量處理單元也被稱為simd單元。

補充:cpu在單位時間內(同一時間)能一次處理的二進位制數的位數稱為字長。1位元組是8位字長。

如果每個執行緒能夠充分利用每個處理器核心的simd浮點暫存器進行資料並行,那麼可進一步提高程式的效能。

以簡單的加法運算為例

neon技術是在arm cortex™上使用的,是乙個實現armv7-a或armv7-r架構的系列處理器。

arm neon技術建立在simd的概念上,支援128位向量操作,也稱為單指令多資料向量模式。

自動向量化:在gcc中啟用自動向量化使用命令列選項:

-ftree-vectorize

-mfpu=neon

-mcpu 來指定核心或架構。

在優化級編譯-o3意味著-ftree向量化。如果沒有指定-mcpu選項,那麼gcc將使用其內建的預設核心。

手動向量化(主要為使用下圖中的intrinsics內聯函式方式)

資料型別

《基本型別》x

指令名稱《指令名》[字尾]_《資料基本型別簡寫>

c**編寫流程:1->定義neon向量 2->讀取資料 3->處理資料 4->回寫資料

void

neonax

(float a[

1000],

float

*x,int len)

y[i]

=vgetq_lane_f32

(sum_vec,0)

+vgetq_lane_f32

(sum_vec,1)

+vgetq_lane_f32

(sum_vec,2)

+vgetq_lane_f32

(sum_vec,3)

; sum_vec=

vdupq_n_f32(0

);}}

向量加實現:

void

add_neon1

(float

*c,float

*a,float

*b,int count)

}

持續補充…

虛擬化技術簡介

前言 openstack作為乙個開源的雲計算平台,利用底層虛擬化技術和底層儲存服務,提供了可擴充套件 靈活 適應性強的雲計算服務。虛擬化技術有很多,在開源領域主要是kvm和zen,然而openstack對kvm的支援明顯要好於zen。傳統伺服器架構與虛擬化伺服器架構 傳統伺服器架構 以一台物理伺服器...

VMware虛擬化技術簡介

vmware虛擬化軟體產品主要針對4類使用者而設計的。這些使用者是 入門的初級使用者,企業級桌面使用者,專業的軟體開發和技術人員,以及資料中心使用者 這些產品都是基於 硬體 的軟體產品。在x86架構計算機虛擬化市場裡,知名度頗高。vmware虛擬化技術產品一覽 1.初級使用者免費產品 vmware ...

VMware虛擬化技術簡介

vmware虛擬化軟體產品主要針對4類使用者而設計的。這些使用者是 入門的初級使用者,企業級桌面使用者,專業的軟體開發和技術人員,以及資料中心使用者 這些產品都是基於 硬體 的軟體產品。在x86架構計算機虛擬化市場裡,知名度頗高。vmware虛擬化技術產品一覽 1.初級使用者免費產品 vmware ...