このクラスは、グローバル メモリ (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 メモリ リソースを管理することをお勧めします。