Il 17/11/2011 18:44, Manlio Perillo ha scritto:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Il 17/11/2011 17:19, Matteo Perini ha scritto:
Ciao lista,
Vorrei sapere se è possibile utilizzare tutti i core della cpu per
eseguire calcoli gravosi.
Si.
Come è possibile usare anche tutte le cpu dei computer in una rete.

Il come è un altro discorso...

Ho guardato un po' in internet e  come risposta ho trovato il
multithreading che ho già utilizzato un paio di volte.
Il multithreading in Python non va bene, a meno di condizioni
particolari (cerca su Internet Python GIL).

Grazie del consiglio.


Però non riesco a capire se è possibile applicarlo anche ad un unico
comando.
Che intendi come "comando"?

Scusami ma non conosco la terminologia corretta....
Io per comando intendevo "leastsq(e, v0, args=(x,y,phi,z), maxfev=10000)"

Mi spiego meglio.

ho una funzione fp non lineare che deve essere ottimizzata...
fp = lambda v, x,y,
phi:(1+v[0]*phi+v[1]*x+v[2]*x*phi+v[3]*y+v[4]*y*phi+v[5]*x**2...
+v[6]*phi*x**2+v[7]*y**2+v[8]*phi*y**2+v[9]*x*y+v[10]*phi*x*y)/(v[11]+v[12]*phi...

+v[13]*x+v[14]*x*phi+v[15]*y+v[16]*y*phi+v[17]*x**2+v[18]*phi*x**2+v[19]*y**2...

+v[20]*phi*y**2+v[21]*x*y+v[22]*phi*x*y)

Scusa, ma perchè usi lambda?
Nel tuo caso rende il codice meno leggibile.
Fai un più semplice:

def fp(v, x, y, phi):
     ...


Le lambda dovrebbero essere usate *solo* se ti serve una funzione
anonima (ad esempio per passarla come argomento ad un altra funzione).

Ho trovato un paio di esempi on-line, nonche sul sito ufficiale che usavano sempre lambda per passare la funzione a leastsq
http://www.scipy.org/scipy_Example_List#head-4c436ae0085d9a56056425d11abff4ccdd3d3620

Quindi ho usato quella.

Se ho capito bene potrei usare:

def fp(v, x, y, phi):
return (1+v[0]*phi+v[1]*x+v[2]*x*phi+v[3]*y+v[4]*y*phi+v[5]*x**2... +v[6]*phi*x**2+v[7]*y**2+v[8]*phi*y**2+v[9]*x*y+v[10]*phi*x*y)/(v[11]+v[12]*phi... +v[13]*x+v[14]*x*phi+v[15]*y+v[16]*y*phi+v[17]*x**2+v[18]*phi*x**2+v[19]*y**2... +v[20]*phi*y**2+v[21]*x*y+v[22]*phi*x*y)


Giusto?
Devi parallelizzare l'algoritmo, e di solito non è banale.
In letteratura dovresti trovare algoritmi per l'ottimizzazione ai minimi
quadrati paralleli, magari trovi anche implementazioni già pronte.

Una volta che hai l'algoritmo, l'altro problema è l'implementazione
(anche questo non banalissimo).
Mmmmhhhh la vedo mooolto dura per le mie conoscenze.
Grazie dei consigli
Matteo
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a