Non direi che Mathematica esegue automaticamente il calcolo della GPU o della CPU Paralell, almeno in generale. Dato che devi fare qualcosa con i kernel di Paraels, allora dovresti inizializzare più kernel e/o caricare CUDALink o OpenCLLink e usare specifiche funzionalità di Mathematica per sfruttare il potenziale di CPU e/o GPU.
Ad esempio, non ho una scheda grafica molto potente (NVIDIA GeForce 9400 GT) ma possiamo testare come funziona CUDALink. In primo luogo devo caricare CUDALink
:
Needs["CUDALink`"]
ho intenzione di testare la moltiplicazione di grandi matrici. Scelgo una matrice casuale 5000 x 5000
di numeri reali nella gamma (-1,1)
:
M = RandomReal[{-1,1}, {5000, 5000}];
Ora possiamo controllare i tempi di calcolo senza supporto GPU
In[4]:= AbsoluteTiming[ Dot[M,M]; ]
Out[4]= {26.3780000, Null}
e con il supporto GPU
In[5]:= AbsoluteTiming[ CUDADot[M, M]; ]
Out[5]= {6.6090000, Null}
In questo caso abbiamo ottenuto un aumento delle prestazioni all'incirca del fattore 4, utilizzando CUDADot invece di Dot.
Modifica
Per aggiungere un esempio di accelerazione CPU parallelo (su una macchina dual-core) scelgo tutti i numeri primi nella gamma [2^300, 2^300 +10^6]
. Prima senza parallelizzazione:
In[139]:= AbsoluteTiming[ Select[ Range[ 2^300, 2^300 + 10^6], PrimeQ ]; ]
Out[139]= {121.0860000, Null}
durante l'utilizzo Parallelize[expr]
, che valuta espr utilizzando parallelizzazione automatica
In[141]:= AbsoluteTiming[ Parallelize[ Select[ Range[ 2^300, 2^300 + 10^6], PrimeQ ] ]; ]
Out[141]= {63.8650000, Null}
Come ci si potrebbe aspettare che abbiamo quasi due volte più veloce di valutazione.
Immagino che dipenda dall'operazione e se utilizzi la GPU e in che modo. Oserei dire che * le operazioni composte * più * non utilizzano la GPU, poiché la programmazione della GPU è significativamente diversa dalla programmazione della CPU. Ad esempio, una FFT si adatta bene a un modello di GPU, ma un insieme di equazioni che non possono essere affrontate tramite l'algebra lineare è probabilmente una storia completamente diversa. –
Suppongo che mi stia chiedendo se le funzioni incorporate di Mathematica utilizzano la GPU ... – nicolaskruchten
Hai dichiarato/implicito che lo fa .. manca una parola? :) I moduli/opuscoli di Mathematica sarebbero i luoghi per scoprirlo: sicuramente non qui, a meno che la domanda riguardasse la scrittura di tali operazioni. –