並行筆記 SIMD程式設計

2021-09-19 20:45:22 字數 1228 閱讀 5166

single instruction multiple data

也就是單指令流和多資料流,對於多資料流進行相同的操作。

乙個簡單的例子就是向量的加減。

simd擁有單個全域性控制單元,而後者擁有多個控制單元+處理元素。

基於資料的資料平行計算。

規律的資料訪問模式:資料在記憶體中連續儲存。

短資料型別

流式資料處理……

mark:原因不明,之後補上解釋。

具有更大的併發度。

設計比較簡單(應該是與mimd對比,只需要重複功能單元即可)。

晶元尺寸更小。

程式設計師開發時必須顯式接觸硬體。

simd並行開發,可以把多次相同的算術運算簡化為乙個simd操作多個取數/存結果的操作,可以變成乙個對於更寬的記憶體的一次操作(前提是記憶體需要連續)。

低層程式設計要求:

資料必須對齊。

資料放在連續區域儲存。

控制流問題可能會引入更高的複雜性。

打包、解包開銷

所謂的打包,指的是把運算物件拷貝到連續記憶體區域。

解包,指的是把運算結果拷貝回記憶體。

對齊開銷

對齊的定義是位址的開始總是向量長度的整數;對於起始位址的偏移是向量長度的整數倍。

mark:關於ppt中的調整沒有看明白,待補充。控制流開銷

控制流開銷來自當控制流存在時,所有的路徑都執行。這說明一般情況下,當存在控制流問題時,simd不是乙個好的程式設計模型

以下述為例:

對於所有元素都執行了兩個路徑的計算,只是最後根據判斷條件進行合併。

這裡的0xa即1010,作用是掩碼;如果為1則取第乙個引數向量的數字,如果為0則取第二個引數向量的數字。

shuffle(d, d, 0xb1)

這裡的0xb1是八位二進位制,分成四組;前兩組是對應第二個引數的第幾位,後兩組是對應第二個引數的第幾位。

學習筆記 並行程式設計

環境配置見前篇 pragma omp parallel num threads 執行緒數 pragma omp parallel for num threads 執行緒數 pragma omp critical 矩陣乘法 不定長文字分組void func 每個執行緒執行的函式 void rank p...

SIMD資料並行(四) 三種結構的比較

在計算機體系中,資料並行有兩種實現路徑 mimd multiple instruction multiple data,多指令流多資料流 和simd single instruction multiple data,單指令流多資料流 其中mimd的表現形式主要有多發射 多執行緒 多核心,在當代設計的...

c 並行程式設計 平行計算筆記 001

平行計算筆記 001 安裝mpi,openmp動力 需要用高效能計算求解微分方程,這也將是我這接下來三年的學習方向之一。目前以mpi為主,將來肯定會涉及到異構計算。希望寫這些筆記記錄我的修煉歷程。目前的學習目標及就是掌握將偏微分方程組的差分形式稠密化。對將來的看法 主要的方向是平行計算的程式開發。希...