Author: Robert Hyatt
Date: 08:17:24 01/15/04
Go up one level in this thread
On January 15, 2004 at 08:41:08, Tony Werten wrote: >On January 14, 2004 at 23:25:52, Robert Hyatt wrote: > >>On January 14, 2004 at 16:20:37, Frank Quisinsky wrote: >> >>>Hi there, >>> >>>OS=Windows Professional SP1a: >>> >>>Crafty.rc >>>mt=1 ... or 2, 4 possible ... of course 3 isn't possible :-) >>>computer >>>hash 192M >>>hashp 24M >>>cache 4M >>>resign 9 >>>tbpath=c:\Chess\nalimov >>>egtb >>> >>>--- >>>Crafty 19.09: >>>Total nodes: 85506521 >>>Raw nodes per second: 1030199 >>>Total elapsed time: 83 >>>SMP time-to-ply measurement: 7.710843 >>>--- >>>Crafty 19.09 SMP MT=1 >>>Total nodes: 85506521 >>>Raw nodes per second: 1017934 >>>Total elapsed time: 84 >>>SMP time-to-ply measurement: 7.619048 >>>--- >>>Crafty 19.09 SMP MT=2 >>>Total nodes: 91665964 >>>Raw nodes per second: 1553660 >>>Total elapsed time: 59 >>>SMP time-to-ply measurement: 10.847458 >>>--- >>>Crafty 19.09 SMP MT=4 >>>Total nodes: 100226709 >>>Raw nodes per second: 2132483 >>>Total elapsed time: 47 >>>SMP time-to-ply measurement: 13.617021 >>> >>>Not easy to understand for me: >>>MT=1 = 1017934 = + ~ 53% = MT2 >>>MT=2 = 1553660 = + ~ 37% = MT4 >>>MT=4 = 2132483 >>> >>>MT=1 to MT=2 must be only Multi-Threading from the first processor! >>>20-30% but not 53% >> >> >>You are not understanding hyper-threading. You have two physical >>processors, and each is divided into two logical processors, giving you >>what _appears_ to be 4 cpus. When you run two threads, how do you >>guarantee that each thread runs on a different physical CPU? Answer: >>You can't. So you might get both threads on one physical processor >>or one on each physical processor, or they might bounce between the >>two states. >> >>The moral: >> >>don't _ever_ run two threads on a SMT-enabled dual. 3 is fine, as obviously >>two will be on one physical processor and one will be on the other. Four is >>fine. But _not_ two. >> >>As operating systems become aware of this, they will fix it. There are linux >>patches that solve this, for example. I don't know about windows. > >I think this should do the trick: > >The SetThreadIdealProcessor function is used to specify a preferred processor >for a thread. The system schedules threads on their preferred processors >whenever possible. > >DWORD SetThreadIdealProcessor( > > HANDLE hThread, // handle to the thread > DWORD dwIdealProcessor // ideal processor number > ); > > >Parameters > >hThread > >Handle to the thread whose preferred processor is to be set. The handle must >have the THREAD_SET_INFORMATION access right associated with it. For more >information, see Thread Objects. > >dwIdealProcessor > >Specifies the number of the preferred processor for the thread. A value of >MAXIMUM_PROCESSORS tells the system that the thread has no preferred processor. OK. In Unix systems, what library do I include to access that function? :)
This page took 0 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.