Questions about building an application on BOINC

Message boards : API : Questions about building an application on BOINC
Message board moderation

To post messages, you must log in.

AuthorMessage
mhnd

Send message
Joined: 10 Aug 09
Posts: 9
France
Message 28689 - Posted: 12 Nov 2009, 18:25:47 UTC

Dear Mrs/Mr

I m trying to build a grid computing platform using BOINC, briefly I configured a boinc server using the VM image on BOINC website, I created a project using the documentation.

Now I m developing my application which is Cracking DES-56bit, but I have some problems that my work units returned with an error 177 (rsc-limit-exceeded).

I have some questions, please help me:

1. How Boinc server divide the whole work into tasks, I mean where did specify the rang to my client, for example, in my application DES_Cracker (start_key,end_key).

It looks that boinc applications code is sequential, so where the dividing is made?

2. What are the role of the workunit template file and what's the relation with the dividing of work into tasks. How can I calculate the following:

<rsc_memory_bound> </rsc_mem_bound>

<rsc_disk_bound> </rsc_disk_bound>

<rsc_fpops_est> </rsc_fpops_est>

<rsc_fpops_bound> </rsc_fpops_bound>



And are they calculated for the whole application or for one job for the client???



3. does The workunit represent the whole work of the application or it is a part of it?



There are another question about create my own work generator and Validator…



But now I really have to know the answers of the main previous questions.



Please help me…



And I will be thankful for replying me.

Sincerely.
ID: 28689 · Report as offensive
Profile Jord
Volunteer tester
Help desk expert
Avatar

Send message
Joined: 29 Aug 05
Posts: 15477
Netherlands
Message 28702 - Posted: 12 Nov 2009, 22:20:43 UTC - in response to Message 28689.  
Last modified: 12 Nov 2009, 22:21:11 UTC

1. How Boinc server divide the whole work into tasks, I mean where did specify the rang to my client, for example, in my application DES_Cracker (start_key,end_key).

Best start here, read through all that documentation.

2. What are the role of the workunit template file and what's the relation with the dividing of work into tasks. How can I calculate the following:

<rsc_memory_bound> </rsc_mem_bound>
Is the amount of memory that your tasks should take up at maximum. Is set in bytes.

<rsc_disk_bound> </rsc_disk_bound>
Is the maximum amount of disk space your application should take up while running any given task. Includes all input, temporary and output files. Is set in bytes.

<rsc_fpops_est> </rsc_fpops_est>
Is the estimated amount of floating point operations that any given task will take from start to finish. Can be calculated by running lots of them on a trusted computer.

Then take the CPU time of each task, multiply by the Measured floating point speed of this computer (see benchmark numbers), multiply by a million.
Do this for each task that ran, add all up, divide by the amount of tasks that ran and you have a good average estimate.

<rsc_fpops_bound> </rsc_fpops_bound>

A maximum amount of floating point operations as boundary. Go over it and the application will terminate. Usually calculated by adding two zeroes to the value you calculated in <rsc_fpops_est>

And are they calculated for the whole application or for one job for the client???

Per application.
If tasks differ even in that one application, calculate them by work unit.

3. does The workunit represent the whole work of the application or it is a part of it?

Not sure what you ask here.

See also http://boinc.berkeley.edu/trac/wiki/JobIn
ID: 28702 · Report as offensive
mhnd

Send message
Joined: 10 Aug 09
Posts: 9
France
Message 28706 - Posted: 12 Nov 2009, 23:06:25 UTC - in response to Message 28702.  

thanks Ageless for your help.

i knew the links that you have puted and i have read them before.

I will explain the whole thing. if I have this code for example:

for(int i0=0;i0<1000;i0++)
{
do_computation();
}

and i want to divide this work to four workunits or tasks (each one 250 iter), how i determine that to server???
ID: 28706 · Report as offensive
Nicolas

Send message
Joined: 19 Jan 07
Posts: 1179
Argentina
Message 28954 - Posted: 23 Nov 2009, 22:38:18 UTC - in response to Message 28706.  
Last modified: 23 Nov 2009, 22:39:16 UTC

if I have this code for example:

for(int i0=0;i0<1000;i0++)
{
do_computation();
}

and i want to divide this work to four workunits or tasks (each one 250 iter), how i determine that to server???

That's not how it works. It's your job to divide it in parts. For example:
int main(int argc, char** argv) {
    /* somehow parse the command line from argv to get the initial value */
    for(int i=0; i<100; i++) {
        int x = i+initial;
        do_computation(x);
    }
}

Then you create ten workunits, giving in the command line the initial values 0, 100, 200, 300, 400, etc.
ID: 28954 · Report as offensive

Message boards : API : Questions about building an application on BOINC

Copyright © 2024 University of California.
Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation.