使用虚幻引擎4进行并行计算

Parallel computation with unreal engine 4

本文关键字:并行计算 引擎      更新时间:2023-10-16

我目前正在为一个计算密集型项目研究虚幻引擎的可用性,谷歌并没有提供太多帮助。

我需要在游戏循环的背景下为该项目做一些繁重的计算,该项目目前使用OpenMP实现。流体模拟。

windows上的虚幻引擎使用visual studio进行编译和构建,因此应该支持visual studio编译器的功能,但我不清楚您是否可以使用OpenMP的正确设置进行UE编译。或者,我可以很容易地使用Intels线程构建块TBB,它显然已经在UE中使用了。。。尽管可能只是内存分配器部分?

一般来说,我想我的问题是,对UE的跨平台高度并行化计算有什么支持。如果你需要在所有可用的核心上运行大量相同的计算,你如何在UE中做到这一点?我对手动创建一些线程,在块代码上运行它们,通过连接等待完成,然后继续前进不感兴趣。出于我的目的,我更喜欢并行_for循环。

此外,我想知道在UE"脚本"中使用CUDA或OpenCL等其他框架有多容易。

我来自Unity,在那里我围绕用c++编写的原生dll制作了c#包装器,以获得高性能,但我有点厌倦了用c#包装原生dll,所以我更喜欢基于c++的引擎。。。但如果这本身在我的c++代码中所能做的事情上是有限的,那么这并没有多大帮助。。。我想当我学会如何操作时,这一切都会奏效,但我有点困惑,因为我找不到关于上述任何问题的任何信息。任何带有"平行"一词的东西通常都会产生蓝图。

UE中有一个ParallelFor.(),定义如下:"Engine\Source\Runtime\Core\Public\Async\ParallelFor.h"

签名为void ParallelFor(int32 Num, TFunctionRef<void(int32)> Body, bool bForceSingleThread = false)

示例使用可以很容易地在源代码中找到。