我目前正在研究虚幻引擎在计算密集型项目中的可用性,谷歌并没有提供太大帮助。
我需要在游戏循环的后台为当前使用 OpenMP 实现的项目做一些繁重的计算。流体模拟。
Windows 上的虚幻引擎使用 visual studio 进行编译和构建,因此应该支持 visual studio 编译器所具有的功能,但我不清楚您是否可以使用 OpenMP 的正确设置进行 UE 编译。 或者,我可以轻松地使用英特尔的线程构建 block TBB 来完成这项工作,这显然已经在 UE 中使用了……尽管可能只是内存分配器部分?
总的来说,我想我的问题是对使用 UE 的跨平台高度并行计算有什么支持。如果您需要在所有可用内核上运行大量相同的计算,您如何在 UE 中执行此操作? 我对手动创建一些线程、在 block 代码上运行它们、通过加入等待完成然后继续前进不感兴趣。对于我的目的,我更喜欢 parallel_for 循环。
此外,我想知道从 UE“脚本”中使用其他框架(如 CUDA 或 OpenCL)有多容易。
我来自 Unity,在那里我围绕原生 dll 制作了 c# 包装器,用 c++ 编写,以实现高性能,但我对这种在 c# 中的原生包装感到有点厌倦,所以我更喜欢基于 c++ 的引擎......但是如果这本身就限制了我在我的 C++ 代码中可以做的事情,那么它就没有多大帮助了......我认为它可以全部工作,当我学习如何做时,但是我因为无法找到而感到有点困惑 < em>any 有关上述任何问题的信息。任何带有“平行”一词的内容通常都会指向蓝图。
最佳答案
UE中有一个ParallelFor(),定义在这里:"Engine\Source\Runtime\Core\Public\Async\ParallelFor.h"
签名是void ParallelFor(int32 Num, TFunctionRef<void(int32)> Body, bool bForceSingleThread = false)
可以在源代码中轻松找到示例用法。
关于c++ - 虚幻引擎4并行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38554767/