what is a quorum used for?


Advanced search

Message boards : Number crunching : what is a quorum used for?

Sort
Author Message
Profile suguruhirahara
Forum moderator
Volunteer tester
Avatar

Joined: Sep 13 06
Posts: 282
ID: 15
Credit: 56,614
RAC: 0
Message 1851 - Posted 22 Dec 2006 12:47:10 UTC

Hello,

During checking the forums of my team a post hit on me; What is a quorum used for? It's indeed, I think, used to check validity of each workunits, but the issue of invalidity will be solved as the science evolves. Then I just wonder whether there will be another reason besides that. If a quorum system weren't used the aggregate resource available effectively would be increased.

thanks,
suguruhirahara
____________

I'm a volunteer participant; my views are not necessarily those of Docking@Home or its participating institutions.

Profile Keck_Komputers
Volunteer tester
Avatar

Joined: Sep 13 06
Posts: 14
ID: 20
Credit: 1,263,209
RAC: 0
Message 1867 - Posted 24 Dec 2006 8:33:34 UTC

The qurom has two major uses. The primary one is verifing that the science is accurate. The other is to equalize credit claims. Both goals can be reached by other means as well, depending on the project.
____________
BOINC WIKI

BOINCing since 2002/12/8

Profile suguruhirahara
Forum moderator
Volunteer tester
Avatar

Joined: Sep 13 06
Posts: 282
ID: 15
Credit: 56,614
RAC: 0
Message 1869 - Posted 24 Dec 2006 9:27:22 UTC - in response to Message ID 1867 .
Last modified: 24 Dec 2006 9:27:40 UTC

The qurom has two major uses. The primary one is verifing that the science is accurate. The other is to equalize credit claims. Both goals can be reached by other means as well, depending on the project.


To determine the value of credit granted this project will introduce another mean like Rosetta@Home does.

To keep the science accurate verifying is thought to be important since "molecular simulations based on Monte Carlo (MC) or Molecular Dynamics (MD) are in general highly sensitive to initial conditions, and may differ depending on the machine architecture, operating system, compiler, and compiler flags."(Homogeneous Redundancy: a Technique to Ensure Integrity of Molecular Simulation Results Using Public Computing", Proceedings of the 19th IEEE International Parallel and Distributed Processing Symposium (IPDPS’05)") This also demands the homogeneous redundancy to be introduced in the science.

Then, even if the science (theory and application) is advanced well, will the quorum system be used?

suguruhirahara
Profile David Ball
Forum moderator
Volunteer tester
Avatar

Joined: Sep 18 06
Posts: 274
ID: 115
Credit: 1,634,401
RAC: 0
Message 1871 - Posted 24 Dec 2006 15:02:07 UTC - in response to Message ID 1869 .

Then, even if the science (theory and application) is advanced well, will the quorum system be used?
suguruhirahara


I'm just guessing but it would probably depend on the science. As long as computers are involved, there's the chance of a memory/cpu/disk error, especially with the wide mix of hardware and OS version/patchlevel.

If your computer finds the best solution for something, the project will almost certainly run it on their own computer to verify the result. The data returned from the BOINC client computer would need to have enough data in it to re-produce the result, or at least verify it, or the result would be useless anyway.

Then, there's the question of missing something because a computer got a subtle error.

1. If the client computer's work unit is just picking truly random starting points itself or using truly random numbers to decide which actions to take in whatever it's searching for, then it's probably because even a distributed computing network can search only a small fraction of all possibilities. You're probably sending out as many work units as possible and trying to find the best result possible. In this case, you just verify any significant result returned and ignore insignificant results returned. You've already got other computers looking for the answer and they're all picking their own random numbers anyway. Unless you have to save all those random number to verify the result, there's no point in sending them back in the result just so another computer can use that set of random numbers which might produce a result worse than if you had just let the other computer pick it's own random numbers.

2. If the starting point is picked by the work unit generator and the work unit is just doing the math based on that starting point, with no randomness involved, then it depends on the science involved whether one work unit being solved incorrectly is enough of a problem to merit redundancy. Even an otherwise highly reliable computer that has always had it's results verify properly CAN return a bad result. I've got a computer that has returned hundreds of verified results and recently got a single result that returned success but didn't verify. I suspect it was because of a UPS problem cutting power to the system while it was running that work unit, but I'm not sure. After that one verification problem, it's back to returning verified results. The quorum kept that one bad result from getting into the docking database.

