input_gmio/output_gmio - 2023.2 日本語

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

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

このクラスは、グローバル メモリ (DDR) リソース管理および AI エンジンとグローバル メモリ (DDR) 間のデータ転送を表します。input_gmio オブジェクトは、グローバルメモリ (DDR) から AI エンジンへのデータ転送またはグローバル メモリ (DDR) からの読み出し操作を管理します。output_gmio オブジェクトは、AI エンジンからグローバル メモリへのデータ転送またはグローバル メモリ (DDR) への書き込み操作を管理します。

ベース クラス メンバー関数

static void* malloc(size_t size);
malloc メソッドは、連続する物理メモリ空間を割り当て、対応する仮想アドレスを返します。パラメーター size で、割り当てるバイト数を指定します。正しく実行されると、割り当てられたメモリへのポインターが返されます。エラーがあった場合は、nullptr が返されます。
static void free(void* address);
free メソッドは、GMIO::malloc で割り当てられたメモリ空間を解放します。
return_code wait();
wait メソッドは、それまでに発行されたすべてのトランザクションが完了するまでブロックします。このメソッドは、AI エンジンに接続されている GMIO オブジェクトにのみ適用されます。
注記: input_gmio および output_gmio クラスは、GMIO ベース クラスから導出されます。関数 malloc()free()、および wait() は、GMIO ベース クラスで宣言されます。

input_gmio メンバー関数

create(std::string logical_name, size_t burst_length, size_t bandwidth);

上記のポート仕様は、DDR メモリを AI エンジン カーネルに接続するのに使用されます。logical_name はポート名です。burst_length は DDR メモリ バースト トランザクションの長さ (64、128、または 256 バイト)、bandwidth は予測される平均スループットを MB/s で指定します。

create(size_t burst_length, size_t bandwidth);
上記のポート仕様は、DDR メモリを AI エンジン カーネルに接続するのに使用されます。burst_length は DDR メモリ バースト トランザクションの長さ (64、128、または 256 バイト)、bandwidth は予測される平均スループットを MB/s で指定します。
return_code gm2aie_nb(const void* address, size_t transaction_size);
gm2aie_nb メソッドは、DDR から AI エンジンへの転送を開始します。トランザクションのメモリ空間は、address ポインターおよび transaction_size パラメーター (バイト数) で指定します。トランザクション メモリ空間は、GMIO::malloc メソッドで割り当てられた合計メモリ空間の範囲内である必要があります。これはノンブロッキング関数であり、読み出しトランザクションが完了するのを待機しません。
return_code gm2aie(void* address, size_t transaction_size);

gm2aie メソッドは、gm2aie_nb のブロッキング バージョンです。AI エンジン/DDR の読み出しトランザクションが完了するまでブロックします。

output_gmio メンバー関数

create(std::string logical_name, size_t burst_length, size_t bandwidth);
上記のポート仕様は、AI エンジン カーネルを DDR メモリに接続するのに使用されます。logical_name はポート名です。burst_length は DDR メモリ バースト トランザクションの長さ (64、128、または 256 バイト)、bandwidth は予測される平均スループットを MB/s で指定します。
create(size_t burst_length, size_t bandwidth);
上記のポート仕様は、AI エンジン カーネルを DDR メモリに接続するのに使用されます。burst_length は DDR メモリ バースト トランザクションの長さ (64、128、または 256 バイト)、bandwidth は予測される平均スループットを MB/s で指定します。
return_code aie2gm_nb(void* address, size_t transaction_size);
aie2gm_nb メソッドは、AI エンジンから DDR への転送を開始します。トランザクションのメモリ空間は、address ポインターおよび transaction_size パラメーター (バイト数) で指定します。トランザクション メモリ空間は、GMIO::malloc メソッドで割り当てられた合計メモリ空間の範囲内である必要があります。これはノンブロッキング関数であり、書き込みトランザクションが完了するのを待機しません。
return_code aie2gm(void* address, size_t transaction_size);

aie2gm メソッドは、aie2gm_nb のブロッキング バージョンです。AI エンジン/DDR 書き込みトランザクションが完了するまでブロックします。

注記: GMIO::malloc() および GMIO::free() を使用して DDR メモリ リソースを管理することをお勧めします。