Open2

UnityのBurstについて適当にまとめる

eisukeeisuke

リンク集

https://blog.unity.com/ja/technology/enhancing-mobile-performance-with-the-burst-compiler
https://gametukurikata.com/dots/csharpjobsystemandburstcompiler
https://www.slideshare.net/UnityTechnologiesJapan002/cllvmburst-188106750

バーストコンパイラの良い点

  • DOTSの機能の一部
  • DOTSはめちゃくちゃ早いとの噂(読み取るのに効率の良いデータ配置が実現されている)
  • 手軽現在のプロジェクトに入れやすいと思った
    処理が軽い

実行手順

  1. c#
  2. IL
  3. バーストコンパイル
  4. IR
  5. LLVMコンパイル
  6. 機械語

なぜ早い

LLVMを噛ませているから
SIMDを利用しているから
メモリエイリアス考慮

LLVMとは

IR(中間言語)を最適化されたパスでより高速な実行可能ファイルを生成する仮想マシンである。
オープンソース

SIMDとは

並行処理

メモリエイリアス考慮

弱点

C# Job System でしか利用できない
ヒープ領域なオブジェクト(クラスなどは使えない、ストラクトのみ)
例外処理も使えない

C# Job System とは

  • CPUのコア数だけ並列してJobを行える
  • 早く終わると他のコアにあるJobをこなすようになっている

どのような場面で使うべき?

  • 現状はUnityのAPIは利用できない
  • 単純な計算をさせることぐらい
  • 他の利用例を調べてみたがテクスチャにノイズを出したり大量のオブジェクトのの位置を動かすくらいしかなかった
  • 今後に期待
eisukeeisuke

Burstを使ってみた

パッケージマネージャーからインストール

Jobを定義

Jobを実行(バーストコンパイル起動)