Try   HackMD

2024-04-16 問答簡記

檢討第五次作業

williamS

第五次作業

  • EWMA 在 Linux Kernel 中哪邊有用到呢?
    • 可做 CPU sched 的 estimated utilization。

weihsinyeh

第五次作業

  • weakly-ordered V.S. strongly-ordered
    • 當 CPU 速度比 Main Memory 快上許多時,在硬體架構設計上,cache 設計讓 CPU load / store 省去每次存取 Main Memory 的成本,但還是受限於 instructions 的 execution orders。
    • store buffer暫存 CPU store 指令,讓 CPU 不須等待 store instruction 完成即可進行下個 instruction ,(帶來什麼優點呢?) 允許 CPU 處理指令可不受限於 execution orders 。然而,在多核處理器系統中,需要處理 Cache Coherence 的問題。所以,還多了廣播給不同 CPU core 上的 cache 以及等待其他 CPU cache 完成對應 cacheline update 的 overhead。
    • invalidate buffer 就沒有聽清楚了。
  • rdtsc V.S. C STL gettime()
    • C STL gettime() 量測精準度到 microsecond 等級,執行多次取平均又可能會涵蓋其他不易觀察的 operations,例如:timer interrupt。
  • about magic number 0xbfff978
    • debug Linux Kernel 的方式。
      • 西元 2000 年時, 虛擬化 Virtualization 技術還未成熟,需要多一台機器,透過特殊的 cable 來連接要觀察的 Linux 系統。
      • 後來可透過在 Linux Kernel 預先註冊 Exception Handler 來觀察特定事件被觸發時的 CPU 狀態。

david965154

fork 仍需要時間成本,尤其是在遞迴期間才做 fork ,因此會不斷的進行 fork 直到 fork_count 到達設定值或者 partition 結束。不過剛剛有看到若設定值過大,執行時間會變很長的同時還會導致排序錯誤,但為什麼會導致排序錯誤 ?

invoke mmap(2) to share among forked processes.
sudo sysctl -w kernel.sched_child_runs_first=1,以便要求 Linux 排程器 (CFS) 讓 child process 優先於 parent process 執行

改進 concurrent (fork) merge sort:

  1. 避免遞迴,降低 fork 的成本
  2. 預先 fork (pre-forking)
  3. 實作 workqueue // 參見 案例: Thread Pool 實作和改進

millaker

ioctl
demand paging
page size: 4KB (trade-off)
Arm64: 4KB, 16KB, 64KB
CS:APP Chapter 9 (virtual memory)
https://docs.kernel.org/admin-guide/mm/hugetlbpage.html (HugeTLB)

KPTI dramatically increased this cost: directly, by switching the active page table at each context transition
=> ESCA: Effective System Call Aggregation for Event-Driven Servers

jouae

"The purpose of computing is insight, not numbers." by Richard Hamming, Numerical Methods for Scientists and Engineers (1962).

第 9 週測驗 中提及的矩陣乘法,為何不同大小的方陣不能相乘?簡單歸納兩個結論:

  • 矩陣表示式是根據線性轉換而來
  • 矩陣相乘是線性轉換間的合成

線性代數(linear algebra) 字面意思是在討論線性性質與代數結構,與一般工程數學或是工程學中的線性代數不同,數學系相關的線性代數出發點是向量空間(vector space),所謂向量空間其實就是代數中的體(field)的延伸,對於一個體

(F,+,×) 與一個集合
V
會滿足十個公理

從向量空間開始接續會討論到線性相依、線性獨立、基底,再來到線性這個性質

  • 對兩個體為
    F
    的向量空間
    V,W
    ,函數
    T:V1V2
    為線性轉換,對所有係數
    cF
    a,bV
    滿足以下特性:
    • 加法線性:
      T(a+b)=T(a)+T(b)
    • 係數乘法:
      T(ca)=cT(a)

線性組合、基底等等這些概念都是息息相關。由有序基底

β={v1,v2,,vn} 生成的向量空間
V
,藉由係數
a1,a2,,an
對基底元素的線性組合,組合出任意向量
xV
表示為
x=i=1naivi

且每個係數皆唯一。

而以

β 為基底的
x
座標向量表示為
[x]β=[a1a2an]

讓向量空間

