Vengineerの戯言

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

Tenstorrent の Compute Tile : Tensix

はじめに

Tenstorrent の Compute Tile は、Tenisix と呼ばれています。今回は、Tensix について、みていきます。

Tensix の構成

Tenstorrent の Compute Tile : Tensix は、下記のような構造になっています。Tenstorrentの Tensix AI IP の頁から説明のために引用します。

上記の図によると、Tensix は下記の5つから構成されています。

  • RISCV Processor x 5
  • FPU
  • General Purpose SIMD engine
  • L1 Memory
  • Router x 2

TT-buda のHardware Overviewというドキュメントに、Tensix の中身の説明がありました。

Each Tensix core contains a high-density tensor math unit (FPU) which performs most of the heavy lifting, a SIMD engine (SFPU), five Risc-V CPU cores, and a large local memory storage  A typical FPU math operation has one or two operands which are read (:ref:`unpacked<Unpacker>`) from local memory into source registers, and the computed results are written and accumulated to destination registers, until explicitly copied to local memory. NOC is programmed with connections (pipes) between cores so that outputs of one operation are automatically pushed to the next operation that needs them.

General Purpose SIMD engine のことを、SFPU と呼んでいるようです。

下図は、Tenstorrentが日本支社を設立、自動運転の市場開拓が狙い AIプロセッサーの昨今から説明のために引用します。

5つの RISCV Processor の内、 - 外部のNoCからRouter 0に送られてくるパケット処理のため - 外部のNoCへRouter 1から送り出すパケット処理のため

に2個のRISC-Vを使っています。残りの3つのRISC-V Processorは FPU と SFPU と一緒の計算をするようです。

SFPU

SFPU については、Tenstorrent の github とは別の Tenstorrent TT-Metal の githubコンパイラがあります。

SFPI Tenstorrent SFPU programming interface のドキュメントは、ここにありました。

  • Low Level Kernels

と言われているようです。

SFPI is the programming interface to the SFPU. It consists of a C++ wrapper around a RISCV GCC compiler base which has been extended with vector data types and __builtin intrinsics to generate SFPU instructions. The wrapper provides a C++ like interface for programming.

SFPI is supported on Grayskull and Wormhole.

おわりに

今回は、TenstorrentのTensixについて、調べました。