Computer Chess Club Archives


Search

Terms

Messages

Subject: Re: UNIX question: WaitForSingleObject() under IRIX/Linux

Author: Vincent Diepeveen

Date: 04:58:37 09/26/02

Go up one level in this thread


On September 25, 2002 at 16:13:45, Robert Hyatt wrote:

>On September 25, 2002 at 14:51:30, Vincent Diepeveen wrote:
>
>>On September 25, 2002 at 11:49:25, Russell Reagan wrote:
>>
>>Windows doesn't work at all above 64 processors AFAIK.
>>Linux doesn't work above 8 processors AFAIK.
>>
>>But i'm looking for a cheap solution under linux now too
>>and i see nowhere at manual pages of linux an example of how
>>to do it. basically this is THE big problem under linux.
>>
>>MSDN under windows however shows about 100 examples how to
>>do WaitForSingleObject.\
>
>
>Any idea how this is implemented?  I do.  It is a system call and it
>is just as ugly as select() or anything else...

I'm not saying it is less ugly, i just cut'n pasted an example and it
worked, that's the important thing!

>
>
>>
>>Of course other solutions to do the job are fine too here.>>I know under unix that the pthread libraries have something
>>called pthread_cond_wait.
>>
>>this is a great function, but i can't use it, as my program is
>>SMP, so SYMMETRIC MULTIPROCESSING.
>
>Don't follow that.  pthreads is based on SMP.  But I think you are
>just misusing a common term.  SMP does not mean using fork() as you
>are doing.

What i meant to say is that all my processes are the same, so any
of them can terminate the search. Not process 0. That's why i mentionned
the symmetric. Obviously it has nothing to do with fork or pthreadcreate.

>But even with fork() processes, you can use the pthread stuff.  Just stuff
>the things into shared memory...

That i didn't know about linux of course, for irix it isn't the case however.
I already have tried it in fact already. Short before world champs, i had
to replace then that pthread lock function by spin_lock. I started with
the pthread functions you use in crafty.

Anyway i will give it a shot in linux. I have to see it first that it works
before i believe it :)

>>
>>It means that all processors are equal. It means that any
>>processor might terminate a certain iteration as last one.
>>
>
>
>really lost me there.  I use pthreads and that is _exactly_ how
>my search works...

What i meant to tell is that any of the processes may terminate the
search which means that they have to signal the i/o thread (which is
a thread of process 0) that there is a new iteration to start.

I simply can't garantuee that process 0 is the last one to terminate.
In fact small chance even it happens :)

>>This one has to signal the i/o thread, which is a thread from
>>some other process most likely (big chance with 512 processors).
>>
>>The current idea for linux is to sleep for 5 milliseconds and
>>checkout whether an iteration has finished. So that's a possible
>>waste of about 4 milliseconds times n moves (can be 50 or so),
>>so that's losing each ply 0.2 seconds. if you get in endgame 11
>>ply out of hashtable that's 11 x 0.2 = 2.2 seconds.
>>
>>That is a big waste of seconds in a 1 0 game for example online
>>at a dual k7.
>>
>
>Don't do it like that...

Exactly :)

>
>>
>>
>>
>>>On September 25, 2002 at 08:10:06, Vincent Diepeveen wrote:
>>>
>>>>i cannot use select() at all as i limit myself to  < 128 processor
>>>>partitions then.
>>>
>>>Does WaitForSingleObject or WaitForMultipleObjects allow you to use more than
>>>128 processors?
>>>
>>>>also i have no idea how to get it to work and whether it can do
>>>>it 400 times a second instantly.
>>>
>>>See the problems Microsoft causes? They always have to be different (in a bad
>>>evil kind of way).



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.