Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

IRONクイックリファレンス


Pythonバインディング

関数シグネチャ定義パラメータ戻り値の型
tile(column, row)AI Engineタイルを宣言column: 列インデックス番号
row: 行インデックス番号
<tile>ComputeTile = tile(1,3)
external_func(name, inputs, output)AIEコア上で実行される外部カーネル関数を宣言name: 外部関数名
input: 入力型のリスト
output: 出力型のリスト
<external_func>scale_scalar = external_func("vector_scalar_mul_aie_scalar", inputs=[tensor_ty, tensor_ty, np.ndarray[(1,), np.dtype[np.int32]]])
npu_dma_memcpy_nd(metadata, bd_id, mem, sizes)外部メモリにアクセスするn次元DMAを設定metadata: ObjectFifo pythonオブジェクトまたはobject_fifoの名前文字列
bd_id: 識別番号
mem: 転送用メモリ
sizes: 4Bの粒度での4次元転送サイズ
Nonenpu_dma_memcpy_nd(metadata="out", bd_id=0, mem=C, sizes=[1, 1, 1, N])
dma_wait(object_fifo, ...)外部メモリにアクセスするためのホスト-ShimDMA同期を設定metadata: 完了を待機しているObjectFifo(Pythonオブジェクトまたは名前文字列)を識別します。これは可変引数関数であり、1つ以上のメタデータを一度に受け取り、与えられた順序で待機しますNonedma_wait(of_out)
npu_sync(column, row, direction, channel, column_num=1, row_num=1)外部メモリにアクセスするためのホスト-ShimDMA同期を設定する代替方法columnrow: 同期を開始するタイル位置を指定
direction: DMAの方向を示します(0はホストへの書き込み、1はホストからの読み取り)
channel: 同期トークンのDMAチャネル(0または1)を識別
column_numrow_num(オプション): 同期を待機するタイルの範囲を定義
Nonenpu_sync(column=0, row=0, direction=0, channel=1)
Object FIFO
object_fifo(name, producerTile, consumerTiles, depth, datatype)Object FIFOを構築name: Object FIFO名
producerTile: プロデューサタイルオブジェクト
ConsumerTiles: コンシューマタイルオブジェクトのリスト
depth: Object FIFO内のオブジェクト数
datatype: Object FIFO内のオブジェクトの型
<object_fifo>of0 = object_fifo("objfifo0", A, B, 3, np.ndarray[(256,), np.dtype[np.int32]])
<object_fifo>.acquire(port, num_elem)Object FIFOからacquireport: ObjectFifoPort.ProduceまたはObjectFifoPort.Consume
num_elem: acquireするオブジェクト数
<objects>elem0 = of0.acquire(ObjectFifoPort.Produce, 1)
object_fifo.release(port, num_elem)Object FIFOからreleaseport: ObjectFifoPort.ProduceまたはObjectFifoPort.Consume
num_elem:
Noneof0.release(ObjectFifoPort.Consume, 2)
object_fifo_link(fifoIns, fifoOuts)Object FIFO間のリンクを作成fifoIns: Object FIFOのリスト(変数または名前)
fifoOuts: Object FIFOのリスト(変数または名前)
Noneobject_fifo_link(of0, of1)
ルーティングバインディング(トレースと低レベル設計に関連)
flow(source, source_bundle, source_channel, dest, dest_bundle, dest_channel)送信元と宛先の間に回路交換フローを作成source: フローの送信元タイル
source_bundle: 送信元WireBundleの型(完全なリストはAIEAttrs.tdを参照)
source_channel: 送信元チャネルインデックス
dest: フローの宛先タイル
dest_bundle: 宛先WireBundleの型(完全なリストはAIEAttrs.tdを参照)
dest_channel: 宛先チャネルインデックス
Noneflow(ComputeTile, WireBundle.DMA, 0, ShimTile, WireBundle.DMA, 1)
packetflow(pkt_id, source, source_port, source_channel, dest, dest_port, dest_channel, keep_pkt_header)送信元と宛先の間にパケット交換フローを作成pkt_id: 一意のパケットID
source: パケットフローの送信元タイル
source_port: 送信元WireBundleの型(完全なリストはAIEAttrs.tdを参照)
source_channel: 送信元チャネルインデックス
dest: パケットフローの宛先タイル
dest_port: 宛先WireBundleの型(完全なリストはAIEAttrs.tdを参照)
dest_channel: 宛先チャネルインデックス
keep_pkt_header: ヘッダーを保持するブールフラグ
Nonepacketflow(1, ComputeTile2, WireBundle.Trace, 0, ShimTile, WireBundle.DMA, 1, keep_pkt_header=True)

注意: tile: デバイス上で実際に実行されるタイル座標は、ここで宣言されたものと異なる場合があります。例えば、Ryzen AIでは、これらの座標は相対座標である傾向があり、ランタイムスケジューラが利用可能な別の列に割り当てる可能性があります。

注意: object_fifo: producerTileconsumerTilesの入力はAI Engineタイルです。consumerTilesは、複数のコンシューマの場合、タイルの配列として指定することもできます。

注意: <object_fifo>.{acquire,release}: 出力は単一のオブジェクトまたはオブジェクトの配列のいずれかであり、配列のようにインデックスを付けることができます。

注意: object_fifo_link リンクで共有タイルとして使用されるタイルは、現在Memタイルである必要があります。入力fifoInsfifoOutsは、単一のObject FIFOまたはそれらのリストのいずれかです。両方とも、python変数または名前のいずれかを使用して指定できます。現在、2つの入力のいずれかがObjectFIFOのリストである場合、もう一方は単一のObject FIFOのみになります。

Pythonヘルパー関数

関数シグネチャ説明
print(ctx.module)ctxでラップされた構造コードをmlirに変換し、標準出力に出力します
ctx.module.operation.verify()Pythonバインディングされたソースコードに対して追加の構造検証を実行し、結果を標準出力に返します

カーネルプログラミングのための一般的なAIE API関数

関数シグネチャ定義パラメータ戻り値の型
aie::vector<T, vec_factor> my_vectorベクトル型を宣言T: データ型
vec_factor: ベクトル幅
n/aaie::vector<int16_t, 32> my_vector;
aie::load_v<vec_factor>(pA1);ベクトルロードvec_factor: ベクトル幅aie::vectoraie::vector<int16_t, 32> my_vector;

役立つAI Engineアーキテクチャリファレンスとテーブル

  • AIE2 - サポートされているデータ型とベクトルサイズのテーブル(AIE API)

  • 役立つタイルコアトレースイベント

    一般的なイベントイベントID10進数値
    True0x011
    ストリームストール0x1824
    コア命令 - イベント00x2133
    コア命令 - イベント10x2234
    ベクトル命令(例:VMAC、VADD、VCMP)0x2537
    ロックacquireリクエスト0x2C44
    ロックreleaseリクエスト0x2D45
    ロックストール0x1A26
    コアポート実行中 10x4F79
    コアポート実行中 00x4B75
    • コアタイル、コアメモリ、メムタイル、shimタイルのイベントのより包括的なリストは、このヘッダーファイルにあります

AI Engineドキュメント

AIE詳細リファレンス