Hi Uri,In the explanation I read:
"Its purpose is to allow several race conditions that could occur in previous versions of the protocol to be fixed, so it is highly recommended that you implement it."
Sorry but I do not understand.
They claim that it is needed in all the engines.
I think that giving a simple example for a case that this command may be productive.
I am not interested in some old interface of winboard that does not support protocol version 2 because I do not expect people to use it so I need an example when supporting ping can help engines.
Uri
Mine is doing fine without it, the problem is the command is a little special and requires some modification to the code. You shouldn't abort search and you shouldn't execute it right a way, that is a very special command, I don't see an easy fix to this without major surgery on the code.Hi Uri,In the explanation I read:
"Its purpose is to allow several race conditions that could occur in previous versions of the protocol to be fixed, so it is highly recommended that you implement it."
Sorry but I do not understand.
They claim that it is needed in all the engines.
I think that giving a simple example for a case that this command may be productive.
I am not interested in some old interface of winboard that does not support protocol version 2 because I do not expect people to use it so I need an example when supporting ping can help engines.
Uri
i haven't implemented "ping" yet, but i think it's only useful for the GUI to check if the engine is alive. So if the engine answers to ping the GUI knows all is ok. But i'm not sure with my thoughts.
have a nice day
Andreas
I do not understand what is the problem?Mine is doing fine without it, the problem is the command is a little special and requires some modification to the code. You shouldn't abort search and you shouldn't execute it right a way, that is a very special command, I don't see an easy fix to this without major surgery on the code.Hi Uri,In the explanation I read:
"Its purpose is to allow several race conditions that could occur in previous versions of the protocol to be fixed, so it is highly recommended that you implement it."
Sorry but I do not understand.
They claim that it is needed in all the engines.
I think that giving a simple example for a case that this command may be productive.
I am not interested in some old interface of winboard that does not support protocol version 2 because I do not expect people to use it so I need an example when supporting ping can help engines.
Uri
i haven't implemented "ping" yet, but i think it's only useful for the GUI to check if the engine is alive. So if the engine answers to ping the GUI knows all is ok. But i'm not sure with my thoughts.
have a nice day
Andreas
-S.
Just put it in a linked-list with int's (pingnumber) and empty this list when the search return with a move.Mine is doing fine without it, the problem is the command is a little special and requires some modification to the code. You shouldn't abort search and you shouldn't execute it right a way, that is a very special command, I don't see an easy fix to this without major surgery on the code.Hi Uri,In the explanation I read:
"Its purpose is to allow several race conditions that could occur in previous versions of the protocol to be fixed, so it is highly recommended that you implement it."
Sorry but I do not understand.
They claim that it is needed in all the engines.
I think that giving a simple example for a case that this command may be productive.
I am not interested in some old interface of winboard that does not support protocol version 2 because I do not expect people to use it so I need an example when supporting ping can help engines.
Uri
i haven't implemented "ping" yet, but i think it's only useful for the GUI to check if the engine is alive. So if the engine answers to ping the GUI knows all is ok. But i'm not sure with my thoughts.
have a nice day
Andreas
-S.
If I need a list then it means that ifJust put it in a linked-list with int's (pingnumber) and empty this list when the search return with a move.Mine is doing fine without it, the problem is the command is a little special and requires some modification to the code. You shouldn't abort search and you shouldn't execute it right a way, that is a very special command, I don't see an easy fix to this without major surgery on the code.Hi Uri,In the explanation I read:
"Its purpose is to allow several race conditions that could occur in previous versions of the protocol to be fixed, so it is highly recommended that you implement it."
Sorry but I do not understand.
They claim that it is needed in all the engines.
I think that giving a simple example for a case that this command may be productive.
I am not interested in some old interface of winboard that does not support protocol version 2 because I do not expect people to use it so I need an example when supporting ping can help engines.
Uri
i haven't implemented "ping" yet, but i think it's only useful for the GUI to check if the engine is alive. So if the engine answers to ping the GUI knows all is ok. But i'm not sure with my thoughts.
have a nice day
Andreas
-S.
I would guess it's enough to send the last pong but who knows how the future is.If I need a list then it means that ifJust put it in a linked-list with int's (pingnumber) and empty this list when the search return with a move.Mine is doing fine without it, the problem is the command is a little special and requires some modification to the code. You shouldn't abort search and you shouldn't execute it right a way, that is a very special command, I don't see an easy fix to this without major surgery on the code.Hi Uri,In the explanation I read:
"Its purpose is to allow several race conditions that could occur in previous versions of the protocol to be fixed, so it is highly recommended that you implement it."
Sorry but I do not understand.
They claim that it is needed in all the engines.
I think that giving a simple example for a case that this command may be productive.
I am not interested in some old interface of winboard that does not support protocol version 2 because I do not expect people to use it so I need an example when supporting ping can help engines.
Uri
i haven't implemented "ping" yet, but i think it's only useful for the GUI to check if the engine is alive. So if the engine answers to ping the GUI knows all is ok. But i'm not sure with my thoughts.
have a nice day
Andreas
-S.
I get ping 5 and ping 7 then I need to respond pong 5 and later pong 7 when only pong 7 is not enough.
It is not clear from the explanation.
If the target is only to know that the engine is alive then pong for the last ping is enough.
Uri
No this wouldn't work, because you may get ping first and then usermove later if you are pondering for instance. So you have to get that ping out of the way (out of the pipe) and be ready for the next command.I do not understand what is the problem?Mine is doing fine without it, the problem is the command is a little special and requires some modification to the code. You shouldn't abort search and you shouldn't execute it right a way, that is a very special command, I don't see an easy fix to this without major surgery on the code.Hi Uri,In the explanation I read:
"Its purpose is to allow several race conditions that could occur in previous versions of the protocol to be fixed, so it is highly recommended that you implement it."
Sorry but I do not understand.
They claim that it is needed in all the engines.
I think that giving a simple example for a case that this command may be productive.
I am not interested in some old interface of winboard that does not support protocol version 2 because I do not expect people to use it so I need an example when supporting ping can help engines.
Uri
i haven't implemented "ping" yet, but i think it's only useful for the GUI to check if the engine is alive. So if the engine answers to ping the GUI knows all is ok. But i'm not sure with my thoughts.
have a nice day
Andreas
-S.
You can declare a global varaible
ping_flag
When you start to calculate and it is your move you can have
ping_flag=0;
When you get ping and it is your move you can change the value of ping_flag to 1.
After you play your move you can reply pong N only if ping_flag=1
You can remember N also in a global variable.
What I do not understand is what is the meaning of pondering does not count.
Do you get a special command from winboard to ponder?
I know that you get easy and hard but these are only commands to allow or not allow pondering.
After you get a move you ponder without a special command so I do not think that pondering is a winboard command.
Uri
That is the way WinBoard secure that the engine has reached some required state before sending next command. Sometimes if WinBoard and the engine is not synchronised there is risk for receving and sending commands in the wrong order.In the explanation I read:
"Its purpose is to allow several race conditions that could occur in previous versions of the protocol to be fixed, so it is highly recommended that you implement it."
Sorry but I do not understand.
They claim that it is needed in all the engines.
I think that giving a simple example for a case that this command may be productive.
I am not interested in some old interface of winboard that does not support protocol version 2 because I do not expect people to use it so I need an example when supporting ping can help engines.
Uri
Fooled for the second time in an hour. HmmmI would guess it's enough to send the last pong but who knows how the future is.If I need a list then it means that ifJust put it in a linked-list with int's (pingnumber) and empty this list when the search return with a move.Mine is doing fine without it, the problem is the command is a little special and requires some modification to the code. You shouldn't abort search and you shouldn't execute it right a way, that is a very special command, I don't see an easy fix to this without major surgery on the code.Hi Uri,In the explanation I read:
"Its purpose is to allow several race conditions that could occur in previous versions of the protocol to be fixed, so it is highly recommended that you implement it."
Sorry but I do not understand.
They claim that it is needed in all the engines.
I think that giving a simple example for a case that this command may be productive.
I am not interested in some old interface of winboard that does not support protocol version 2 because I do not expect people to use it so I need an example when supporting ping can help engines.
Uri
i haven't implemented "ping" yet, but i think it's only useful for the GUI to check if the engine is alive. So if the engine answers to ping the GUI knows all is ok. But i'm not sure with my thoughts.
have a nice day
Andreas
-S.
I get ping 5 and ping 7 then I need to respond pong 5 and later pong 7 when only pong 7 is not enough.
It is not clear from the explanation.
If the target is only to know that the engine is alive then pong for the last ping is enough.
Uri
This is C++. If you use C I guess you have allready made this standard containers many times.
Odd Gunnar
Ahh yes, it seems pondering is an exception!That is the way WinBoard secure that the engine has reached some required state before sending next command. Sometimes if WinBoard and the engine is not synchronised there is risk for receving and sending commands in the wrong order.In the explanation I read:
"Its purpose is to allow several race conditions that could occur in previous versions of the protocol to be fixed, so it is highly recommended that you implement it."
Sorry but I do not understand.
They claim that it is needed in all the engines.
I think that giving a simple example for a case that this command may be productive.
I am not interested in some old interface of winboard that does not support protocol version 2 because I do not expect people to use it so I need an example when supporting ping can help engines.
Uri
When WinBoard receive the pong x, he knows that the engine has consumed all commands and is ready to get the next one. When the engine is pondering that doesn't apply and the engine should return pong x immidiately.
If it takes very long time before the pong commands is returned, WinBoard assumes that the engine is dead.
Peter
The command "ping" is used to synchronize communication between the GUI and the engine. If communication gets out of sync in a _critical_situation_ wrong behaviour of one of both objects could be the consequence.In the explanation I read:
"Its purpose is to allow several race conditions that could occur in previous versions of the protocol to be fixed, so it is highly recommended that you implement it."
Sorry but I do not understand.
They claim that it is needed in all the engines.
I think that giving a simple example for a case that this command may be productive.
I am not interested in some old interface of winboard that does not support protocol version 2 because I do not expect people to use it so I need an example when supporting ping can help engines.
Uri
If I ponder then I need to reply immediatly to ping by pong.No this wouldn't work, because you may get ping first and then usermove later if you are pondering for instance.I do not understand what is the problem?Mine is doing fine without it, the problem is the command is a little special and requires some modification to the code. You shouldn't abort search and you shouldn't execute it right a way, that is a very special command, I don't see an easy fix to this without major surgery on the code.Hi Uri,In the explanation I read:
"Its purpose is to allow several race conditions that could occur in previous versions of the protocol to be fixed, so it is highly recommended that you implement it."
Sorry but I do not understand.
They claim that it is needed in all the engines.
I think that giving a simple example for a case that this command may be productive.
I am not interested in some old interface of winboard that does not support protocol version 2 because I do not expect people to use it so I need an example when supporting ping can help engines.
Uri
i haven't implemented "ping" yet, but i think it's only useful for the GUI to check if the engine is alive. So if the engine answers to ping the GUI knows all is ok. But i'm not sure with my thoughts.
have a nice day
Andreas
-S.
You can declare a global varaible
ping_flag
When you start to calculate and it is your move you can have
ping_flag=0;
When you get ping and it is your move you can change the value of ping_flag to 1.
After you play your move you can reply pong N only if ping_flag=1
You can remember N also in a global variable.
So you have to get that ping out of the way (out of the pipe) and be ready >for the next command.
But you idea is close, only the ping_flag should be N and not 1, then I can simply check if (ping_flag!=0) printf("pong %d\n",ping_flag).
However, _where_ do I do this check?
And what if I get ping after "new" ?You do that check immediatly after you stop the search.However, _where_ do I do this check?
Uri
One should respond to a "ping" as soon as possible.And what if I get ping after "new" ?You do that check immediatly after you stop the search.However, _where_ do I do this check?
Uri
Checking for ping only after search isn't enough, the protocol even says that I shouldn't get ping while searching (while it's my move), so that makes little sense.
-S.
Of course you need to check for ping command also in other cases but in other cases you reply immediately by pong so you do not need to change the ping_flagAnd what if I get ping after "new" ?You do that check immediatly after you stop the search.However, _where_ do I do this check?
Uri
Checking for ping only after search isn't enough, the protocol even says that I shouldn't get ping while searching (while it's my move), so that makes little sense.
-S.
I've always handled pondering and analysis the same way, except for what to do when the pondered move or undo is coming. During analysis it seems to be natural to respond pong immediatley after a ping. WinBoard wont send anything except for single commands like ., a move, undo, new etc. which shouldn't cause any race problems.Ahh yes, it seems pondering is an exception!That is the way WinBoard secure that the engine has reached some required state before sending next command. Sometimes if WinBoard and the engine is not synchronised there is risk for receving and sending commands in the wrong order.In the explanation I read:
"Its purpose is to allow several race conditions that could occur in previous versions of the protocol to be fixed, so it is highly recommended that you implement it."
Sorry but I do not understand.
They claim that it is needed in all the engines.
I think that giving a simple example for a case that this command may be productive.
I am not interested in some old interface of winboard that does not support protocol version 2 because I do not expect people to use it so I need an example when supporting ping can help engines.
Uri
When WinBoard receive the pong x, he knows that the engine has consumed all commands and is ready to get the next one. When the engine is pondering that doesn't apply and the engine should return pong x immidiately.
If it takes very long time before the pong commands is returned, WinBoard assumes that the engine is dead.
Peter
What about analysis?
-S.
You should wait until you are ready:One should respond to a "ping" as soon as possible.And what if I get ping after "new" ?You do that check immediatly after you stop the search.However, _where_ do I do this check?
Uri
Checking for ping only after search isn't enough, the protocol even says that I shouldn't get ping while searching (while it's my move), so that makes little sense.
-S.
Since testing the engine for being alive is part of synchronization the "ping" command should be processed also during search.
Alessandro
This is good to know, the protocol doesn't mention how to handle ping while in analysis, but if you are right it solve a large part of the problems.I've always handled pondering and analysis the same way, except for what to do when the pondered move or undo is coming. During analysis it seems to be natural to respond pong immediatley after a ping. WinBoard wont send anything except for single commands like ., a move, undo, new etc. which shouldn't cause any race problems.Ahh yes, it seems pondering is an exception!That is the way WinBoard secure that the engine has reached some required state before sending next command. Sometimes if WinBoard and the engine is not synchronised there is risk for receving and sending commands in the wrong order.In the explanation I read:
"Its purpose is to allow several race conditions that could occur in previous versions of the protocol to be fixed, so it is highly recommended that you implement it."
Sorry but I do not understand.
They claim that it is needed in all the engines.
I think that giving a simple example for a case that this command may be productive.
I am not interested in some old interface of winboard that does not support protocol version 2 because I do not expect people to use it so I need an example when supporting ping can help engines.
Uri
When WinBoard receive the pong x, he knows that the engine has consumed all commands and is ready to get the next one. When the engine is pondering that doesn't apply and the engine should return pong x immidiately.
If it takes very long time before the pong commands is returned, WinBoard assumes that the engine is dead.
Peter
What about analysis?
-S.
Peter
Return to Archive (Old Parsimony Forum)
Users browsing this forum: Baidu [Spider] and 11 guests