docs.unity3d.com
    目次を表示する/隠す

    プロジェクトのビルド

    プロジェクトのビルド時には、Burst はコードをコンパイルし、単一の動的ライブラリを作成して、ターゲットに指定されたプラットフォームの Plugins フォルダーに配置します。例えば、Windows の場合、このパスは Data/Plugins/lib_burst_generated.dll です。

    Note

    ターゲットプラットフォームが iOS の場合はこれとは異なります。Apple には TestFlight への提出要件があるため、Unity では静的ライブラリを生成します。

    Job System のランタイムは、Burst でコンパイルされたメソッドが初めて呼び出されるときに、生成済みのライブラリをロードします。

    Burst の AOT コンパイルを制御するには、Player Settings ウィンドウの Burst AOT Settings セクションの設定を使用します (Edit > Player Settings > Burst AOT Settings)。詳細については、Burst AOT Settings リファレンス を参照してください。

    クロスコンパイルのないプラットフォーム

    デスクトップ以外のプラットフォーム用にコンパイルする場合、Burst コンパイルには (IL2CPP のような) 特定のプラットフォームコンパイルツールが必要です。デスクトッププラットフォーム (macOS、Linux、Windows) のデフォルトでは、Burst AOT Settings で Use Platform SDK Linker 設定を有効にしない限り、外部ツールチェーンのサポートは必要ありません。

    下の表は、各プラットフォームでの AOT コンパイルのサポートレベルを示しています。無効なターゲット (ツールがないかサポートされていない) が選択された場合、Unity は Burst コンパイルを使用しません。そのためビルドに失敗する可能性がありますが、Unity は Burst の最適化なしでターゲットをビルドします。

    Note

    Burst は、デフォルトでデスクトッププラットフォーム (macOS/Linux/Windows) 間のクロスコンパイルをサポートします。

    ホストのエディタープラットフォーム ターゲットのプレイヤープラットフォーム サポートされる CPU アーキテクチャ 外部ツールチェーンの要件
    Windows Windows x86 (SSE2、SSE4)
    x64 (SSE2、SSE4、AVX、AVX2)
    なし
    Windows ユニバーサル Windows プラットフォーム (UWP) x86 (SSE2、SSE4)
    x64 (SSE2、SSE4、AVX、AVX2)
    ARM32 (Thumb2、Neon32)
    ARMV8 AARCH64

    ノート: UWP ビルドでは常に 4 つのターゲットすべてをコンパイルします。
    Visual Studio 2017
    ユニバーサル Windows プラットフォーム開発ワークフロー
    C++ ユニバーサルプラットフォームツール
    Windows Android x86 SSE2
    ARMV7 (Thumb2、Neon32)
    ARMV8 AARCH64 (ARMV8A、ARMV8A_HALFFP、ARMV9A)
    Android NDK

    重要: Unity Hub から (Add Component で) インストールした Android NDK を使用してください。Burst は、Unity の外部ツールの設定が行われていない場合、ANDROID_NDK_ROOT 環境変数によって指定されている NDK にフォールバックします。
    Windows Magic Leap ARMV8 AARCH64 Lumin SDK は Magic Leap Package Manager 経由でインストールし、Unity エディター の Preferences の External Tools で設定する必要があります。
    Windows Xbox One x64 SSE4 Microsoft XDK または Microsoft GDK
    Windows Xbox Series x64 AVX2 Microsoft GDK
    Windows PlayStation 4 x64 SSE4 PS4 SDK バージョン 8.00 以上
    Windows PlayStation 5 x64 AVX2 PS5 SDK バージョン 2.00 以上
    Windows Nintendo Switch ARMV8 AARCH64 なし
    macOS macOS x64 (SSE2、SSE4、AVX、AVX2)、Apple Silicon なし
    macOS iOS ARM32 Thumb2/Neon32、ARMV8 AARCH64 コマンドラインツールをインストール済みの Xcode (xcode-select --install)
    macOS Android x86 SSE2
    ARMV7 (Thumb2、Neon32)
    ARMV8 AARCH64 (ARMV8A、ARMV8A_HALFFP、ARMV9A)
    Android NDK

    重要: Unity Hub から (Add Component で) インストールした Android NDK を使用してください。Burst は、Unity の外部ツールの設定が行われていない場合、ANDROID_NDK_ROOT 環境変数によって指定されている NDK にフォールバックします。
    macOS Magic Leap ARMV8 AARCH64 Lumin SDK は Magic Leap Package Manager 経由でインストールし、Unity エディター の Preferences の External Tools で設定する必要があります。
    Linux Linux x64 (SSE2、SSE4、AVX、AVX2) なし

    ターゲット CPU の上限はプラットフォームごとにハードコードされています。デスクトッププラットフォーム (Windows/Linux/macOS) をターゲットとするスタンドアロンビルドの場合、サポートされるターゲットは Burst AOT Settings で選択できます。

    Burst に対応していないプロジェクト

    プロジェクトによっては、コンパイラーに Burst を使用できないものもあります。

    • Windows エディターで作成した iOS プロジェクト
    • Linux エディターで作成した Android プロジェクト
    • Create Xcode Project オプションで生成した Xcode プロジェクト

    複数の Burst ターゲット

    Burst でビルド時に複数のターゲットプラットフォームをコンパイルする場合は、別々にコンパイルを実行する必要があります。例えば、X64_SSE2 と X64_SSE4 をコンパイルする場合、Burst では、選択した各ターゲットのコードを生成するために別々に 2 回コンパイルを実行する必要があります。

    ターゲットの組み合わせを最小限に抑えるために、Burst のターゲットプラットフォームには、基盤となるプロセッサー命令セットを複数用意する必要があります。

    • SSE4.2 は SSE4.2 と POPCNT 命令セットを必要とします。
    • AVX2 は AVX2、FMA、F16C、BMI1、および BMI2 の各命令セットを必要とします。
    • ARMV8A は基本的な Armv8-A CPU ターゲットです。
    • ARMV8A_HALFFP は、ARMV8A に拡張子 fullfp16、dotprod、crypto、crc、rdm、lse を追加したものです。つまり、実質的には Cortex A75/A55 以降のコアです。
    • ARMV9A は ARMV8A_HALFFP に SVE2 サポートを追加したものです。つまり、実質的には Cortex X2/A710/A510 以降のコアです。重要: 現在、このターゲットは実験的なものです。

    ランタイム CPU 機能に基づく動的ディスパッチ

    すべての x86/x64 CPU デスクトッププラットフォーム、および Android 上の 64 ビット Arm については、Burst はランタイムに利用可能な CPU 機能を考慮し、コンパイル対象のさまざまなバージョンにジョブをディスパッチします。

    x86 および x64 の各 CPU の場合、Burst がランタイムにサポートする命令セットは SSE2 および SSE4 のみです。

    例えば、動的 CPU ディスパッチを使用し、CPU で SSE3 以下がサポートされている場合、Burst は自動的に SSE2 を選択します。

    トップに戻る
    Copyright © 2023 Unity Technologies — 商標と利用規約
    • 法律関連
    • プライバシーポリシー
    • クッキー
    • 私の個人情報を販売または共有しない
    • Your Privacy Choices (Cookie Settings)