# 2017q1 Homework3 (software-pipelining) contributed by <`csielee`> ## 開發環境 OS: ubuntu 16.04 LTS Architecture: x86_64 CPU 作業模式: 32-bit, 64-bit Byte Order: Little Endian CPU(s): 4 Model name: Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz CPU MHz: 2500.109 CPU max MHz: 2700.0000 CPU min MHz: 500.0000 L1d 快取: 32K, 8-way Set-associative L1i 快取: 32K, 8-way Set-associative L2 快取: 256K, 8-way Set-associative L3 快取: 3072K, 12-way Set-associative 記憶體: 8G ## 修改Makefile產生不同執行檔(配合編譯選項 -D) 主要是 gcc 編譯階段的 -D 選項,在 preprocesser 的時候去定義某些參數(就是 #define 的效果) 在配合 main.c 裡面的 #ifdef 的前置處理 藉此產生不同的執行檔 Makefile ```clike SSE = -DSSE=1 SSE_PREFETCH = -DSSE_PREFETCH=1 NATIVE = -DNATIVE=1 all: $(GIT_HOOKS) main.c $(CC) $(CFLAGS) $(SSE) $(SSE_PREFETCH) $(NATIVE) -o main main.c $(CC) $(CFLAGS) $(SSE) -o main_sse main.c $(CC) $(CFLAGS) $(SSE_PREFETCH) -o main_sse_prefetch main.c $(CC) $(CFLAGS) $(NATIVE) -o main_native main.c ``` :::danger 雖然 -D 很好用,但要注意必須在編譯階段前的前置處理階段使用 e.g. gcc -DMACRO -o main main.o 是沒有效果的 ::: >> 這也是為何我們通常會將「編譯」和「連結」兩階段拆開,以避免這種誤解 [name="jserv] ## 效能差異原因 ## 參考資料
×
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