quinta-feira, 17 de abril de 2008

Monte Carlo PI - Paralelismo parte 1



Valores de PI podem ser calculados de diversas maneiras. Vamos considerar o seguinte método
para calcular o valor de PI:
1. Inscreva um circulo em um quadrado de lado = 1
2. Gere pontos aleatórios dentro do quadrado
3. Determine o numero de pontos que cair˜ao dentro do círculo
4. Faça ser o numero de pontos dentro do círculo dividido pelo número de pontos gerados
5. PI = 4r
6. Quanto mais pontos s˜ao gerados, mais preciso é o número PI


O programa deve ser feito utilizando a biblioteca pthreads em C.
Deverá existir uma thread "mestre". Essa thread ir´a instanciar o número necessário de threads
"escravo" para executar o cálculo do PI. A thread "mestre" pode ser a execução do programa principal. O usuario deve entrar com a quantidade de threads "escravos" que seu programa ira criar. Alem disso, o usuario vai entrar com a quantidade de pontos a serem gerados. A thread "mestre" ir´a criar a quantidade de threads "escravos" e dividir a quantidade de pontos que cada thread "escravo" ira gerar. Ao final da execu¸c˜ao, a thread "escravo" ir´a atualizar uma variável compartilhada (utilizando seção crítica) para informar a quantidade de pontos gerado dentro do círculo.
Após o término de todas threads "escravo", a thread "mestre" ir´a encontrar o valor de PI fazendo: PI = 4r.


Código aqui