수준

2014-04-04 3 views
0

내가 코드를 통과 한수준

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 

이 알고리즘에 사용되는 병렬 처리 수준을 누구나 알 수 있습니다 ??? 내가 prallelism의 수준을 요구하고있는 있습니다 1) 작업 또는 프로그램 수준 2) 작업 또는 절차 수준 3) 간 교육 수준 4)

답변

0

그것의 몬테 카를로 방법, 더 실행하는 내부 명령어 수준 더 정확한 결과를 얻을 수 있습니다. 상기

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 

코드 몬테카를로 단계이며, 이는 (CIRCLE_COUNT 가변 스레드 사이에 공유되는 한) NUM 독립 실행 스레드에서 병렬 처리 될 수있다. 모든 포인트가 생성 된 후 다시 단일 스레드로 돌아가 pi 값을 계산할 수 있습니다.

+0

감사합니다. 그러나 나는 평행성의 수준을 묻고있다 1) 직업 또는 프로그램 레벨 2) 작업 또는 절차 레벨 3) 인터 명령 레벨 4) 인트라 명령어 레벨 –

+0

@HighPerformanceMark 나는 나의 포스트를 편집했다. !! –

관련 문제