matlab2019 编译器_Burst 编译器,让Arm 架构中的Unity 项目性能最大化

Burst编译器作为Unity的一项新技术,能够帮助开发者利用ArmNeon指令集提高安卓设备上的游戏性能。通过将游戏代码优化并转换为高效的二进制文件,Burst实现了更好的性能表现、更低的功耗和更丰富的用户体验。本文介绍Burst的工作原理及如何在Unity项目中使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Burst 编译器的最新技术可以帮助Unity 开发者们利用起Arm Neon 指令集,在安卓设备上,Arm 架构下的Unity 项目可借助Burst 编译器提高性能。

Unity 与Arm 在此前确立了合作伙伴关系,致力于提升安卓生态中数十亿由Arm 驱动的移动设备的游戏开发体验。

对于游戏开发者来说,性能就是一切。Arm 年复一年地改进CPU 与GPU 技术,为打造丰富体验而不断提高设备性能。最近,Arm发布了两款新产品:大幅提升了性能的Cortex-A78 以及Cortex-X1。这两种全新的硬件则由新的Arm 架构编译器技术——Burst 来补足。在开发游戏时,Burst 编译器会将游戏优化后转译为高效的二进制文件,让游戏能最大限度地利用起Arm 架构的性能。

Burst 介绍

Burst 是一种超前的编译器技术,使用数据科技栈(DOTS)和Job System制作的Unity 项目可借助Burst 技术提高运行性能。Burst 通过被称为“高性能C#(HPC#)”的子语言集完成编译,通过应用LLVM 编译器框架下的高级优化方法来实现设备能源的高效利用。

Burst 可以帮助APP利用并行机制。它使用起来是否简单,可以为CPU算法带去大量的性能增益。在下方视频中,你将看到启用Burst和未启用Burst两个demo环境的直接对比。

43643257f6c32adf1df37f90c14dd9c9.gif

可以看到Burst 编译的代码可以在帧上计算更多的物理元素,让性能更高、硬件发热更少、能耗更低,可展现的内容也更吸引人。

Burst 原理介绍

Burst 在默认条件下就能带来更多性能增益,这是什么原理呢?

Burst 可将HPC# 转译成LLVM IR,一种LLVM 编译器框架使用的媒介语言,从而完全利用起LLVM 在Arm 架构下的代码生成功能,将程序的数据流转换成优化后的高效机器码。

下方图表展示了该流程。

37ddd4f1d463d0a9b7a132e02689f940.pngBurst 可以显示出HPC# 和DOTS 框架中的数组混叠限制,利用起LLVM 对硬件架构的了解,这使Burst 可以根据针对Unity API 编写脚本的属性,进行有针对性的转换。

如何编写Burst 程序

Burst 可以编译使用了DOTS Jobs System 的C# 脚本。使用时,只需在Job 定义前添加一个[BurstCompile]属性:

[BurstCompile]struct MyJob : IJob{  public NativeArray Input;  public NativeArray Output;  public void Execute()  {  for (int I = 0; I < Input.Length; i++)  {    Output[i] = Input[i] * Input[i];  }  }}
右滑查看完整代码在Jobs 菜单中的Busrt Inpsctor 内,我们可以看到生成的代码。注意,下方演示禁用了安全限制(Safety Checks),Burst 版本为1.3.3。96eca0b55a77e27c0a1ab55d7fd6816a.png在弹出的Burst Inspector 中,我们勾选了目标架构为ARMV8A_AARCH64,启用了Armv8-A 的代码生成功能。e12cb2b782c27c7ce1b3cc02b13dd693.png接着就能看到为C# 循环、及使用Neon 指令集的循环生成的AArch64 代码了。b812f8fef89dcc4ce9a08edb984cd780.png要想进一步了解如何使用Burst 编译器,请参阅指令说明手册。

0ba226b473b2a1382c2a2e3fe2cc7655.png

文中提及的相关链接:

[1] Unity DOTS:

https://unity.com/cn/dots

[2] Burst 指令说明手册:

https://docs.unity3d.com/Packages/com.unity.burst@1.3/manual/index.html

[3] Arm Neon 指令集:

https://developer.arm.com/documentation/dht0002/a/Introducing-NEON/NEON-architecture-overview/NEON-instructions

[4] Cortex-A78:

https://www.arm.com/products/silicon-ip-cpu/cortex-a/cortex-a78

[5] Cortex-X1:

https://www.arm.com/products/cortex-x

6807f7c9270bc0150aa75b9ca0f4e713.png

2b16815b43a18c0ec81a01204e02152e.png

054a2b2ee2d8013760e1699d17eed516.png

101b8bac6f791791ad765b3cd3140adf.png

a1b5ff542b8cf690c2b728d8b03c2f9f.png

882055b3283caf10d64032049925a5b6.png

42342eb957b9bef31de8877667f594c7.png

 每一个“在看”,都是我们前进的动力 

409ecfdf2178c0ea143fc7520d44d078.gif
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值