c++ - 虚幻引擎4并行计算

标签 c++ multithreading parallel-processing unreal-engine4

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

我需要在游戏循环的后台为当前使用 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/

相关文章:

c++ - 在 DirectX9 中旋转单个对象

c++ - Qt 布局系统(QTextEdit 没有最小尺寸)

objective-c - Objective-C 中的异步调用

java - 单击按钮停止线程

r - 对代码块使用 magic.wand 函数

c++ - 与二维数组中的 .bmp 的简单碰撞?

c++ - 递归替换子字符串的最快算法

java - 线程优先级算法的正确性

go - 序列化 goroutines(并行化但保证顺序)

c++ - VS 自动并行化