Vengineerの妄想(準備期間)

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

Habana Labs が TCP Compiler を github に公開、doron1 ってなんだ?

はじめに

Intel が買収した Habana Labs が Goya/Gaudi の中にある TCPコンパイラgithub の公開したようです。

ソースコード

LLVMベースのコンパイラLLVM 12 ベースっぽいです。

github.com

説明のために図を引用します。

バイス

ソースコードを眺めていたら、ここにデバイス名が載っていました。

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 (daliTSMC 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

github.com

Habana Custom Kernel

github.com