ユーザドライバ - DigitalMediaProfessionals/dv-sdk GitHub Wiki
この章ではAI プロセッサを利用するための低レベルユーザー空間API を説明します。 Caffe やKeras で訓練されたネットワークで推論を行う高レベルAPI についてはツール をご参照ください。
ユーザ空間ドライバ API
ユーザ空間ドライバAPI は次の関数を提供します。
- ハードウェア特有のコマンドをデバイスに発行するカーネルモジュールと通信するための関数
- デバイスにアクセスできるメモリを確保するための関数
アプリケーションワークフローの例
- コンテキストを生成します。
dmp_dv_context_create()
をご覧ください。 - 重みの入出力のためのメモリを確保します。
dmp_dv_mem_alloc()
をご覧ください。 - 確保したメモリをユーザ仮想アドレス空間にマップします。
dmp_dv_mem_map()
をご覧ください。 - 重みを設定します。
dmp_dv_mem_sync_start()
を呼び出します。- 重みバッファをパックされた重みで埋めます(前もってツールで、もしくは実行時にドライバAPI で重みをパックしてください)。
dmp_dv_mem_sync_end()
を呼び出します。
- (もし望むならば)重みバッファをユーザ仮想アドレス空間からアンマップします。
dmp_dv_mem_unmap()
をご覧ください。 - コマンドリストを作成します。
dmp_dv_cmdlist_create()
をご覧ください。 - コマンドをコマンドリストに追加します。
dmp_dv_cmdlist_add_raw()
をご覧ください。 - コマンドリストをコミットします。
dmp_dv_cmdlist_commit()
をご覧ください。 - 入力を書き込みます。
dmp_dv_mem_sync_start()
を呼び出します。- 入力用バッファにWHC8 形式の入力値を書き込みます。: {幅, 高さ, はじめの8チャネル}, {幅, 高さ, 次の8チャネル}, ...
dmp_dv_mem_sync_end()
を呼び出します。
- コマンドリストを実行します。
dmp_dv_cmdlist_exec()
をご覧ください。 - コマンドリストの実行を待ちます。
dmp_dv_cmdlist_wait()
をご覧ください。 - 出力を読み込みます。
dmp_dv_mem_sync_start()
を呼び出します。- WHC8 フォーマットの出力を確認します。
dmp_dv_mem_sync_end()
を呼び出します。
- 必要であれば次の入力を処理するために、第9 ステップに戻ります。
- コマンドリストを解放します。
dmp_dv_cmdlist_release()
をご覧ください。 - 確保されたメモリを解放します。
dmp_dv_mem_release()
をご覧ください。 - コンテキストを解放します。
dmp_dv_context_release()
をご覧ください。