ユーザドライバ - DigitalMediaProfessionals/dv-sdk GitHub Wiki

この章ではAI プロセッサを利用するための低レベルユーザー空間API を説明します。 Caffe やKeras で訓練されたネットワークで推論を行う高レベルAPI についてはツール をご参照ください。

ユーザ空間ドライバ API

ユーザ空間ドライバAPI は次の関数を提供します。

  • ハードウェア特有のコマンドをデバイスに発行するカーネルモジュールと通信するための関数
  • デバイスにアクセスできるメモリを確保するための関数

User Application -> Driver Interface -> Kernel Module -> FPGA

アプリケーションワークフローの例

  1. コンテキストを生成します。dmp_dv_context_create() をご覧ください。
  2. 重みの入出力のためのメモリを確保します。dmp_dv_mem_alloc() をご覧ください。
  3. 確保したメモリをユーザ仮想アドレス空間にマップします。dmp_dv_mem_map() をご覧ください。
  4. 重みを設定します。
  5. (もし望むならば)重みバッファをユーザ仮想アドレス空間からアンマップします。 dmp_dv_mem_unmap() をご覧ください。
  6. コマンドリストを作成します。dmp_dv_cmdlist_create() をご覧ください。
  7. コマンドをコマンドリストに追加します。dmp_dv_cmdlist_add_raw() をご覧ください。
  8. コマンドリストをコミットします。dmp_dv_cmdlist_commit()をご覧ください。
  9. 入力を書き込みます。
    • dmp_dv_mem_sync_start() を呼び出します。
    • 入力用バッファにWHC8 形式の入力値を書き込みます。: {幅, 高さ, はじめの8チャネル}, {幅, 高さ, 次の8チャネル}, ...
    • dmp_dv_mem_sync_end() を呼び出します。
  10. コマンドリストを実行します。dmp_dv_cmdlist_exec()をご覧ください。
  11. コマンドリストの実行を待ちます。dmp_dv_cmdlist_wait()をご覧ください。
  12. 出力を読み込みます。
  13. 必要であれば次の入力を処理するために、第9 ステップに戻ります。
  14. コマンドリストを解放します。dmp_dv_cmdlist_release()をご覧ください。
  15. 確保されたメモリを解放します。dmp_dv_mem_release()をご覧ください。
  16. コンテキストを解放します。dmp_dv_context_release()をご覧ください。