Because the version naming scheme has changed, and someone requested a sticky, I am posting a cleaned up version of the explanation I posted in News.
Terminology
Asynchronicity: Tasks A, B, ... , N are solved in an interleaved fashion, instead of one after the other.
Multithreading: Task A is split into multiple sub-tasks A1, A2, ... , AN which are solved in parallel.
Multithreading will always be faster if you add more CPU cores, while asynchronicity is limited due to a fixed number of tasks. Asynchronous tasks typically also take a bigger performance hit when they need to be synchronized at certain points.
Spring: Singlethreaded simulation (less than 5% multithreaded).
Spring MT: A special build with multithreaded simulation (~50%).
gpl violation: Another special build with multithreaded simulation and pathfinding (>75%).
ASIM: Asynchronous simulation.
APATH: Asynchronous pathfinding.
GML: OpenGL Mulithreading Library. Multithreaded unit rendering based on a queuing mechanism.
OMP: OpenMP, an open standard for multithreading. Currently mostly used during game startup, but the pathfinders also use some OMP, and there is a little for the rendering as well. OMP is disabled if ASIM is enabled.
MT-Sim: Same as ASIM GML. A confusing name that will not be used anymore.
Examples
Spring (OMP): OMP-based multithreading.
Spring (ASIM GML OMP): Asynchronous simulation, multithreaded unit rendering OR OMP-based multithreading. If the game does not support ASIM:
If the game supports ASIM:
Spring MT (ASIM APATH GML): Multithreaded asynchronous simulation, asynchronous pathfinding, multithreaded unit rendering.
gpl violation (MT-ASIM MT-APATH GML): Multithreaded asynchronous simulation, multithreaded asynchronous pathfinding, multithreaded unit rendering.
Spring version naming explained
Moderator: Moderators
Re: Spring version naming explained
thanks!
and where can i get the windows EXE of these special builds?
do they stay in sync? are they compatible with current server versions?
and where can i get the windows EXE of these special builds?
do they stay in sync? are they compatible with current server versions?
Re: Spring version naming explained
Can you also clarify which of these options are chosen on compile time and which can be configured at run time?
Re: Spring version naming explained
Nice - thanx!
Copy to wiki/faq/engine_naming ?
Copy to wiki/faq/engine_naming ?
Re: Spring version naming explained
Your OMP drawing is incorrect, it always leaves one core free for OS & aux.
Re: Spring version naming explained
The deprecated engine-default build equals picture 1 above, while the engine-multithreaded build can be run-time configured according to picture 2 or 3.gajop wrote:Can you also clarify which of these options are chosen on compile time and which can be configured at run time?
Only picture 4 is a special build. I suggest waiting for 94.0 due to the bugs in 93.1, but you can read http://springrts.com/wiki/Spring_MTmuckl wrote:where can i get the windows EXE of these special builds?
do they stay in sync? are they compatible with current server versions?
Thanks, fixed.jK wrote:Your OMP drawing is incorrect, it always leaves one core free for OS & aux.
- Silentwings
- Posts: 3720
- Joined: 25 Oct 2008, 00:23
Re: Spring version naming explained
How do we work out if our game supports it or not?This build is unofficial. If the game supports ASIM/GML:
Re: Spring version naming explained
ah ok thats the mt exe i know and did not know that i should use special mt servers to play on with this ver.. so its not compatible with normal hosts im right? cuz wiki says u cannot join MT server with non MT client but nowhere i can read about if a client (MT) joins a (not MT) server..zerver wrote:Only picture 4 is a special build. I suggest waiting for 94.0 due to the bugs in 93.1, but you can read http://springrts.com/wiki/Spring_MTmuckl wrote:where can i get the windows EXE of these special builds?
do they stay in sync? are they compatible with current server versions?
next question: when i read, that the 2 or 3 non MT special build versions are configured by runtime.. then i wonder how i can change it
ingame commando? parameterized start?
Re: Spring version naming explained
http://springrts.com/wiki/Asynchronous_SimulationSilentwings wrote:How do we work out if our game supports it or not?If the game supports ASIM/GML:
It is compatible, but only the special MT hosts can use the MT exe. If you try it with a normal host, it will automatically restart with a non-MT exe.muckl wrote:its not compatible with normal hosts im right?
The games that support it will automatically enable it. You can force enable it with the MultiThreadCount setting, but is not recommended because the game may not work...muckl wrote:2 or 3 non MT special build versions are configured by runtime.. then i wonder how i can change it
Re: Spring version naming explained
i guess this question was answered some time ago, but i can't find it:
does spring mt (GML) call opengl from different threads?
when looking at the graphics it looks like different threads share one opengl context?!
does spring mt (GML) call opengl from different threads?
when looking at the graphics it looks like different threads share one opengl context?!
Re: Spring version naming explained
The main-render/main-sim/render-helper threads share context unless MultiThreadShareLists = 0abma wrote:does spring mt (GML) call opengl from different threads?
when looking at the graphics it looks like different threads share one opengl context?!
MultiThreadShareLists = 0 usually gives higher FPS, but games/widgets may not work with this setting, since it requires all OpenGL to be executed in the main-render thread.