2016-07-24 76 views
4

我目前正在研究虛幻引擎對於計算密集型項目的可用性,Google並沒有非常有幫助。虛幻引擎並行計算4

我需要在遊戲循環的背景下爲當前使用OpenMP實現的項目執行一些繁重的計算。流體模擬。

Windows上的虛幻引擎使用visual studio編譯和構建,應該支持visual studio編譯器具有的功能,但是如果您可以使用適當的OpenMP設置編譯UE,我不清楚。 或者,我可以很容易地使用英特爾線程構建模塊TBB,這顯然已經用於UE ...雖然也許只有內存分配器的一部分?

一般來說,我想我的問題是什麼支持與跨平臺嚴重並行計算與UE。如果您需要在所有可用內核上執行大量相同的計算,那麼您如何在UE中執行此操作? 我不想手動創建一些線程,在塊代碼上運行它們,等待通過加入完成,然後繼續前進。我更喜歡parallel_for循環來達到我的目的。另外,我想知道在UE「腳本」中使用其他框架(如CUDA或OpenCL)是多麼容易。

我來自Unity,我用C++編寫了C++的本地dll包裝,用C++編寫,以獲得高性能,但是我對c#中的原生環境感到厭倦,所以我更喜歡基於C++的引擎。 。但如果這本身在我的C++代碼中所能做到的地方是有限的,那麼它就沒有多大的幫助了......當我學會如何時,我認爲它可以工作,但是我由於無法找到而感到困惑任何有關上述任何問題的信息。任何與「平行」一詞的東西通常都會導致藍圖。

回答

2

有一個ParallelFor()的UE,這裏定義: 「發動機\來源\運行\核心\公用\異步\ ParallelFor.h」

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

使用示例可以很容易地發現源代碼。

+0

我看到它在引擎中使用,但在線搜索虛幻引擎4和ParallelFor並不提供任何信息。這對我來說似乎很奇怪。你確定這是開發者使用的行爲嗎? – JoeTaicoon

+1

@JoeTaicoon是的,我認爲它工作。對於開發人員來說,我認爲你可以說整個代碼都是供開發人員使用的,不管他們中有些沒有很好的文檔記錄。如果你不能在網上找到某個文件,不要驚訝,大部分虛幻魔法不在線,它們只在源代碼內部,所以你必須仔細閱讀代碼。 –