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

6

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

对于该项目中在游戏循环的后台执行的大量计算,我需要使用OpenMP进行实现。这是流体模拟。

Windows上的虚幻引擎使用Visual Studio进行编译和构建,并且应当支持Visual Studio编译器所支持的内容,但我不确定是否可以使用适当的设置使UE编译能够支持OpenMP。 或者,我可以轻松地使用英特尔Threading Building Blocks TBB完成此工作,这似乎已经被用于UE…尽管可能只是内存分配器部分?

总的来说,我的问题是UE是否支持跨平台的高度并行化计算。如果您需要在所有可用核心上运行大量相同的计算,那么如何在UE中实现呢? 我不想手动创建一些线程,运行它们的代码块,通过连接等待完成,然后继续移动。我更喜欢使用parallel_for循环。

此外,我想知道从UE“脚本”中使用其他框架(如CUDA或OpenCL)有多容易。

我来自Unity,在那里我为高性能编写了c++的本地dll的c#包装器,但我对用c#包装本机代码有些疲倦,因此我更喜欢基于c++的引擎......但是,如果它本身在我的c++代码中所能做的有限,那么这并没有太大帮助......我认为当我学习时它都可以完成,但是我已经被找不到上述问题的任何信息搞得有点困惑了。任何带有“parallel”一词的内容通常都会导致蓝图。

1个回答

5

UE中有一个ParallelFor()函数,定义在 "Engine\Source\Runtime\Core\Public\Async\ParallelFor.h" 中。

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

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


我在引擎中看到它的使用,但在线搜索虚幻引擎4和ParallelFor却没有任何信息。这对我来说似乎相当奇怪。你确定它是高效的并且是为开发人员使用的吗? - JoeTaicoon
1
@JoeTaicoon 是的,我认为它正在工作。而且是供开发人员使用的,我想你可以说整个代码库都是供开发人员使用的,尽管其中一些没有很好地记录。如果你在网上找不到某些文档片段,请不要感到惊讶,大部分虚幻引擎的魔力都不在网上,它们只存在于源代码中,所以你必须仔细阅读代码。 - Marson Mao

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接