2016-07-24 1 views
4

Je suis actuellement à la recherche de la facilité d'utilisation d'Unreal Engine pour un projet de calcul intensif et Google n'a pas été très utile.Calcul parallèle avec moteur irréel 4

J'ai besoin de faire un gros calcul, en arrière-plan de la boucle de jeu, pour le projet, qui est actuellement implémenté en utilisant OpenMP. Une simulation de fluide. Unreal Engine sur windows compile et construit en utilisant Visual Studio et devrait donc supporter ce que le compilateur Visual Studio a, mais je ne sais pas si vous pouvez compiler UE avec les paramètres appropriés pour OpenMP. Alternativement, je pourrais facilement faire ce travail avec les blocs de construction TBB d'Intels, qui est apparemment déjà utilisé dans l'UE ... mais peut-être seulement la partie allocateur de mémoire?

En général, je suppose que ma question est de savoir quel est le support pour le calcul multi-plateforme fortement parallélisé avec UE. Si vous avez besoin de faire un grand nombre de calculs identiques sur tous les cœurs disponibles, comment le faites-vous dans l'UE? Je ne suis pas intéressé par la création manuelle d'un certain nombre de threads, exécutez-les sur du code de blocs, attendez la fin en rejoignant et ensuite continuez. Je préférerais de loin une boucle parallel_for pour mon but. En outre, je me demande comment il est facile d'utiliser d'autres frameworks tels que CUDA ou OpenCL à l'intérieur d'un "script" UE. Je viens d'Unity où j'ai fait des wrappers C# autour de DLL natives, écrites en C++, pour de hautes performances, mais je suis un peu fatigué de ce wrapping natif en C#, donc je préférerais beaucoup un moteur C++. mais si cela même est limité dans ce que je peux faire dans mon code C++, alors ce n'est pas beaucoup d'aide ... Je suppose que tout peut fonctionner, quand j'apprends comment, mais je suis un peu confus de ne pas pouvoir trouver des informations sur l'une des questions ci-dessus. Quelque chose avec le mot "parallèle" en elle conduit généralement à des plans.

Répondre

2

Il y a un ParallelFor() dans UE, défini ici: "Engine \ Source \ Runtime \ Core \ Public \ Async \ ParallelFor.h"

Signature est void ParallelFor(int32 Num, TFunctionRef<void(int32)> Body, bool bForceSingleThread = false)

Exemple d'utilisation se trouve facilement dans les codes sources.

+0

Je le vois utilisé dans le moteur, mais la recherche en ligne pour unreal engine 4 et ParallelFor ne donne absolument aucune information. Cela me semble plutôt étrange. Êtes-vous sûr qu'il s'agit d'une perforation destinée à être utilisée par un développeur? – JoeTaicoon

+1

@JoeTaicoon Oui, je pense que ça fonctionne. Et oui, c'est pour le développeur à utiliser, je pense que vous pouvez dire que toute la base de code est à utiliser par le développeur, même si certains d'entre eux ne sont pas bien documentés. Ne soyez pas surpris si vous ne pouvez pas trouver certains documents en ligne, la plupart de la magie Unreal n'est pas en ligne, ils ne sont que dans les codes sources, donc vous devez lire attentivement les codes. –