# 2017q1 Homework5 (matrix)
contributed by < `changyuanhua` >
## 開發環境
* 輸入指令 ` lscpu `
```
Architecture: x86_64
CPU 作業模式: 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
每核心執行緒數:1
每通訊端核心數:4
Socket(s): 1
NUMA 節點: 1
供應商識別號: GenuineIntel
CPU 家族: 6
型號: 94
Model name: Intel(R) Core(TM) i5-6300HQ CPU @ 2.30GHz
製程: 3
CPU MHz: 799.890
CPU max MHz: 3200.0000
CPU min MHz: 800.0000
BogoMIPS: 4608.00
虛擬: VT-x
L1d 快取: 32K
L1i 快取: 32K
L2 快取: 256K
L3 快取: 6144K
NUMA node0 CPU(s): 0-3
```
## 閱讀 Matrix Multiplication using SIMD
* 閱讀 [Matrix Multiplication using SIMD](https://hackmd.io/s/Hk-llHEyx)
## 實做 sse 和 sse_prefetch 版本
* 參考 [0140454 的 matrix-multiplication](https://github.com/0140454/matrix-multiplication)
* 修改 matrix_naive 原始程式碼並與 [0140454 的 matrix-multiplication](https://github.com/0140454/matrix-multiplication) 內的 sse 和 sse_prefetch 做結合
* [程式碼](https://github.com/changyuanhua/matrix_oo)
* `make check` 後
```
Execute tests/test-matrix...
matrix:
34 44 54 64
82 108 134 160
34 44 54 64
82 108 134 160
equal
ssematrix:
34 44 54 64
82 108 134 160
34 44 54 64
82 108 134 160
equal
sse_prefetchmatrix:
34 44 54 64
82 108 134 160
34 44 54 64
82 108 134 160
equal
OK!
```
## 考慮不同大小的矩陣