Statistiques
| Révision :

root / Pi / MP / PiMP.py.orig @ 184

Historique | Voir | Annoter | Télécharger (1,36 ko)

1 7 equemene
#!/usr/bin/env python
2 7 equemene
3 7 equemene
# If numpy is loaded without being used, it does not work !
4 7 equemene
from math import exp
5 7 equemene
from random import random
6 7 equemene
# Multithread library call
7 7 equemene
#import multiprocessing
8 7 equemene
from multiprocessing import Pool
9 7 equemene
import numpy
10 7 equemene
from numpy.random import rand
11 7 equemene
12 7 equemene
13 7 equemene
def MainLoop(iterations):
14 7 equemene
15 7 equemene
    total=numpy.int(0)
16 7 equemene
    for i in range(0,iterations):
17 7 equemene
        # Random access coordonate
18 7 equemene
        #x,y=random(),random()
19 7 equemene
        x,y=rand(),rand()
20 7 equemene
21 7 equemene
        if ((x*x+y*y) < 1.0):
22 7 equemene
                total+=1
23 7 equemene
24 7 equemene
    return(total)
25 7 equemene
26 7 equemene
if __name__=='__main__':
27 7 equemene
28 7 equemene
    # Machine
29 7 equemene
    CORES=4
30 7 equemene
31 7 equemene
    # A=numpy.zeros(10)
32 7 equemene
33 7 equemene
    # Au dessus de 4 10^7, le MPI ne veut plus se lancer...
34 7 equemene
    Iterations=100000000
35 7 equemene
36 7 equemene
    total=0
37 7 equemene
38 7 equemene
    # Define iterations to send to each node
39 7 equemene
    if Iterations%CORES==0:
40 7 equemene
        iterations=Iterations/CORES
41 7 equemene
    else:
42 7 equemene
        iterations=Iterations/CORES+1
43 7 equemene
        print "%i iterations will be send to each core" % iterations
44 7 equemene
45 7 equemene
    IT=[]
46 7 equemene
    for i in range(0,CORES):
47 7 equemene
        IT.append(iterations)
48 7 equemene
49 7 equemene
    print IT
50 7 equemene
51 7 equemene
    # Define the number of processes to be launched at a time
52 7 equemene
    # POOL: resources to be used (
53 7 equemene
    # pool=Pool(processes=CORES)
54 7 equemene
    pool=Pool(processes=CORES)
55 7 equemene
    print "Start on %i processors..." % CORES
56 7 equemene
57 7 equemene
    # MAP: distribution of usecases T to be applied to MetropolisStrip
58 7 equemene
    Results=pool.map(MainLoop,IT)
59 7 equemene
60 7 equemene
    # print sum(Results.get())
61 7 equemene
    print Results