カーネル コーディングの限界 - 2023.2 日本語

AI エンジン カーネルおよびグラフ プログラミング ガイド (UG1079)

Document ID
UG1079
Release Date
2023-12-04
Version
2023.2 日本語

この例では、128 の出力値を計算するために合計 1024 の int16 x int16 の乗算が必要です。1 つの AI エンジンでは、1 サイクルごとに 32 個の 16 ビット乗算を実行できるので、カーネルの計算限界は次のようになります。

Compute bound = 32 cycles / invocation

行列 B は 16*16 ビット = 256 ビットなので、ベクター レジスタに格納できます。各 MAC 演算ごとに AI エンジン データ メモリまたはタイル インターフェイスからフェッチする必要はありません。計算にデータ a が必要だとすると、メモリからフェッチされる合計は 64*8*2=1024 バイトです。AI エンジン では、サイクルごとに 2 つの 256 ビット (32 バイト) のロードができるので、カーネルのメモリ限界は次のようになります。

Memory bound = 1024 / (2*32) = 16 cycles / invocation

計算限界は、メモリ限界よりも大きいことがわかります。このため、ベクター プロセッサでの MAC 演算の理論上の限界に達するようにするためにベクター化を実行できます。