2016-07-24 2 views
4

В настоящее время я изучаю удобство использования Unreal Engine для интенсивного вычислительного проекта, и Google не был очень полезен.Параллельное вычисление с нереальным двигателем 4

Мне нужно сделать тяжелые вычисления на фоне игрового цикла для проекта, который в настоящее время реализован с использованием OpenMP. Моделирование жидкости.

Unreal Engine на окнах компилирует и создает с использованием визуальной студии и должен поддерживать поддержку того, что есть у компилятора Visual Studio, но мне непонятно, можно ли компилировать UE с соответствующими настройками для OpenMP. В качестве альтернативы, я мог бы легко выполнить эту работу с помощью потоковых блоков INTEL, которые, по-видимому, уже использовались в UE ... хотя, возможно, только часть распределения памяти?

В целом, я думаю, мой вопрос заключается в том, какая поддержка существует для кроссплатформенно распараллелированных вычислений с UE. Если вам нужно выполнить большое количество одинаковых вычислений на всех доступных ядрах, как вы это делаете в UE? Мне не интересно вручную создавать несколько потоков, запускать их на блоке кода, ждать завершения, присоединяясь и затем переходить. Я бы предпочел цикл parallel_for для своей цели.

Кроме того, интересно, как легко использовать другие фреймворки, такие как CUDA или OpenCL, из «скрипта» UE.

Я пришел из Unity, где я сделал обертки C# вокруг родных dll, написанных на C++, для высокой производительности, но я немного устал от этой оболочки, родной в C#, поэтому я бы предпочел двигатель на основе C++. но если это само по себе ограничено тем, что я могу сделать в моем коде на C++, то это не очень помогает ... Я предполагаю, что все это может работать, когда я узнаю, как, но меня немного смущает отсутствие возможности найти любая информация по любому из вышеуказанных вопросов. Все, что со словом «parallel» в нем вообще приводит к чертежам.

ответ

2

Там в ParallelFor() в UE, определяемое здесь: "Engine \ Source \ время выполнения \ Ядро \ Public \ Асинхронный \ ParallelFor.h"

Подпись является void ParallelFor(int32 Num, TFunctionRef<void(int32)> Body, bool bForceSingleThread = false)

Пример использования можно легко найти в исходные коды.

+0

Я вижу, что он используется в двигателе, но поиск в Интернете для нереального двигателя 4 и ParallelFor не дает абсолютно никакой информации. Мне это кажется странным. Вы уверены, что это перформация и предназначена для использования разработчиками? – JoeTaicoon

+1

@JoeTaicoon Да, я думаю, что он работает. И да, для разработчиков, я думаю, вы можете сказать, что вся база кода предназначена для разработчиков, несмотря на то, что некоторые из них плохо документированы. Не удивляйтесь, если вы не можете найти определенный фрагмент документа в Интернете, большая часть магии Unreal не находится в сети, они находятся только внутри исходных кодов, поэтому вам нужно внимательно прочитать коды. –

Смежные вопросы