pi计算中的并行度

时间:2014-04-04 08:41:27

标签: parallel-processing pi

我一直在查看代码

npoints = 10000
circle_count = 0

p = number of tasks
num = npoints/p

find out if I am MASTER or WORKER 

do j = 1,num 
  generate 2 random numbers between 0 and 1
  xcoordinate = random1
  ycoordinate = random2
  if (xcoordinate, ycoordinate) inside circle
  then circle_count = circle_count + 1
end do

if I am MASTER

  receive from WORKERS their circle_counts
  compute PI (use MASTER and WORKER calculations)

else if I am WORKER

  send to MASTER circle_count

endif

任何人都可以告诉这个算法使用什么级别的并行性?  我问的是平行度的水平  1)工作或计划水平  2)任务或程序级别  3)内部指令级别  4)内部指令级

1 个答案:

答案 0 :(得分:0)

这是monte carlo方法,运行得越多,你将会追溯到更准确的结果。

  do j = 1,num 
  generate 2 random numbers between 0 and 1
  xcoordinate = random1
  ycoordinate = random2
  if (xcoordinate, ycoordinate) inside circle
  then circle_count = circle_count + 1
  end do

上面的代码是蒙特卡罗步骤,它可以在独立运行的num个线程中并行化(只要在线程之间共享circle_count变量)。 在创建所有点之后,您可以返回单线程来计算pi值。