王豊惟

@ivywang2015

Joined on Aug 27, 2020

  • Ch 1 Introduction 以前的電腦元件在相近時間發展,因此效能差異不大,但是隨著電腦基礎結構的穩定,各個元件的發展速度有所差異,特別是大型儲存裝置 (mass storage) 和記憶體 (memory),其效能速度相較其他元件慢很多,造成瓶頸。 大型儲存裝置的效能問題可以透過 軟體技術 解決OS 把較常用到資料放在主記憶體 (main memory) 加入快取 (cache) 記憶體的效能問題需要透過 硬體技術 解決 RAM hardware design (speed and parallelism) Memory controller designs CPU caches
     Like  Bookmark
  • contributed by < st10740 > 閱讀〈因為自動飲料機而延畢的那一年〉的啟發 作者最讓我敬佩的地方是面對多次的失敗仍然不放棄,尤其是過程中需要不斷地進行各種繁瑣的測試,只為了解決其中一個飲料機製作的問題。此外為了提高測試的效率,還想了新的解決辦法,我特別記得其中一段是作者發現每次更改一個小地方就需要一個禮拜的時間等待測試成品做出來,於是他轉了一個彎,改成用比較快速的方式將想法實作成可以測試的模樣,提升了測試的速度,展現了他面對問題靈機應變的能力。 文中亦不斷提到現實與理想的差異,並強調「這些基本到不行、看起來不難的東西,動手做之後才會發現很多細節要注意。」這讓我發覺自己是個害怕失敗的人,理想的世界很美好,如果不動手做就不會發現有甚麼問題了,這使我常常不願意動手實作,缺少了許多學習的機會,也讓我想起當初看到 lab0 中要以 Linux 核心原始程式碼風格的鏈結串列實作佇列操作時,我錯誤地以過去自己實作佇列操作的經驗,認為可以很快地完成,但直到自己實際投入之後才發現,有許多細節若沒有注意到會造成執行結果不如預期,需要花大把的時間除錯。但是「只有把東西生出來做實驗,你才會知道該如何改進。」雖然會遇到很多問題,但是這些都是精益求精的必經之路。 我一開始想要選修這門課的原因是希望能夠增強自己在電腦科學領域的能力,讓自己成為在專業領域有價值的人具備解決各種大大小小問題的能力。然而因為過去不夠了解自己的不足,要還許多技術債和改進做事的態度,我在一開始的幾個禮拜都在追趕教材和作業,雖然有在閱讀教材和觀看影片,但是有太多我不能馬上理解的知識,需要停下來思考一陣子再繼續往前,導致花的時間比預期多了好幾個小時;雖然有將作業交出去,但是進度往往不及其他優秀的同學,內容的豐富度和思考的層面也有所落差。另外在課程中老師不斷強調的學習態度讓我印象深刻,像是作業的描述要寫得清晰讓人理解、要參考第一手資料而不能只是 Google 搜尋、理解別人的實作理由要看 git log 或是相關文件不能舉燭、提出一個結論要有實際的實驗數據等等,這些都是我不擅長並還在學習的,雖然做起來很辛苦,但是我相信培養了這些習慣以後,未來遇到任何問題都能夠比起過去的我更有邏輯地找到解決辦法。在課程和實驗室工作的雙重壓力下,因為有許多落後的進度需要補齊,到後來漸漸發現自己亂了腳步,忘了當初修課的決心,於是正好藉由這個機會檢討之後課程的投入方式,我想分配好每週至少投入的時間,分別用於補齊前面的教材作業以及進行新作業,並設定當週要完成的事項,因為正如文章中說的:「這個世界比任何人都殘酷,也比任何人都公平,犧牲了多少就會得到多少。」,雖然速度慢了點,我相信只要持續地投入,一定會變得越來越強,成為理想中的我。 課程教材提問
     Like  Bookmark
  • contributed by < st10740 > 第 1 週測驗題 測驗 1 此測驗題參考〈Optimized QuickSort — C Implementation (Non-Recursive)〉,實作非遞迴的快速排序法,然而上述提及的方法使用的資料結構為陣列,與本題使用的鏈結串列不同,故在進行分解時的處理方式不同,不過採取的非遞迴方法策略相同,都是使用堆疊 (stack) 來模擬原本的遞迴行為。 本題用來存取欲進行排序的鏈結串列節點的結構體如下: typedef struct __node { struct __node *left, *right;
     Like  Bookmark
  • contributed by < st10740 > Reviewed by Terry7Wei7 :::warning [name=Terry7Wei7] TODO : 研讀論文〈Dude, is my code constant time?〉 完成指令論文的閱讀和實驗 :::
     Like  Bookmark
  • contributed by < st10740 >
     Like  Bookmark
  • contributed by < st10740 > 第三週測驗題 測驗三 這段程式碼的目的是計算以 2 為底的對數,其做法是找到該數字的二進位表示中,最高位元為 1 的索引值,而該索引值即為以 2 為底的對數值。 然而,若是透過線性搜尋 (Linear search) 的方式會找太慢,因此以下方法採取二分搜尋法 (Binary search) 的方式進行搜索。首先會先利用 while (i >= ...) 確認左半邊的位元是否存在 1,若存在則搜尋左半邊,並將 result 加上一半的位元數,若左半邊不存在為 1 的位元,則搜尋右半邊,並不斷縮小範圍直到找到為止。 static size_t ilog2(size_t i) {
     Like  Bookmark
  • contributed by < st10740 > :::info Targets : [x] 研讀 RVVM 文件和原始程式碼 (不用花太多時間 Google 搜尋),學習 RV32 相關的指令集模擬 [ ] 試著將 https://github.com/riscv-non-isa/riscv-arch-test 在 RVVM 中執行,需要用 RV32I 和相關的 extension (如 RV32IMAC),過程中你可能會遇到 RISCOF 的議題,可參見: https://hackmd.io/@Risheng/rv32emu [ ] RVVM 原本是系統模擬器,若要執行個別的 ELF 程式,需要運用其 ELF
     Like  Bookmark
  • contributed by < st10740 > Environment VMware Ubuntu 22.04 Chisel Bootcamp Use Docker to Run Chisel Bootcamp After I installed Docker Engine on Ubuntu, I tried to run docker run -it --rm -p 8888:8888 sysprog21/chisel-bootcamp to download chisel-bootcamp docker image and run it. I got the following error message: docker: permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/create": dial unix /var/run/docker.sock: connect: permission denied.
     Like  Bookmark
  • contributed by < st10740 > Question Selection Question I choose the question from 陳浩文 (Implement palindrome detection and using CLZ). Motivation The reason why I choose this question is that I want to try another algorthm to implement palindrome detection with less number of lines and compare the performances between them. Modified Code
     Like  Bookmark
  • contributed by <st10740> Linear convolution using bfloat16 Idea bfloat16 bfloat16 format was developed by Google Brain for artificial intelligence purpose to accelarate computing and save storage, which uses only half number of bits of FP32 to represent a floating point number. The smaller number of bits speedup arithmetic operations such as addition, multiplication and so on. Below is the comparision of FP32 and BF16 in visual. FP32
     Like  Bookmark