root / Pi / MP / PiMP.py.orig @ 308
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 |