@Vengineerの戯言 : Twitter
SystemVerilogの世界へようこそ、すべては、SystemC v0.9公開から始まった
Linley Fall Processor Conference 2020の講演ビデオ:Tenstorrent: Relegating the Important Stuff to the Compiler
www.youtube.com
では、Tenstorrentのチップ(Hardware)ではなく、GRAPH COMPILERについて詳しく説明しています。
Tenstorrentのチップには、120個のコアが入っていて、それら120個のコアを使って、
- Pipeline Parallelism
- Data Parallelism
- Model Parallelism
ができます。これら3つの Parallelism は、Cerebras や Graphcore でもできるので、AI アクセラレータとしては当たり前の機能になってきたと思います。
また、Tenstorrent の Graph Compiler では、1つの Tensor を Mini-Tensor に分解して、分解した Mini-Tensor を1つのPacket として扱い、この Packet の コア間で移動するためのスケジューリングもやっているようです。
Packetには、
- Packet headers
- Packet IDs
- Routing information
が付いているようです。
また、Graph Compiler には、チップ内部のNoCの情報も組み込まれています。なので、Routing infomation というものが出てくるのでしょう。
Packet は、NoC によって、Re-order される場合もあるようです。
では、何故? Tensor を Min-Tensor に分割して、Packetとしてコア間を移動するのでしょうか?
それは、RESHAPE, TRANSPOSE, SQUEEZE のような演算は伴わないがデータの並び替えを Packet の移動によって実現しているからのようです。
この部分に関してはコアでは演算を行う必要がなくなり、その分、全体の処理性能が向上できるということになりますね。。
一つのアイデアとしてはいいですね。