2) Fixed an extremely rare issue where action execution might be terminated early.
3) Improved logging to provide better visibility when actions fail resulting in dependent actions not getting executed (i.e. not all actions being logged with no error feedback)
4) Fixed issue where not all error messages would be logged prior to the build summary
#rb tbd
[CL 26507830 by Tim Smith in ue5-main branch]
* ParallelExecutor - Fixed bug where totalactions was used to set maxweight.. this means that if 35 cl.exe actions were queued (which has weight 1.5) it would only build max 23 actions in parallel even though NumParallelProcesses might be higher (computer might have 128 cores)
[CL 26379886 by henrik karlsson in ue5-main branch]
* Added AdditionalDescription parameter to ParallelExecutor.RunAction
* Added bCanExecuteInBox for actions
[CL 25968700 by henrik karlsson in ue5-main branch]
[FYI] Joe.Kirchoff
Original CL Desc
-----------------------------------------------------------------
UnrealBuildTool: More automated code cleanup
#rnx
[CL 25695155 by joe kirchoff in ue5-main branch]
2) Reworked how "stop after error" works
3) Fixed issue where error propagation might result in a failure to exit.
#rb self
#preflight 645b7ef03172e962d2cf3e47
[CL 25402787 by tim smith in ue5-main branch]
2) Moved common code from executors into an immediate action queue.
3) Added support in the immediate action queue to read/write artifacts
#rb joe.kirchoff
#preflight 6454f3c5ed7ffaa0f5b2fbfa
[CL 25355149 by tim smith in ue5-main branch]
Fixed an issue where it was possible to do more parallel actions than cores available.
#rb joe.kirchoff
#preflight 640bc8aa363e9b40abeac263
[CL 24600925 by bryan sefcik in ue5-main branch]
Why do this:
Currently when compiling a cpp file with MSVC, it compiles across multiple cores while clang does not. This means that while we support limiting the number of cores(using ProcessorCountMultiplier), MSVC will use more cores than we specify. It also means that MSVC will always be faster when compiling because clang does not support compiling a cpp over multiple cores. To get similiar results when compiling with clang, we set the weight of MSVC to 1.5 and the weight of clang to 1.0. We then set the ProcessorCountMultiplier to 1.5. This results in MSVC and clang taking roughly the same amount of CPU utilization and clang compiles to be much faster.
Old Timing(secs) Old CPU Utilization New Timing New CPU Utilization(secs)
PlatformA AncientGame 590.94 51 431.47 73
MSVC AncientGameEditor 1016.96 94 1026.08 95
Clang AncientGameEditor 1543.72 63 1270.4 84
PlatformB AncientGame 494 52 396.95 74
Old = without weight path
New = with weight path
#jira
#rb christopher.waters, joe.kirchoff
#preflight 6409026c8832f48a4dc72025
[CL 24567859 by bryan sefcik in ue5-main branch]
* Changed so ParallelExecutor is creating build tasks as resources becomes available instead of building up a big task graph up front. The way the previous parallel executor was implemented could cause poor utilization of resources.
With this change plus 23915597 FortniteEditor wall time went down from ~15m to 13m (tested three times with and without changes)
#preflight 63d5d8eb5c69f453c19e5385
#rb Joe.Kirchoff
[CL 23923458 by henrik karlsson in ue5-main branch]