Spring version naming explained

Spring version naming explained

Discuss the source code and development of Spring Engine in general from a technical point of view. Patches go here too.

Moderator: Moderators

Post Reply
zerver
Spring Developer
Posts: 1358
Joined: 16 Dec 2006, 20:59

Spring version naming explained

Post by zerver »

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.
Image

Spring (ASIM GML OMP): Asynchronous simulation, multithreaded unit rendering OR OMP-based multithreading. If the game does not support ASIM:
Image
If the game supports ASIM:
Image

Spring MT (ASIM APATH GML): Multithreaded asynchronous simulation, asynchronous pathfinding, multithreaded unit rendering.
Image

gpl violation (MT-ASIM MT-APATH GML): Multithreaded asynchronous simulation, multithreaded asynchronous pathfinding, multithreaded unit rendering.
Image
Attachments
mt3.gif
(11.55 KiB) Downloaded 11 times
mt.gif
(20.42 KiB) Downloaded 8 times
mt2.gif
(16.68 KiB) Downloaded 8 times
Last edited by zerver on 03 Sep 2013, 00:37, edited 3 times in total.
muckl
Posts: 151
Joined: 30 Aug 2010, 07:18

Re: Spring version naming explained

Post by muckl »

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?
gajop
Moderator
Posts: 3051
Joined: 05 Aug 2009, 20:42

Re: Spring version naming explained

Post by gajop »

Can you also clarify which of these options are chosen on compile time and which can be configured at run time?
dansan
Server Owner & Developer
Posts: 1203
Joined: 29 May 2010, 23:40

Re: Spring version naming explained

Post by dansan »

Nice - thanx!

Copy to wiki/faq/engine_naming ?
User avatar
jK
Spring Developer
Posts: 2299
Joined: 28 Jun 2007, 07:30

Re: Spring version naming explained

Post by jK »

Your OMP drawing is incorrect, it always leaves one core free for OS & aux.
zerver
Spring Developer
Posts: 1358
Joined: 16 Dec 2006, 20:59

Re: Spring version naming explained

Post by zerver »

gajop wrote:Can you also clarify which of these options are chosen on compile time and which can be configured at run time?
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.
muckl wrote:where can i get the windows EXE of these special builds?
do they stay in sync? are they compatible with current server versions?
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_MT
jK wrote:Your OMP drawing is incorrect, it always leaves one core free for OS & aux.
Thanks, fixed.
User avatar
Silentwings
Posts: 3720
Joined: 25 Oct 2008, 00:23

Re: Spring version naming explained

Post by Silentwings »

This build is unofficial. If the game supports ASIM/GML:
How do we work out if our game supports it or not? :P
muckl
Posts: 151
Joined: 30 Aug 2010, 07:18

Re: Spring version naming explained

Post by muckl »

zerver wrote:
muckl wrote:where can i get the windows EXE of these special builds?
do they stay in sync? are they compatible with current server versions?
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_MT
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..

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?
zerver
Spring Developer
Posts: 1358
Joined: 16 Dec 2006, 20:59

Re: Spring version naming explained

Post by zerver »

Silentwings wrote:
If the game supports ASIM/GML:
How do we work out if our game supports it or not? :P
http://springrts.com/wiki/Asynchronous_Simulation
muckl wrote:its not compatible with normal hosts im right?
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:2 or 3 non MT special build versions are configured by runtime.. then i wonder how i can change it
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...
abma
Spring Developer
Posts: 3798
Joined: 01 Jun 2009, 00:08

Re: Spring version naming explained

Post by abma »

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?!
zerver
Spring Developer
Posts: 1358
Joined: 16 Dec 2006, 20:59

Re: Spring version naming explained

Post by zerver »

abma wrote:does spring mt (GML) call opengl from different threads?

when looking at the graphics it looks like different threads share one opengl context?!
The main-render/main-sim/render-helper threads share context unless MultiThreadShareLists = 0

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.
Post Reply

Return to “Engine”