unreal engine 4 的并行计算

Parallel computation with unreal engine 4

我目前正在研究 Unreal Engine 对于计算密集型项目的可用性,Google 并没有太大帮助。

我需要在游戏循环的后台为当前使用 OpenMP 实现的项目做一些繁重的计算。流体模拟。

Unreal Engine on windows 使用 visual studio 编译和构建,因此应该支持 visual studio 编译器所具有的功能,但我不清楚你是否可以使 UE 使用 OpenMP 的正确设置进行编译。 或者,我可以轻松地使用英特尔的线程构建块 TBB 来完成这项工作,这显然已经在 UE 中使用了……尽管可能只是内存分配器部分?

总的来说,我想我的问题是对使用 UE 的跨平台高度并行计算有什么支持。如果您需要在所有可用内核上执行大量相同的计算 运行ning,您如何在 UE 中执行此操作? 我对手动创建一定数量的线程不感兴趣,运行 它们在代码块中,通过加入等待完成,然后继续。为了我的目的,我更喜欢 parallel_for 循环。

此外,我想知道在 UE "script" 中使用其他框架(例如 CUDA 或 OpenCL)有多容易 "script"。

我来自 Unity,在那里我围绕原生 dll 制作了 c# 包装器,用 c++ 编写,以实现高性能,但我对这种在 c# 中的原生包装感到有点厌倦,所以我更喜欢基于 c++ 的引擎。 .. 但是如果这本身就限制了我在我的 c++ 代码中可以做的事情,那么它就没有太大帮助了......我认为它可以全部工作,当我学习如何做时,但我对无法做到这一点感到有点困惑查找有关上述任何问题的 any 信息。任何带有 "parallel" 字样的内容通常都会指向蓝图。

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

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

可以在源代码中轻松找到示例用法。