はじめに
Intel が買収した Habana Labs が Goya/Gaudi の中にある TCP 用コンパイラを github の公開したようです。
ソースコード
LLVMベースのコンパイラ。LLVM 12 ベースっぽいです。
説明のために図を引用します。
デバイス名
ソースコードを眺めていたら、ここにデバイス名が載っていました。
TPCTargetInfo::CPUKind TPCTargetInfo::getCPUKind(StringRef Name) const { return llvm::StringSwitch<CPUKind>(Name) .Cases("dali", "goya", CPUKind::Goya) .Case("gaudi", CPUKind::Gaudi) .Case("gaudib", CPUKind::GaudiB) .Cases("goya2", "greco", CPUKind::Greco) .Case("gaudi2", CPUKind::Gaudi2) .Case("doron1", CPUKind::Doron1) .Default(CPUKind::Generic); }
公開情報としては、
- goya (TSMC 16nm)、Inference
- gaudi (TSMC 16nm)、Training
- greco (goya2, TSMC 7nm)、Inference
- gaudi2 (TSMC 7nm)、Training
でしたが、上記情報では、
- goya (dali、TSMC 16nm)
- gaudi (TSMC 16nm)
- gaudib
- greco (goya2, TSMC 7nm)
- gaudi2 (TSMC 7nm)
doron1
dali は、goya の別名
- doron1 は、新しいっぽいですね。
この doron1 は、なんですかね。。
こちらには、ISA の情報もありました。
def FeatureGoya : SubtargetFeature<"goya", "HasGoyaISA", "true", "Enable TPC version 1 ISA (goya)">; def FeatureGaudi : SubtargetFeature<"gaudi", "HasGaudiISA", "true", "Enable TPC version 2 ISA (gaudi)">; def FeatureGaudiB : SubtargetFeature<"gaudib", "HasGaudiBISA", "true", "Enable TPC version 2 ISA (gaudib)">; def FeatureGreco : SubtargetFeature<"greco", "HasGrecoISA", "true", "Enable TPC version 3 ISA (greco)">; def FeatureGaudi2 : SubtargetFeature<"gaudi2", "HasGaudi2ISA", "true", "Enable TPC version 4 ISA (gaudi2)">; def FeatureDoron1 : SubtargetFeature<"doron1", "HasDoron1ISA", "true", "Enable TPC version doron1">;
ここによると、gaudi2 と doron1 は、float8 をサポートしているっぽいです。
if (CPUName.equals("gaudi2") || CPUName.equals("doron1")) CC1Args.push_back("-float8"); if (CPUName.equals("gaudi") || CPUName.equals("gaudib") || CPUName.equals("greco") || CPUName.equals("gaudi2") || CPUName.equals("doron1")) CC1Args.push_back("-bfloat16");
おわりに
公開されていない doron1 って、なんでしょうかね。。。
SynapseAI Core
Habana Custom Kernel