Skip to content

Latest commit

 

History

History
37 lines (31 loc) · 2.47 KB

5_0_threads.md

File metadata and controls

37 lines (31 loc) · 2.47 KB

スレッド処理

  • マルチコアのCPU、GPUなどのアクセラレータ、その他のアクセラレータの扱い
  • 画像データのデータストリームの扱い
    • 例: GStreamer

これらが、可能な範囲で扱いやすくすること 3D処理の多くは、遅延時間が大きくなりすぎると意味を持たなくなる。 あるアイディアを1つの実装から、別の実装へ置き換える際の改変のポイントがわかりやすいこと 利用するフレームワーク間の移植を容易にすること。

設計方針

  • アルゴリズムの実装自体の時点では、その内部にデータストリームを含まないようにする。
  • データストリームを用いるのは、それらをつなぐときに用いる。

アルゴリズムのコアとは

  • アルゴリズムを記述・動作検証するうえで、必須の機能の部分
  • 動作結果の可視化は、コアには含めない。

設計方針:アルゴリズムのコアの実装には、制御構文は減らすべきである

  • ファイルのリストに対する処理の一群、ビデオフレームに対する処理は、ロジックが単一フレームに対し実行するものの場合、コアの実装に含めるべきではない。

設計方針:コアの実装はファイルに結果を書き込まない。

  • アルゴリズムの実装のコアの部分の実装には、ファイル単位の処理・結果ファイルの書き出しを含めないがいい。
  • 理由:
    • 組み込み分野では、結果をファイルとして保存することを想定しないからである。
    • 組み込み分野では、限られたリソースの中で実行するので、ディスクスペースがあっても、ごく僅かである。 - 例外:
    • その機械学習が必要とするモデルファイル、設定ファイルが残ることはある。

設計方針:入出力が共通で同じ種類のタスクならば、結果の保存方法は、共通化できるのがのぞましい。

  • 例:検出結果をjson化して保存する。

非同期並行処理

  • 非同期の並行処理は、言語・ライブラリによって大きく異なっています。
  • 非同期の並行処理を実行すると、シングルスレッドの動作よりも、動作時間を短縮できます。
  • python