<style> h2.part{color:#000000;} h3.part{color:#D92424;} h4.part{color:#005BB0;} h5.part{color:#FD6F0A;} h6.part{color:#4400B0;} </style> # 2017q1 Homework4的觀念 (mergesort-concurrent) 開發環境 ``` boring@boring-K55VM:~/paul5566/mergesort-concurrent$ x86info -c The program 'x86info' is currently not installed. You can install it by typing: sudo apt install x86info ``` direct mapped cache http://sit.iitkgp.ernet.in/~coavl/images/dmc5.png direct mapped cache CPU接受到一個instruction(處理一個指令就是要拿資料) ex ADD,SUBTRACT的指令要讀取資料來運算就會需要拿資料 因此需要一種方式去定位(cahche有很多個"block",要去拿資料) mutrace 可用來偵測 lock contention,使用很方便,不需要重新編譯程式碼。 圖裡面的圈(=)tag 和 adreess的tag是不是一樣的判斷 1(相同)或是0(相異) 然後再把"V"Valid bit做AND運算因為這樣可以確認有沒有cache hit ex: 發生cache miss的那個line(block的值)的valid則是0 這樣AND運算完會得到是否有 cache hit(這個資料是否是你要的) ``` $ sudo apt-get install mutrace [sudo] password for boring: ``` [thread](http://www.csie.ntu.edu.tw/~r92094/c++/pthread.txt) [multi_thread](https://sls.weco.net/node/21324) [C 的 Thread Pool 筆記](http://swind.code-life.info/posts/c-thread-pool.html) 先看list.h因為排序的資料所以看node Makefile 裡的sort是linuix ``` 39 check: sort 40 # Generate testing data 41 @bash scripts/gen-random-numbers.sh $(NUM_OF_DATA) $(TEST_DATA_FILE) 42 # Sort the testing data first to generate ground truth 43 @sort -g $(TEST_DATA_FILE) > $(SORTED_DATA_FILE) 44 # Time for user program to sort the testing data, and ignore first the 3 lines of output. 45 # Because we only want the sorting result. 46 @./sort $(THREADS) $(TEST_DATA_FILE) | tail -n +4 > $(SORTED_RESULT) 47 @bash scripts/compare.sh $(SORTED_DATA_FILE) $(SORTED_RESULT) ``` 2. Mutex Lock and Lock Contention pthread_craete(讓執行序去平行處理某件事的時候) tid(thread的id)