V 的有序基底為
β={v1,v2,,vn}
和向量空間
W
的有序基底為
γ={w1,w2,,wm}
,以及一線性轉換
T:TW
則對
1jn
存在唯一係數
aijF
1im
使得
T(vi)=i=1maijwi,for 1in.

  • 藉由上述的表示法,可以得到一藉由基底
    β
    γ
    線性轉換
    T
    的矩陣表示式
    A=[T]βγ

書本 p.81 例子 3,對線性轉換

T:R2R3
T(a1,a2)=(a1+3a2,0,2a14a2).

β
γ
為標準有序基底。則
T
由基底
β
和基底
γ
構成的矩陣表示法為
T(1,0)=1e1+0e2+3e3,T(0,1)=3e1+0e24e3

[T]βγ=[130034]

如果把有序基底的順序改一下變成

γ={e3,e1,e2} 則矩陣表示法為
[T]βγ=[341300]

再來探討下矩陣乘向量這個操作的數學含意。令
x=(1,1)T

[T]βγx=1[103]1[304]=[207]

可以看到
[T]βγ
的行向量,藉由
x
中的元素為係數做線性組合。

回到線性轉換以函數觀點來思考

T(1,1)=T(1,0)T(0,1)=(1e1+0e2+3e3)(3e1+0e24e3)
其實就是先將基底
β
中的元素線性組合出
x
後以線性轉換得到函數映射至
R3
基底元素的線性組合。

總結就是矩陣是線性轉換的有序基底間的映射關係,而矩陣乘向量是將一空間的座標向量映射至另一個空間的座標向量

接續討論矩陣乘矩陣是什麼?先講結論矩陣乘矩陣代表線性轉換的合成,也因為是函數合成,除非特定情況下矩陣相乘不滿足交換律

  • T:VW
    U:WZ
    為線性轉換,其中
    UT:VZ
    也為線性轉換。讓
    α={v1,v2,,vn}
    β={w1,w2,,wm}
    γ={z1,z2,,zp}
    為向量空間
    V,W
    Z
    各自的有序基底且矩陣表示式為
    A=[T]αβ
    B=[U]βγ
    。則
    AB=[UT]αγ
    1jn

    (UT)(vj)=U(T(vj))=U(k=1mBkjwk)=k=1mBkjU(wk)=k=1mBkj(i=1pAikzi)=i=1p(k=1mAikBkj)zi=i=1pCijzi.

其中

C=AB 為矩陣相乘的結果,也是線性轉換
UT
的矩陣表示式。至此我們可以瞭解矩陣乘矩陣和線性轉換合成之間的關聯。

而關於行列式的部分,強烈建議看看 行列式 | 線性代數的本質 第五章 by 3Blue1Brown 從幾何座標的角度講解

2×2
3×3
行列式值在幾何上的意義。

其中很重要的一個部分

det(A)=0 也就是矩陣
A
中的行或列向量並非線性獨立,這告訴我們矩陣的
rank(A)dim(A)
換言之
A
並非以有序基底映射的矩陣表示式,也因為並非基底所以無法生成(span)原本線性轉換定義域的全空間。

影片 3:05 處 可以看到兩向量張開的面積被壓縮成一條線,就是在告訴我們這個矩陣中的行或是列向量有線性相依的情況,無法生成原本的全空間,並非一組基底形成的矩陣表示式。

最後討論下影片最後的問題:
行列式

det(AB)
det(A)
det(B)
的關係,其中
det(A)
det(B)
不為零,且
A
B
為大小相同的方陣可以寫成
det(AB)=det(A)det(B)

從計算可以證明這件事情,但從線性轉換跟幾何的角度思考,這件事情解釋起來就很簡單。由於皆為方陣,定義域和對應域的向量空間大小皆相同,
AB=[UT]αγ
以線性轉換角度來看只是把一個有序基底
α
換成另一個有序基底
γ
。將上述行列式的等號改以基底變換呈現為
det([UT]αγ)=det([T]αβ)det([U]βγ)

等式右邊
det([T]αβ)
是將面/體積從有序基底
α
映射至
β
伸縮的係數,同理
det([T]βγ)
。則兩個行列式相乘的過程就是,從
α
映射至
β
做一次伸縮後得到的面/體積變化係數,乘上以基底
β
為坐標系做一次映射至
γ
坐標系的面/體積變化係數。

  • 參考資料