These are just my thoughts on the subject.

Regards,

-- David

Message boards : Number crunching : what is a quorum used for?

Database Error
: The MySQL server is running with the --read-only option so it cannot execute this statement
array(3) {
  [0]=>
  array(7) {
    ["file"]=>
    string(47) "/boinc/projects/docking/html_v2/inc/db_conn.inc"
    ["line"]=>
    int(97)
    ["function"]=>
    string(8) "do_query"
    ["class"]=>
    string(6) "DbConn"
    ["object"]=>
    object(DbConn)#9 (2) {
      ["db_conn"]=>
      resource(66) of type (mysql link persistent)
      ["db_name"]=>
      string(7) "docking"
    }
    ["type"]=>
    string(2) "->"
    ["args"]=>
    array(1) {
      [0]=>
      &string(51) "update DBNAME.thread set views=views+1 where id=136"
    }
  }
  [1]=>
  array(7) {
    ["file"]=>
    string(48) "/boinc/projects/docking/html_v2/inc/forum_db.inc"
    ["line"]=>
    int(60)
    ["function"]=>
    string(6) "update"
    ["class"]=>
    string(6) "DbConn"
    ["object"]=>
    object(DbConn)#9 (2) {
      ["db_conn"]=>
      resource(66) of type (mysql link persistent)
      ["db_name"]=>
      string(7) "docking"
    }
    ["type"]=>
    string(2) "->"
    ["args"]=>
    array(3) {
      [0]=>
      object(BoincThread)#3 (16) {
        ["id"]=>
        string(3) "136"
        ["forum"]=>
        string(1) "2"
        ["owner"]=>
        string(2) "15"
        ["status"]=>
        string(1) "0"
        ["title"]=>
        string(26) "what is a quorum used for?"
        ["timestamp"]=>
        string(10) "1166972531"
        ["views"]=>
        string(3) "937"
        ["replies"]=>
        string(1) "3"
        ["activity"]=>
        string(23) "1.1252272262183999e-126"
        ["sufferers"]=>
        string(1) "0"
        ["score"]=>
        string(1) "0"
        ["votes"]=>
        string(1) "0"
        ["create_time"]=>
        string(10) "1166791630"
        ["hidden"]=>
        string(1) "0"
        ["sticky"]=>
        string(1) "0"
        ["locked"]=>
        string(1) "0"
      }
      [1]=>
      &string(6) "thread"
      [2]=>
      &string(13) "views=views+1"
    }
  }
  [2]=>
  array(7) {
    ["file"]=>
    string(63) "/boinc/projects/docking/html_v2/user/community/forum/thread.php"
    ["line"]=>
    int(184)
    ["function"]=>
    string(6) "update"
    ["class"]=>
    string(11) "BoincThread"
    ["object"]=>
    object(BoincThread)#3 (16) {
      ["id"]=>
      string(3) "136"
      ["forum"]=>
      string(1) "2"
      ["owner"]=>
      string(2) "15"
      ["status"]=>
      string(1) "0"
      ["title"]=>
      string(26) "what is a quorum used for?"
      ["timestamp"]=>
      string(10) "1166972531"
      ["views"]=>
      string(3) "937"
      ["replies"]=>
      string(1) "3"
      ["activity"]=>
      string(23) "1.1252272262183999e-126"
      ["sufferers"]=>
      string(1) "0"
      ["score"]=>
      string(1) "0"
      ["votes"]=>
      string(1) "0"
      ["create_time"]=>
      string(10) "1166791630"
      ["hidden"]=>
      string(1) "0"
      ["sticky"]=>
      string(1) "0"
      ["locked"]=>
      string(1) "0"
    }
    ["type"]=>
    string(2) "->"
    ["args"]=>
    array(1) {
      [0]=>
      &string(13) "views=views+1"
    }
  }
}
query: update docking.thread set views=views+1 where id=136