0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Protecting real-time GPU kernels on integrated CPU-GPU SoC platforms

0
Last updated at Posted at 2023-04-24

著者は素人のお知らせ

著者はこの分野の知見を広めてみようかなぁ~くらいの気持ちの人です。普通にメモです。

記事内で出てくるカーネルとはGPUで実行するプログラムのこと。

まとめ

CPUとGPUが合わさったプラットフォームでは帯域干渉が少ない影響が与える。本論文では効率的にCPUタスクをスケジューリングする方法を提案している。

Jetsonプラットフォームで起こる問題

JetsonのSoCのようなGPUとCPUがメインメモリを共有しているシステムではCPUでメモリ集中型タスクを実行するとGPU側に大きな影響を与えGPU性能が3分の1くらいになる。

BWLOCK++概要

BWLOCK++とはCPUのタスクからGPUカーネルを保護するためのソフトウェアフレームワークである。CPUタスクをスロットリング(性能抑制)してGPUタスクを保護する。そこでスロットリングが考慮されたCPUスケジューリングアルゴリズム (= TFS)が提案されている。具体的には以下の内容を実行している。

重要なGPUタスクが実行されている間はメモリ集中型タスクよりCPU集中型タスクを優先する。
よってメモリ集中型CPUタスク存在する中で帯域幅集中型GPUが性能を維持できることができる。CPU側のタスクのスループット損失も大幅に抑えられている。

用語の定義

  • メモリ集中型CPUタスク
    • CPUで実行されメモリ帯域を多く占有するタスク。
  • CPU集中型タスク
    • CPUの計算が多く占めるタスク。メモリへの負荷は低い
  • 帯域幅集中型GPUタスク
    • GPUで実行されメモリ帯域を多く必要とするタスク。

GPUはCUDA APIを通じて使用されその使われ方は典型的で予測可能であるためCUDA APIの呼び出しをトリガーにBWLOCK++が呼び出されるようにする。ただしソースには手を加えるのことは良くないとのことで動的リンカーとかを経由してバイナリに直接送り込む。

cudaMalloc -> cudaMemcpy -> kernel<<<...>>>> -> のような感じ

以下からBWLOCK++は構成される

  1. CUDA APIの実行具合を検出するダイナミックランタイムライブラリ。(ダイナミックリンカーレベルでプログラムバイナリに自動的にインストルメンテーションされる。
  2. CPUコアごとのバンド幅レギュレータ
  3. スロットルフェアスケジューラ

重要なGPUタスクが実行されている間は、CPUコアごとに単位時間あたりのメモリ転送量予算(クォータ)が割り当てられている。クォータを使い切ったコアはスロットルされる。そのためGPUタスクが実行中の間はCPU集中タスクを優先的に割り当てるようにスケジューリングする。
規制時間ごことに動作する(論文では1ms)突発的な負荷にも対応できる。また長期間にわたる飢餓を防ぐ。

BWLOCK++実装

プログラマーの介入が必要としないアプローチが支持されている。
Linuxのシステムコールを作っている。

note

LinuxのCFSスケジューラを使った。しかし副作用があるっぽい。

Armにもちゃんとあるのね(当たり前) L2D CACHE REFILL

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?