Vengineerの妄想

人生を妄想しています。

Intel Gaudi 3 のデバイスドライバを見つけたよ

はじめに

Intel Gaudi/Gaudi 2 のデバイスドライバって、Linux Kernel に入っているのですが、

Intel Gaudi 3のデバイスドライバ、って公開されていないのかな?と調べてみたら、見つかりました。

github.com

振り返り : Gaudi 2

下記のブログでは、Linux Kernel のデバイスドライバから Gaudi 2 がどうなっているのを書いています。

vengineer.hatenablog.com

  • DCOREは、4個
  • 各DCOREには、6個のTPCがある
  • MME は、2個

Gaudi 3 は?

下記のブログで、

  • 2 die
  • 各 die には、TPC x 32
  • 各 die には、MME x 4
  • 全体で、Ethernet 24 x 200Gb

ということを書いています。

vengineer.hatenablog.com

Gaudi 3 の公開ソフトウェアから

github.comここから

/* DIE */
#define NUM_OF_HDCORES_PER_DIE      4
#define NUM_OF_NRTR_PER_DIE     2
#define NUM_OF_GRTR_PER_DIE     2
#define NUM_OF_NRTR_CTRL_PER_DIE    3
#define NIC_NUM_MACROS_PER_DIE      6
#define NUM_OF_DPHY_CTRL_PER_DIE    6
#define NUM_OF_D2D_MAC_PER_DIE      2
#define NUM_OF_ROTATOR_PER_DIE      4

各 die に、

  • HDCORE x 4
  • NRTR x 2
  • GRTR : 2
  • NRTR_CTRL x 3
  • NIC_NUM_MACROS x 6
  • DPHY_CTRL x 6
  • D2D MAC x 2
  • ROATOR x 4

から、

  • DCOREではなく、HDCORE。HDCOREは、1 die で 4個、2 die で8個。Gaudi 2は、4個なので 2倍

D2Dは、2組あることがわかりました。

/* HDCORE */
#define NUM_OF_CACHE_SLICES_PER_HDCORE  8
#define NUM_OF_STLB_PER_HDCORE      1
#define NUM_OF_DTLB_PER_HDCORE      8
#define NUM_OF_RRTR_PER_HDCORE      8
#define NUM_OF_MME_PER_HDCORE       1
#define NUM_OF_TPC_PER_HDCORE       8
#define NUM_OF_EDMA_PER_HDCORE      2
#define NUM_OF_ROTATOR_PER_HDCORE   2
#define NUM_ARC_SCHED_PER_HDCORE    2
#define NUM_OF_DECODER_PER_HDCORE   2

DCORE には、

  • CACHE_SLICES x 8
  • STLB x 1
  • DTLB x 8
  • RRTR x 1
  • MME x 1
  • TPC x 8
  • EDMA x 2
  • ROTATOR x 2
  • ARC_SCHED x 2
  • DECODER x 2

です。Gaudi 2 では、DCORE に 6個のTCPが入っていましたが、Gaudi 3 では TCP は8個になっています。各 HDCORE に 1個、MMEがあります(Gaudi 2でも同様で 1個のMME)。

Gaudi 2 では、TCPが6個ですが、予備に1個、なので、各 DCORE には 7個の TCP が存在します。

#define NUM_DCORE0_TPC          7
#define NUM_DCORE1_TPC          NUM_OF_TPC_PER_DCORE
#define NUM_DCORE2_TPC          NUM_OF_TPC_PER_DCORE
#define NUM_DCORE3_TPC          NUM_OF_TPC_PER_DCORE

Gaudi 3 では、予備があるのは半数の4個のみ。

#define NUM_HDCORE0_TPC           (NUM_OF_TPC_PER_HDCORE + 1)
#define NUM_HDCORE1_TPC         NUM_OF_TPC_PER_HDCORE
#define NUM_HDCORE2_TPC         (NUM_OF_TPC_PER_HDCORE + 1)
#define NUM_HDCORE3_TPC         NUM_OF_TPC_PER_HDCORE
#define NUM_HDCORE4_TPC         NUM_OF_TPC_PER_HDCORE
#define NUM_HDCORE5_TPC         (NUM_OF_TPC_PER_HDCORE + 1)
#define NUM_HDCORE6_TPC         NUM_OF_TPC_PER_HDCORE
#define NUM_HDCORE7_TPC         (NUM_OF_TPC_PER_HDCORE + 1)
#define NUM_HDCORES_WITH_9_TPC      4

おわりに

  • Gaudi 2

    • DCORE x 4
      • TCP x 6 x 4
      • MME x 4
  • Gaudi 3 (2 die)

    • HDCORE x 8
      • TCP x 8 x 8 = 64
      • MME x 8

で、TCPが 24 => 64 で2倍以上、MME は 4 => 8 で2倍。

Gaudi 3 は、Gaudi 2 に対して、2~4倍 の模様