Vengineerの妄想(準備期間)

人生は短いけど、長いです。人生を楽しみましょう!

Veirlator v5 では、Dynamic Scheduling が導入される?

はじめに

Verilator v5 development branch が進行中のようだ。

github.com

v5 development brach

Scheduler に関して、次の2つの変更をベースに進行中のようだ。v5.002 として、リリースされるようである。

  • timed coroutines (Dynamic scheduling #3363)
  • improved scheduling (Major refactoring of ordering for improved scheduler #3329)

Dynamic scheduling

Dynamic Schduling (Dynamic Schduler)については、このブログでも4回にわたって紹介しています。

vengineer.hatenablog.com

vengineer.hatenablog.com

vengineer.hatenablog.com

vengineer.hatenablog.com

これらのブログを書いたのは約1年前です。

おわりに

近い将来、Verilator本家で、Dynamic Scheduler が導入されて、

  • 遅延記述 (#)
  • event系のイベント (waitなど)
  • fork/join

がサポートされそうですね。

NVIDIA H100のCX7には、PCIe gen5 bridge が入っていた

はじめに

3月28日に、NVIDIA DGX H100について、深堀しました。

vengineer.hatenablog.com

この中で、CX7 が CPU と H100 の間でどのように接続しているかは、はっきりわかりませんでした。

CX7

下記の CX7 のデータシートには、

nvdam.widen.net

  • 32 lanes of PCIe Gen 5.0, compatible with PCIe Gen 2/3/4
  • Integrated PCI switch

とあります。しかしながら、下図の CX7 (ConnextX-7) では、CPUとは、Gen-4と繋がっていて、GPUと他の何かとは、Gen-4 より太い線でつながっているので、どうなっているのか?と思っていました。

DGX H100 での CX7

4月26日の「GTC 2022 テクニカルフォローアップセミナー 〜新アーキテクチャ & HPC〜」

nvidia.connpass.com

の、成瀬さんの発表資料「 Hopper アーキテクチャで、変わること、変わらないこと」の眺めていたら、DGX H100での CX7 の接続部が載っていました。

下図は、DGX A100 (46頁)、DGX H100 (47頁)のブロック図です。説明のために引用します。

DGX A100 では、CPUから PCIe SW 経由で 2個のCX6 と 2個のA100がつながっています。

DGX H100 では、CPUから 直接 CX7 につながり、その先にH100がつながっています。これにより、4つの PCIe Switch が必要なくなり、コストダウンできます。

CPU から先のデバイスは、すべて、NVIDIA製になっています。CX7, H100, NV Switch。CPUにGraceを使えば、全部、NVIDIA製になります。

なので、CX7 が4つ載っているボードの上に、放熱フィンが付いているんですね。。。

下図は、33:32のキャプチャーです。

下図は、33:34のキャプチャーです。

おわりに

NVIDIA DGX H100 では、CX7を使うことで、PCIe Switch が必要なくなったことがわかりました。

P.S

上記の図のオレンジの部分は、NV Switch 上の水冷用の部品です。左側にある口に接続して、8個のGPUも水冷になっているようです。

関連記事

www.servethehome.com

「学力」の経済学、を読みました

はじめに

とあるYoutubeを見ていたら、中室牧子さんが出演していました。

この人、何の人、と思いましたが、

Amazonで眺めてみたら、Amazon Prime会員だと、0円で読めるということでした。

要約

いつものようにここに書いてもしょうがないので、下記の記事でも覗いてください。

booksoccermarketer.com

おこちゃまの教育

この本に書いてあるように、おこちゃまの教育として、どの時期に投資するか?ということですが、そんなのわかりませんよね。

とは言え、最近は、中学校受験だけでなく、小学校、幼稚園とどんどん早くなっている気がします。

昔、TVで、お兄ちゃんの習い事についていく弟くんが、ゆっくり遊びたい、ということを言っていたのを思い出しました。

親としては、子供に対して、将来のこといろいろ考えてやっていると思うのですが、どうなんでしょうね。。。

おわりに

こういう本が出て、教育の方法がいい方向に変わっていけばいいんですがね。。と言っても、この本が出版されて、もう7年になるんですね。昔、タイトルを見た気がします。。。

この本に書いてあった、「人生の成功に重要な非認知能力」とありますが、本当にそうだと思います。

学力の高い大学を出ても、「非認知能力」が無いと、生きていくの辛いですよね。。。仕事で一緒に働いた人、Twitterで知り合った人や絡んできた人の中にもそういう人、結構いましたよ。

え、お前がそう言うか?

そうですよ。。。あたしも、世の中の尺度からみると、どうなの?と言われるかもしれませんが、自分の人生ですから、自分で決めますよ。。。。そんなこと。

2022年4月の映画鑑賞

4月、29本、(内、アマゾンプライムは1本、Youtubeで1本)

1月-3月までの合計 : 104本

書籍 :「問いかける技術」と「謙虚なリーダーシップ」を読みました

はじめに

ずーと、アマゾンのほしい物リストに入れといたエドガー・H・シャインの

を読みました。

あと一冊、

も読もうと思っています。読み終えたら、ここに追加します。

「問いかける技術」の要約

https://www.amazon.co.jp/dp/B00PY6XVAQ

ここで要約を書くのも何なので、既に書いている人の記事を

sakudoku.com

きれいにまとまっている気がします。A4の上に手書きというのは、すごくいいと思います。。

「虚なリーダーシップ」の要約

ここで要約を書くのも何なので、既に書いている人の記事を

aty800.com

なんでいまさら、このカテゴリの本を読むのか?

このブログに9年前に書いたこと

vengineer.hatenablog.com

この9年間では、「個人としての総合力」が必要になり、組織では、「個人の総合力」を束ねるため力が必要です。

転職して、環境が変わり、「個人としての総合力」が前職に居た人とは圧倒的に違う(と思っている)人達と一緒に仕事をするには、どうすればいいのかを、ちょくちょく考えています。

今回読んだ2冊、

  • 問いかける技術
  • 謙虚なリーダーシップ

は、何か役に立ちそうな気がしました。といっても、この2冊の本に書いてあることをやったことで、急に何かが変わるか?とは思っていません。。。けど。

おわりに

過去のブログの記事をあさっていたら、いろいろと書いてありました。 書いたことを忘れても、ブログに残しておけば、あー、そんなこともあったのね。と思い出せるので、とってもいいなー、と思っています。

関連ブログ

vengineer.hatenablog.com

NVIDIA A100/H100 のL2 Cacheについて、再度調べた

はじめに

NVIDIA A100にて、L2 Cacheの構成が変わったことは、下記のブログで書きました。

vengineer.hatenablog.com

今回は、L2 Cache のサイズが、P100の4MB、V100の6MBから A100 では 40MB (48MB)、H100 では 50MB (60MB) になって、その利用について調べてみました。

NVIDIA GA100 の L2 Cache

A100 の L2 Cache は、40MB (GA100では 48MB ですが、A100 としては 40MB しか使えません) と、V100 の 6MB から 大きく増えました。

前回のブログで書いたように、GA100 の L2 Cacheは2つのブロックに分割され、各ブロックは 20MB。20MB は、512KB x 40 個という構成になっています。

GA100は、6個のHBM2e が接続していて、各HBM2e で2個のメモリコントローラが付いています。合計で12個です。各メモリコントローラには、8個の512KBのL2 Cacheが付いているようです。

12 x 8 x 512KB = 48MBです。A100では、6個のHBM2eの内、5個のHBM2eが使えます。したがって、L2 Cache は 10 x 8 x 512KB = 40MB になります。

追記)、2024.02.11

20MB + 20MB になっているのではなく、24MB + 24MB になっていて、一方が24MB、もう一方が16MBになったいる感じ。何故なら、1つのHBM2e Memory Controllerが使われていないので、8MB x 3 MC + 8MB x 2 MC で 40MBとなっている。

NVIDIA GH100 の L2 Cache

H100 の L2 Cache は、50MB (GH100では 60MB ですが、H100 としては 50MB しか使えません) です。H100 の L2 Cache は GA100と同様に2つのブロックに分割され、各ブロックは 30MB。30MB は、512KB x 60 個という構成になっています。

GH100は、GA100と同様に、6個のHBM2e/HBM3 が接続していて、各HBM3 で2個のメモリコントローラが付いています。各メモリコントローラには、10個の512KBのL2 Cacheが付いているようです。

12 x 10 x 512KB = 60MBです。H100では、 6個のHBM2eの内、5個のHBM2eが使えます。したがって、L2 Cache は 10 x 10 x 512KB = 50MB になります。

L2 Cache にデータを常駐できる

GA100 から L2 Cache には、データを常駐できるようになりました。データをL2 Cacheに常駐できると何が?お得かというと、下図 (NVIDIA A100 Tensor Core GPU Architectureの41ページから説明のために引用します)のように Kernel 間で使うデータを L2 Cache に常駐することで DRAMへのアクセス時間からL2 Cacheへのアクセス時間に短縮できるということです。

L2 Cache は、データを圧縮する

下図 (NVIDIA A100 Tensor Core GPU Architectureの41ページから説明のために引用します)のように L2 Cacheではデータを圧縮できるようです。

V100 と A100 の性能比較

L2 Cacheの容量は、V100に対して、6.7 倍、L2 CacheへのBWは 2.3 倍

圧縮すると、容量は、13.3 倍、L2 CacheへのBW は 9.2倍

追記)、2024.02.11

H100の帯域は?

下記の記事に、H100の内部構成があります。

chipsandcheese.com

下図は上の記事から説明のために引用します。512KB が 10個あるのではなく、640KB が 8個あるようです。

L2 Cacheには、64B/cycleでアクセス。64Bなのは、HBM3 Memory Controllerが512ビット(64バイト)だからでしょうか?

動作周波数は、PCIe版では Max 1.755GHz です。SMX版は分かりません。nvidia-smi を実行すれば、動作周波数は分かると思います。

64B x 1.755GHz = 112.32GB/s

HBM3は5.23Gbpsで動いている。1024bit x 5.23Gbps = 669.44GB/s

L2 Cache は8組あるので、112.32GB/s x 8 = 898.56 GB/s

H200になると、HBM3e@6.4Gbps になるようなので、819.2GB/s まで増えますね。

ここまで追記

L2 Cache の制御

下図は、CUDA 11 AND A100 - WHAT'S NEW? の25ページ目のTUNING FOR L2 CACHE です。

accessPolicyWindow なる API を使って、L2 Cache のデータを常駐することができるようです。

num_bytes でサイズを指定できますが、上記に書いたように 1つのメモリコントローラには、GA100で8個、GH100で10個です。GA100 で 8 x 512KB = 4MB、GH100 で 10 x 512KB = 5MB です。

となると、このサイズを超えるように設定すると、どうなるんでしょうかね。。。

CUDAのドキュメントによると、

cudaGetDeviceProperties(&prop, device_id);
size_t size = min(int(prop.l2CacheSize * 0.75), prop.persistingL2CacheMaxSize); cudaDeviceSetLimit(cudaLimitPersistingL2CacheSize, size); / set-aside 3/4 of L2 cache for persisting accesses or the max allowed/

のように、prop.l2CacheSize で L2 Cache Size を獲得できるんですね。そして、prop.persistingL2CacheMaxSize で常駐できる最大サイズも獲得できるんですね。

これによって、下記(同じ資料の 26ページ目)のように V100 より、2.48倍、速くなるようです。

こちらも

おわりに

A100のL2 Cacheについて、調べていたら、こんなことになりました。

関連ブログ

vengineer.hatenablog.com

IPA: Floorplan-Aware SystemC Interconnect Performance Modeling and Generation for HLS-based SoCs

はじめに

NVIDIA Research のサイトを眺めていたら、見つけました。

IPA: Floorplan-Aware SystemC Interconnect Performance Modeling and Generation for HLS-based SoCs

SystemC ベースの Floorplanを意識したインターコネクト・パフォーマンス・モデルについて、

IPA

下図は上記の論文から説明のために引用します。

  • Directly Connected Links
  • Central Crossbar Crossbar
  • Uniform Mesh NoC

の3つのインターコネクトのタイプをサポートしているようです。

下図は、Deep Learning Accelerator の例です。どうやら、推論用、っぽいです。説明のために引用します。

  • PE : processing elements
  • GB : an array of global buffers
  • Interconnect

の構成で、Interconnect をどのように実装するといいかをモデル化できるということです。

下図も説明のために引用します。左側は Centralized GB (Global Bufferを1つにした場合)、右側は Distributed GB (Global Bufferを各PEに対して、分散した場合)

下図は ResNet-50 でのいろいろなInterconnectの評価結果です。説明のために引用します。PEの数が増えると CentralGBの方がDistributedGBの方が性能的にいいようです。

ソースコード

github.com

NVIDIA Lab の MatchLib and Connections を使っているようです。

おわりに

NVIDIA では、MatchLib を使っていろいろとやっています。ちなみに、合成ツールは、SIEMENS の Catapult HLS です。