PDA

View Full Version : Matlab ed uso del processore


jefitit
02-02-2008, 14:53
Salve,
uso matlab (programma di calcolo numerico) sia su un portatile che su un desktop. Il desktop monta un amd athlon xp di 5 anni fa, mentre sul portatile ho un intel T7700.
Quando faccio girare una routine di matlab sul desktop il processore è impegnato al 100% e impiega 60 secondi per l'esecuzione, mentre quando gira sul portatile i due processori sono impegnati tutti e due al 50% ed impiega 30 secondi per l'esecuzione. Ora mi chiedo: se sul portatile almeno uno oppure entrambi i processori si potessero impegnare al 100%, si potrebbe impiegare ancor meno tempo per l'esecuzione della routine di matlab?
thanks;)

jefitit
03-02-2008, 20:20
...qualcuno ha qualche consiglio da darmi....:)

mieto
03-02-2008, 20:24
Premesso che non mi intendo di Matlab.
Il problema è che il software non è in grado di sfruttare la presenza di una cpu dual-core.
Potresti provare se cambia qualcosa lanciano il programma e settando l'affinità dal Task Manager.
Prima però controlla se sul sito ufficiale di Matlab hanno qualche aggiornamento relativo all'utilizzo di cpu multicore.

leoben
03-02-2008, 20:55
Salve,
uso matlab (programma di calcolo numerico) sia su un portatile che su un desktop. Il desktop monta un amd athlon xp di 5 anni fa, mentre sul portatile ho un intel T7700.
Quando faccio girare una routine di matlab sul desktop il processore è impegnato al 100% e impiega 60 secondi per l'esecuzione, mentre quando gira sul portatile i due processori sono impegnati tutti e due al 50% ed impiega 30 secondi per l'esecuzione. Ora mi chiedo: se sul portatile almeno uno oppure entrambi i processori si potessero impegnare al 100%, si potrebbe impiegare ancor meno tempo per l'esecuzione della routine di matlab?
thanks;)

Probabilmante matlab (che non conosco...) non è in grado di sfruttare sistemi multiprocessore o multicore.
Quel 50% che vedi è perchè lil software avora un po' su un core e un po' sull'altro, ma mai contemporaneamente su entrambi. Non cambia quindi niente se tu forzi il programma a lavorare soltanto su uno (modificando l'affinità come ti è stato suggerito). Vedresti solamente un core al 100% e l'altro a zero (o quasi visto che ci sono le altre applicazioni in background)

mccarver
03-02-2008, 21:01
Qualche notizia al riguardo: http://www.mathworks.com/support/solutions/data/1-372IPG.html

Per farla breve, Matlab stesso NON supporta il multithreading, ovvero il codice non è predisposto per trarre vantaggio da più core simultaneamente, per ragioni che non vengono espresse nell'articolo. Si può però godere del multithreading ad esempio quando si fa riferimento alle librerie BLAS (per tutti i patiti dell'Algebra Lineare) e alle 'Distributed Computing Toolbox'.

jefitit
03-02-2008, 21:19
...grazie per le risposte...;)
In effetti se a matlab gli faccio usare un solo processore, questo viene sfruttato al 100% mentre l'altro sta fermo....in sostanza però non cambia nulla, usare uno solo al 100% oppure entrambi al 50% stesso tempo di esecuzione....peccato che non sia predisposto all'utilizzo di più processori:rolleyes: :rolleyes: