CS6290 HPCA
OMSCS 2024 Springに履修したCS 6290: High Performance Computer Architectureのコースが今週終了した。学んだトピックはシラバスにある通り以下の通り。
- Introduction, Metrics and Evaluation; Pipelining Review
- Branch Prediction; Predication
- ILP and Instruction Scheduling
- ROB
- Memory Ordering
- Compiler ILP and VLIW
- Cache Review and Virtual Memory
- Advanced Caches; Memory
- Storage and Fault Tolerance
- Multi-Processing
- Cache Coherence
- Synchronization
- Memory Consistency
- Many-Core
課題について
課題は全部で4つ。Project 0 - 3まであった。SESCというシュミレータを動かし、任意のプログラムを実行、ベンチマークを解析してレポートを行う。コード変更自体は数行で完了するのだけれど、SESCの数万行のC++コードを眺めて、処理を理解するのはいい経験になった。Project 2, 3はペアで取り組むことも可能。自分の場合はとてもラッキーで、優秀なパートナーと相談しながら取り組むことができた。そのおかげでスムーズに課題を進めることができ、Project3に関しては、期限の3週間前に提出することができた。生徒間の交流が取りにくいオンラインプログラムだが、今回はペアを組んで課題に取り組む機会を得ることができて本当に良かったと思う。
良かったこと
普段の仕事では意識しない低レイヤーの実装・最適化について理解を含めることができたのは良かった。Instructionのスケジューリング、Branch Prediction, Multi ProcessorにおけるCache Coherenceなど、計算機の設計を考える上で重要なコンセプトについて知識が深まったと思う。また、Cache replacement policies1などのコンセプトは普段の仕事でも十分に活かせる知識だと思う。今ではJeff DeanのNumbers Everyone Should Knowが前より解像度高く読めるようになった気がする。
反省点
課題に関してはほぼ満点で提出できたものの、中間テスト、期末テストで満足できる点数を取れなかったのが反省である。2 特に期末テストはレクチャのコンテンツ全てのパートから出題されたので、事前にサンプル問題を解いて準備しただけではカバーできない点があった。レクチャーを一度聞くだけでは到底理解度は低いわけで、数回に分けて聞き込んだりする姿勢が必要だったように思う。
まとめ
計算機の設計を学ぶ上でCS6290を履修して良かった。計算機の設計で重要になる考えを網羅的に学べたし、レクチャーも簡潔で理解しやすいものだった。テストもフェアにレクチャ内容の理解度を計るようデザインされていたと思う。唯一の不満はOpenDoorがレコーディングされていなかった点。日本からだと深夜1,2時とかになるので参加は難しく、こちらに関しては改善のリクエストを出しておいた。
一方、コースを通して、計算機を設計するエンジニア、もしくは、それらの設計を理解して最適化を行うコンパイラを作っているエンジニアに対しての尊敬の念が強まったと思う。せっかくなので、Computer Architecture, A Quantitative Approach(ヘネパタ本)も時間を見つけて読み直したい。
2024 SummerはCS 6250: Computer Networksを履修する予定。
-
https://par.nsf.gov/servlets/purl/10113803#page=1.00&gsr=0 こちらも合わせて読みたい ↩︎
-
この記事を書いた時点ではテスト結果は分からないが、あまり期待できない気がする ↩︎