Single Instruction Multiple Data
SIMD 利用擴展 bit 的儲存空間,同一運算來達成加快效率,AVX 支援128、256 bit 為整合單位
4個 16 bit (int)放入 128 bit 中, double 在linux下 align為32(windows則是64)
int tmp[4] attribute((aligned(16)));
16 為 16bytes, 需要align機制, 來將tmp整合128bits
順帶一提,以下是struct 的align機制
struct example{
char data1;
short data2;
int data3;
char data4;
};
struct 的 align 是以當前型態別的倍數來存放
這樣可以一次取出struct,在取各值,如果要節省空間則可以用#pragma pack(16)
for i in ` seq 100 5000 25000 `; do \
變數 初始值 counter 末值 同一行
使用openMP thread 4 ,跳動非常大,但整體而言曲線較低於openMP thread 2