HELP:Lack of Hyper-Threading support in official version ;-(

HELP:Lack of Hyper-Threading support in official version ;-(

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
User avatar
Ulpian
Posts: 8
Joined: 20 Jun 2006, 23:53

HELP:Lack of Hyper-Threading support in official version ;-(

Post by Ulpian »

Well, I have P4 2.8HT Prescott and WinXP. TA Spring uses only one virtual CPU. So I "have" only P4 ~1.4GHz for TA SPring. Total CPU usage is ~50%. Of course I could diasble HT, but most of my programs use HT happily.

1. Is this a code or compilation fault ?
2. Can anybody help with this ?

Slightly OFF-Topic:

3. Is there any chance for SSE2 or SSE3 ;) compilation of TA Spring ?
4. There is newer version of 7za.exe - just download latest 7-zip and copy 7z.exe over 7za.exe
User avatar
AF
AI Developer
Posts: 20687
Joined: 14 Sep 2004, 11:32

Post by AF »

7za.exe is part of springSP, you must ahve downloaded NTai, so thanks for the tip.

Other than that, we have a whole host of sync problems, whatsmore not all computers support SSE3, so you might end up with sync errors for those unable to use it.
hollowsoul
Posts: 665
Joined: 06 Jun 2006, 19:49

Post by hollowsoul »

http://en.wikipedia.org/wiki/Hyperthreading

Hyperthreadin basicly is a virtual cpu
If not all parts of your cpu = be used up... and room leftover for another program, allowing the operating system to schedule two threads or processes simultaneously on your cpu.

So basicly hyperthreading allows for more efficient use of processor resources. By allowing the processor to use on-die resources that would otherwise have been idle.

Note HT has be shown can be a security risk. Since 2 processes on same cpu, can access each others data, even if one process = root/admin access & other one = user/limited procress.
Not to mention preformance boost claims of 30% = subjective since there is overhead from makin a virtual cpu & speed boost depends on code its running atm i.e if there is any leftover room in cpu to run another program.

Short version :- ignore that 50% cpu. There is no way only 50% of your cpu is beening used, HT doesnt spilt CPU in half !!!!!

Its windows beening confused by HT thinking.

1 CPU (realone) = 100%
1 CPU (virtual | HT) = 0% since its not got enough leftover resources to run another process atm

btw i have a HT cpu & wish i burned it & traded for AMD damn HT runs to hot :P

It would be nice to know if AI | Game = multithreaded but would have very little preformance gains or none for HT. But would be a nice boost for peep with dual cpu's etc.
:-note i said be nice to know. Better things to work on atm :)
User avatar
AF
AI Developer
Posts: 20687
Joined: 14 Sep 2004, 11:32

Post by AF »

OTAIi had threading for tis build palcement routine,a dn i experimented with threading for atatck targetting, but it itnroduced a crash bug, so i left it and decided to not to venture itno the world fo multithreaded processing untill i'd figured out howto make things threadsafe.

if soemone could point me to somewhere where that could tlel me howto make threads thread safe, it'd be much appreciated.

btw on a dual core cpu, is threading enough? Or do I have to write code to make use of the second cpu? or does windows move the thread to the other cpu automatically for me?
hollowsoul
Posts: 665
Joined: 06 Jun 2006, 19:49

Post by hollowsoul »

multi threading is enough.
Operating Systems take care of assigning processes to cpu's, some better than others :P
User avatar
Ulpian
Posts: 8
Joined: 20 Jun 2006, 23:53

Post by Ulpian »

About SSE2/SSE3 compilation - I mean OPTIONAL version. There are three possibilities:

1) The same version supports both i386 and SSE2
2) Installer contains two file sets - one for i386 one for SSE2
3) There are two installers - two versions for download.

BTW. I think, that supporting 386,486,586 is useless, since ppl with so old machines will not play TA Spring. So you can happily compile i686 version. Please consider SSE1 version as default - is there anyone with Pentium2 who plays TA Spring ?

PS. I have numerous CTDs :-(
Last edited by Ulpian on 21 Jun 2006, 20:34, edited 1 time in total.
hollowsoul
Posts: 665
Joined: 06 Jun 2006, 19:49

Post by hollowsoul »

atm they are working on sync issues for online play.
u are stuck with using same binary atm to play multiplayer.

(hell linux peep have to use wine & spring version for windows to play online. unless other peep has same spring binary made for linux)

if they started to offical release versions with different optizations turned on (peep could got sync issues, depending on which code gets optimized),
Peep would split into groups online. who is running which particular version of spring. atm looks like they aiming for lowest settings, so anyone that can get spring running can try out multiplayer :)

if it still bothers u follow guides in forum & using a free win32 compiler & make your own version for single player, with whichever flags u want turned on.
User avatar
Caydr
Omnidouche
Posts: 7179
Joined: 16 Oct 2004, 19:40

Post by Caydr »

What kind of effect would SSE2/SSE3 have were it used, assuming no sync problems arose? (hypothetically speaking, since I know it would cause problems)
User avatar
Ulpian
Posts: 8
Joined: 20 Jun 2006, 23:53

Post by Ulpian »

AFAIK SSE1,2,3 boost flotaing point (and maybe integer too) operation speed.

I repeat - i686 for sure and SSE1 probably can be used already, because people with non-compatible machines will not run TA Spring at all !
Tobi
Spring Developer
Posts: 4598
Joined: 01 Jun 2005, 11:36

Post by Tobi »

Note that there are processors over 1.5 GHz which don't have SSE etc.: VIA C1, C2, C3. They should be perfectly capable of running spring (at least on smaller maps) if combined with a decent video card.
User avatar
Ulpian
Posts: 8
Joined: 20 Jun 2006, 23:53

Post by Ulpian »

So i686 + MMX :-)

And remember - I propose releasing SSE2 version together with, not instead of, Vanilla one. But this vanilla version should be i686+MMX version or i585+MMX (C1-C3 do not have CMOV (Conditional Move) command IIRC and these processors are not 686) - not plain i386.

Result of Googling ( http://sourceware.org/ml/libc-alpha/200 ... 00005.html ):
CMOV is i686 optional instruction, and VIA C3 processor does not
support it, but VIA C3 reports it's an i686 class processor.

Unfortunately, gcc generates this optional CMOV instruction with
-mcpu=i686 optimization, so i686 optimized dynamic library code almost
causes "illegal instruction" error on VIA C3 processor during dynamic
loading. I heard that gcc team does not think to change using CMOV
instruction with i686 optimization. CMOV is very key instruction to
make faster.
Torrasque
Posts: 1022
Joined: 05 Oct 2004, 23:55

Post by Torrasque »

You can't have different compiled version of Spring now, it would cause desync very quickly
Gnomre
Imperial Winter Developer
Posts: 1754
Joined: 06 Feb 2005, 13:42

Post by Gnomre »

NOOOOOOOOOOOOOO NOT SSE! I like playing spring :(

/me kicks his old 1.3 thunderbird :(
Post Reply

Return to “Engine”