----- Original Message -----
> Ciao lista,
> Vorrei sapere se è possibile utilizzare tutti i core della cpu per
> eseguire calcoli gravosi.
> Ho guardato un po' in internet e  come risposta ho trovato il
> multithreading che ho già utilizzato un paio di volte.
> Però non riesco a capire se è possibile applicarlo anche ad un unico
> comando.
> 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)
> 
> 
> imposto la funzione obiettivo
> e = lambda v, x,y, phi, z: (fp(v,x,y,phi)-z)
> 
> e infine avvio il processo di ottimizzazzione ai minimi quadrati
> v, success = leastsq(e, v0, args=(x,y,phi,z), maxfev=10000)
> 
> Questo va avanti per minuti e usa un solo core.
> C'è un modo per suddividere i calcoli di leastsq tra più core?
> (spero di si)
> Grazie a tutti dell'aiuto sempre pronto
> Ciao
> Matteo

Matteo,
oggi ti tempesto...

Io non so nulla di calcolo su più core, ma faccio molto i minimi quadrati.
Se ti interessa sto sviluppando un sistema semplice per fare tutto da riga di 
comando, lo trovi qui:
 
https://github.com/gdurin/pyFitting

la cosa che ti potrebbe aiutare potrebbe essere utilizzare le derivate 
analitiche (il mio parametro -d), che diminuiscono sensibilmente il numero di 
passi da far fare alla routine. Oppure prendi spunto per farlo tu (ho usato 
sympy e numexpr per compilare e ottimizzare il calcolo)
Per ogni dettaglio puoi vedere qui in un talk che ho fatto di recente:
http://emma.inrim.it:8080/gdurin/talks/fit-the-elefant-on-the-use-of-least-square-methods-from-simple-cases-to-multiparameter-scaling-functions/

Certo, fittare con 22 parametri è un bel problema, ed è proprio fittare un 
elefante (che pare abbia bisogno di 'soli' 13 parametri). 
Un problema noto è che spesso molti sistemi (le funzioni teoriche) sono 
'sloppy', cioé poco sensibili alle variazioni anche ampie dei parametri. Quindi 
il fit non si muove mai, soprattutto se hai le derivate (per il calcolo dello 
jacobiano) numeriche.

Inoltre di solito è un casino decidere i valori iniziali, soprattutto nel tuo 
caso (so che qualcuno usa degli algoritmi genetici per la stima dei valori 
iniziali, ma non ne so molto).
 
Cose biologiche?

ciao
Gianfranco
> _______________________________________________
> Python mailing list
> Python@lists.python.it
> http://lists.python.it/mailman/listinfo/python
> 
> 
_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a