2016q3 Homework1(Compute Pi) === # SIMD * 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 是以當前型態別的倍數來存放 1. data1 , char的align 為 1 放置0X00 2. data2 , short的align 為 2 放置0X02, 要2的倍數所以0X01時 padding 3. data3 , int的align 為 4 放置0X0 4. data4 , char的align 為 1 放置0X09 5. 因為目前最大align 數為 32,所以struct 也要以4的倍數結束,所以要 padding 這樣可以一次取出struct,在取各值,如果要節省空間則可以用#pragma pack(16) * ==[Basics of SIMD Programming](https://www.kernel.org/pub/linux/kernel/people/geoff/cell/ps3-linux-docs/CellProgrammingTutorial/BasicsOfSIMDProgramming.html)== * ==[Data Structure Alignment ](http://kf99916cs.blogspot.tw/2012/10/data-structure-alignment.html)== # OpenMP # 結果圖 * Makefile ``` for i in ` seq 100 5000 25000 `; do \ 變數 初始值 counter 末值 同一行 ```  使用openMP thread 4 ,跳動非常大,但整體而言曲線較低於openMP thread 2 - 因該可以設平滑取線, smooth acsplines ,目前會有負數加值的錯? - 修改MAKEFILE 的迴圈,使得可以不以+1來紀錄,可以+5、+10
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up