浮點數與數值考量 練習題 (Practice - Floating-Point Data Representation)



Question 1 - IEEE-754 三欄位與還原公式 [recall]

情境/題目:IEEE-754 把一個浮點數值拆成哪三個位元群組?寫出由 (S, E, M) 還原數值的公式 (Eq. A.1),並說明 E 與 M 各自決定什麼。

Question 2 - 正規化尾數與隱含前導 1 [recall]

情境/題目:為什麼 IEEE 規定尾數一定寫成 1.M 形式而不是任意 0.xx?這個規定如何「白賺」一個 bit 的精度?

Question 3 - 指數的超量 (Excess/Biased) 編碼 [recall]

情境/題目:IEEE 用 excess/biased 編碼儲存指數 E。bias 公式是什麼?為何不直接用 two's complement 儲存 E?以 3-bit 指數為例說明。

Question 4 - 可表示數值的觀察 [recall]

情境/題目:在 representable numbers 的數線上,exponent bits 與 mantissa bits 分別控制什麼?為什麼代表數越靠近 0 越密集?

Question 5 - Denormalization vs Abrupt Underflow [recall]

情境/題目:normalized 格式無法表示 0 且在 0 附近有巨大空洞。abrupt underflow 與 denormalization 兩種補救法各怎麼做?IEEE 採用哪一種、效果差異為何?

Question 6 - 特殊位元樣式與 single/double 配置 [recall]

情境/題目:列出 IEEE 用 exponent 全 1 / 全 0 表達的四種特殊意義 (含 mantissa 條件)。single 與 double 的 S/E/M 位數各是多少?double 比 single 精確多少?

Question 7 - Signaling vs Quiet NaN [recall]

情境/題目:IEEE 有哪兩種 NaN?它們在 mantissa 最高位 (MSB) 與運算行為上有何不同?GPU 對哪一種的支援有限制?另外 NaN 各由什麼運算產生?

Question 8 - Precision vs Accuracy 與 ULP [recall]

情境/題目:precision 與 accuracy 分別由什麼決定?ULP 是什麼?正確捨入的加減法最大誤差是多少?為什麼除法與超越函數可能誤差更大?

Question 9 - 數值穩定性與 Gaussian Elimination [recall]

情境/題目:「numerically stable」的定義是什麼?以 Gaussian elimination 為例,什麼輸入會讓 naive 演算法失敗 (即使解存在)?修正方法叫什麼?

Question 10 - Gaussian Elimination 的 CUDA 結構 [recall]

情境/題目:書中如何用 CUDA 平行化 Gaussian elimination?描述 thread 與 row 的對應、每步的同步點,以及完成消元的 thread 之後做什麼。

Question 11 - 手算 0.5D 的 6-bit 編碼 [application]

情境/題目:用書中 6-bit 教學格式 (1-bit S、3-bit E excess-3、2-bit M) 編碼 0.5D,寫出 S/E/M 各欄位與最終 6-bit 位元串,並說明每步推導。

Question 12 - Alignment Shifting 與 0.5 ULP [application]

情境/題目:在 5-bit 格式 (2-bit M) 下計算 1.00B × 2^1 + 1.00B × 2^-2。寫出對齊位移過程、理想結果為何不可表示,以及最終引入多少 ULP 誤差。

Question 13 - Round-to-Zero 與迭代 sin() 的 ULP 誤差 [application]

情境/題目:(a) 若加法器只能 round-to-zero (往 0 截斷),最大 ULP 誤差是多少 (習題 3)?(b) 某 sin() 硬體每 cycle 產生 2 個正確 mantissa bit、迭代 9 cycle、其餘補 0,且隱含的 1. 也須由硬體產生。對 IEEE single 而言最大 ULP 誤差約多少 (習題 5)?

Question 14 - 循序 vs 平行 Reduction 的準確度 [analysis]

情境/題目:在 5-bit 格式對 1 + 1 + 0.25 + 0.25 (精確值 2.5) 做加總。比較「循序左到右」與「平行 reduction tree」兩種順序的結果,解釋差異成因,並說明這對平行數值演算法的啟示與改善技巧。

Question 15 - Pivoting 在單 Block vs 跨 Block/Cluster 的成本 [analysis]

情境/題目:pivoting 需要檢查並交換分散在各 thread 的係數。比較「整個系統放在單一 block 的 shared memory」與「系統跨多個 block 或多個 cluster node」兩種情況下 pivoting 的實作成本,並說明 communication-avoiding 的兩種對策及其代價。