はじめに
Intel Gaudi/Gaudi 2 のデバイスドライバって、Linux Kernel に入っているのですが、
Intel Gaudi 3のデバイスドライバ、って公開されていないのかな?と調べてみたら、見つかりました。
振り返り : Gaudi 2
下記のブログでは、Linux Kernel のデバイスドライバから Gaudi 2 がどうなっているのを書いています。
- DCOREは、4個
- 各DCOREには、6個のTPCがある
- MME は、2個
Gaudi 3 は?
下記のブログで、
ということを書いています。
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 に、
から、
- 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
おわりに
で、TCPが 24 => 64 で2倍以上、MME は 4 => 8 で2倍。