Prime Mover
2008-05-13 19:10:19 UTC
Hello all,
I have got the pseudo-code below that I would like to convert to c
language (or maybe java). The algorithm calculates Pi value. I am
somewhat
familiar with C language, but I am just starting to learn parallel
programming.
In this specific example, the idea seems to be simple: one must
subdivide the main loop into pieces that can be executed by
independent "tasks" (computers??).
Then, each "worker task" executes a part of the loop a certain
number
of times, independently of the other worker tasks. One specific task
plays the role of "master task", which will collect and sum the
results of the worker tasks:
% descriptive algorithm:
1. Inscribe a circle inside a square
2. Generate random points inside the square
3. Determine the number of points that fell inside the circle
4. Let r be the number of points inside the circle divided by the
total number of points
5. Pi is approximately equal to 4*r
6. The more points are generated, the more is the precision in P
value
% pseudo-code (parallel):
1. npoints = 10000
2. circle_count = 0
3. p = number of tasks
4. num = npoints/p
5. find out if I am MASTER or WORKER
6. do j = 1,num
7. generate 2 random numbers between 0 and 1
8. xcoordinate = random1
9. ycoordinate = random2
10. if (xcoordinate, ycoordinate) inside circle then
circle_count = circle_count + 1
11. end do
12. if I am MASTER
13. receive from WORKERS their circle_counts
14. compute PI (use MASTER and WORKER calculations)
15. else if I am WORKER
16. send to MASTER circle_count
17. endif
My (understading) problem starts in the line 5 of the pseudo-code:
"5. find out if I am MASTER or WORKER"
How would I specificy a "worker"? Would that be another computer?
If yes, how can I access this remote computer in the calculations, in
C or JAVA?
If yes, it means that I have to have a LAN or something to perform
tests?
I have found that there are some libraries such as OMP or MPI that
could be used, but I'd like to know if there is a more "raw" way of
doing this first.
Any help would be much appreciated.
I thank you all in advance.
(I was advised for someone in comp.lang.c to post this question here
or some similar group, instead of in comp.lang.c).
I have got the pseudo-code below that I would like to convert to c
language (or maybe java). The algorithm calculates Pi value. I am
somewhat
familiar with C language, but I am just starting to learn parallel
programming.
In this specific example, the idea seems to be simple: one must
subdivide the main loop into pieces that can be executed by
independent "tasks" (computers??).
Then, each "worker task" executes a part of the loop a certain
number
of times, independently of the other worker tasks. One specific task
plays the role of "master task", which will collect and sum the
results of the worker tasks:
% descriptive algorithm:
1. Inscribe a circle inside a square
2. Generate random points inside the square
3. Determine the number of points that fell inside the circle
4. Let r be the number of points inside the circle divided by the
total number of points
5. Pi is approximately equal to 4*r
6. The more points are generated, the more is the precision in P
value
% pseudo-code (parallel):
1. npoints = 10000
2. circle_count = 0
3. p = number of tasks
4. num = npoints/p
5. find out if I am MASTER or WORKER
6. do j = 1,num
7. generate 2 random numbers between 0 and 1
8. xcoordinate = random1
9. ycoordinate = random2
10. if (xcoordinate, ycoordinate) inside circle then
circle_count = circle_count + 1
11. end do
12. if I am MASTER
13. receive from WORKERS their circle_counts
14. compute PI (use MASTER and WORKER calculations)
15. else if I am WORKER
16. send to MASTER circle_count
17. endif
My (understading) problem starts in the line 5 of the pseudo-code:
"5. find out if I am MASTER or WORKER"
How would I specificy a "worker"? Would that be another computer?
If yes, how can I access this remote computer in the calculations, in
C or JAVA?
If yes, it means that I have to have a LAN or something to perform
tests?
I have found that there are some libraries such as OMP or MPI that
could be used, but I'd like to know if there is a more "raw" way of
doing this first.
Any help would be much appreciated.
I thank you all in advance.
(I was advised for someone in comp.lang.c to post this question here
or some similar group, instead of in comp.lang.c).