## Transcript 1. ### [メモリボトルネックの概要と その影響について](https://files.speakerdeck.com/presentations/4facb1e35a8b4e3bb61f1eeb2d54231d/slide_0.jpg "メモリボトルネックの概要とその影響について - CADDi STUDDi メモリボトルネックの概要と その影響について ") 2. ### [今日話すこと • 自己紹介 • CPUの性能とメモリ性能の関係 • 行列行列積に見るCPUキャッシュ最適化の例](https://files.speakerdeck.com/presentations/4facb1e35a8b4e3bb61f1eeb2d54231d/slide_1.jpg "メモリボトルネックの概要とその影響について - CADDi STUDDi 今日話すこと ● 自己紹介 ● CPUの性能とメモリ性能の関係 ● 行列行列積に見るCPUキャ...") 3. ### [今日のゴール • 高いCPUを買っても何もしなければアプリケー ションは速くならないという実感を持つ • キャッシュヒット率の重要性を理解する](https://files.speakerdeck.com/presentations/4facb1e35a8b4e3bb61f1eeb2d54231d/slide_2.jpg "メモリボトルネックの概要とその影響について - CADDi STUDDi 今日のゴール ● 高いCPUを買っても何もしなければアプリケー ションは速くならないという実感...") 4. ### [大学院時代はスパコンで機械学習の訓練を高速化する研究をしていました • 機械学習の訓練データを共有の並列ファイルシステムに置いて計算ノードからアクセスするとlatencyが高い • 計算ノードのローカルストレージは低latencyだがコピーに時間がかるため少ない計算ノードだとペイしにくい https://dl.acm.org/doi/10.1145/3365109.3368768 というトレードオフの「いいとこどり」をする手法を提案し、Chainerで実装して訓練にかかる時間を評価](https://files.speakerdeck.com/presentations/4facb1e35a8b4e3bb61f1eeb2d54231d/slide_3.jpg "メモリボトルネックの概要とその影響について - CADDi STUDDi 大学院時代はスパコンで機械学習の訓練を高速化する研究をしていました ● 機械学習の訓練データを...") 20. ### [どうしてこうなった? • 現代はCPUに比べてメモリが相対的に遅い時代 https://www.extremetech.com/extreme/188776-how-l1-and-l2-cpu-caches-work-and-why- theyre-an-essential-part-of-modern-chips](https://files.speakerdeck.com/presentations/4facb1e35a8b4e3bb61f1eeb2d54231d/slide_19.jpg "メモリボトルネックの概要とその影響について - CADDi STUDDi どうしてこうなった? ● 現代はCPUに比べてメモリが相対的に遅い時代 https://www...") 24. ### [簡単な実験: キャッシュヒット率を上げるとどのぐらい早くなるか(2/2) • 正方行列 \* 正方行列をキャッシュヒット率を 高めるように実装してみる for (i =](https://files.speakerdeck.com/presentations/4facb1e35a8b4e3bb61f1eeb2d54231d/slide_23.jpg "メモリボトルネックの概要とその影響について - CADDi STUDDi 簡単な実験: キャッシュヒット率を上げるとどのぐらい早くなるか(2/2) ● 正方行列 * 正...") 0; i < 1024; ++i) for (k = 0; k < 1024; ++k) for (j = 0; j < 1024; ++j) M3\[i\]\[j\] += M1\[i\]\[k\] \* M2\[k elapsed time = 2.274633 sec, 0.944101 GFLOPS https://github.com/serihiro/optimization\_experiments naiveに実装した時の3倍になった! for (i = 0; i < 1024; ++i) for (j = 0; j < 1024; ++j) for (k = 0; k < 1024; ++k) M3\[i\]\[j\] += M1\[i\]\[k\] \* M2\[k\]\[j\]; elapsed time = 6.079248 sec, 0.353248 GFLOPS コンパイルオプション: -O0 -std=c11 -Wall -Wextra 26. ### [まとめ • 現代はメモリよりもCPUがはるかに高速な時代 • 高いCPUに買い換えるだけでは性能は出ない • CPUの性能を引き出すにはキャッシュヒット率 を高めるコードを書くなどの人手による工夫が 必要](https://files.speakerdeck.com/presentations/4facb1e35a8b4e3bb61f1eeb2d54231d/slide_25.jpg "メモリボトルネックの概要とその影響について - CADDi STUDDi まとめ ● 現代はメモリよりもCPUがはるかに高速な時代 ● 高いCPUに買い換えるだけでは性...") 27. ### [併せて読みたい(CPU性能やコンピュータアーキテクチャに関する本) • Samuel Williams, Andrew Waterman, and David Patterson. 2009.](https://files.speakerdeck.com/presentations/4facb1e35a8b4e3bb61f1eeb2d54231d/slide_26.jpg "メモリボトルネックの概要とその影響について - CADDi STUDDi 併せて読みたい(CPU性能やコンピュータアーキテクチャに関する本) ● Samuel Will...") Roofline: an insightful visual performance model for multicore architectures. Commun. ACM 52, 4 (April 2009), 65–76. DOI:https://doi.org/10.1145/1498765.1498785 • Software Engineering Advice from Building Large-Scale Distributed Systems http://static.googleusercontent.com/media/research.google.com/en/us/people/jeff/stanford-295-talk.pdf • コンピュータアーキテクチャ技術入門 https://gihyo.jp/book/2014/978-4-7741-6426-7 • パタヘネ5版 https://www.amazon.co.jp/dp/4822298426/ • スーパーコンピュータ (岩波講座 計算科学 別巻) https://www.amazon.co.jp/dp/4000113070/ • High Performance Computing: Modern Systems and Practices https://www.amazon.co.jp/dp/B077NZ4SW3/