La computació paral·lela és una tècnica que permet executar múltiples càlculs simultàniament, aprofitant els recursos de múltiples processadors. MATLAB ofereix diverses eines per implementar computació paral·lela, la qual cosa pot millorar significativament el rendiment de les aplicacions que requereixen un alt poder de càlcul.
Objectius d'aquest tema
- Entendre els conceptes bàsics de la computació paral·lela.
- Aprendre a utilitzar les eines de computació paral·lela en MATLAB.
- Implementar bucles paral·lels (
parfor
). - Utilitzar
spmd
(Single Program Multiple Data) per a tasques paral·leles. - Gestionar clústers i treballadors paral·lels.
Conceptes Bàsics de la Computació Paral·lela
Què és la Computació Paral·lela?
La computació paral·lela implica dividir un problema gran en parts més petites que es poden resoldre simultàniament. Això es pot fer utilitzant múltiples nuclis d'un processador o múltiples processadors en un clúster.
Beneficis de la Computació Paral·lela
- Reducció del temps de càlcul: Les tasques es completen més ràpidament.
- Millor utilització dels recursos: S'aprofiten millor els recursos de maquinari disponibles.
- Escalabilitat: Les aplicacions poden escalar per utilitzar més recursos a mesura que estiguin disponibles.
Eines de Computació Paral·lela en MATLAB
Parallel Computing Toolbox
MATLAB ofereix el Parallel Computing Toolbox, que proporciona funcions i eines per escriure i executar codi paral·lel.
Bucles parfor
El bucle parfor
és una versió paral·lela del bucle for
que permet executar iteracions de manera simultània.
Exemple de parfor
Explicació:
parfor i = 1:n
executa les iteracions del bucle en paral·lel.- Cada iteració calcula el quadrat de
i
i l'emmagatzema aA(i)
.
spmd
(Single Program Multiple Data)
spmd
permet executar blocs de codi en paral·lel en múltiples treballadors, amb cada treballador executant el mateix codi però amb dades diferents.
Exemple de spmd
Explicació:
spmd
executa el bloc de codi dins de múltiples treballadors.labindex
retorna l'índex del treballador actual.
Gestió de Clústers i Treballadors
MATLAB permet gestionar clústers de treballadors per executar tasques paral·leles.
Exemple de Gestió de Clústers
% Crear un clúster local c = parcluster('local'); % Crear un pool de treballadors parpool(c, 4); % Utilitza 4 treballadors % Executar codi paral·lel parfor i = 1:10 disp(i); end % Tancar el pool de treballadors delete(gcp('nocreate'));
Explicació:
parcluster('local')
crea un clúster local.parpool(c, 4)
crea un pool de 4 treballadors.parfor
executa el bucle en paral·lel utilitzant els treballadors del pool.delete(gcp('nocreate'))
tanca el pool de treballadors.
Exercicis Pràctics
Exercici 1: Càlcul de Sumes en Paral·lel
Escriu un codi que calculi la suma dels quadrats dels primers 1000 nombres utilitzant un bucle parfor
.
Solució
Exercici 2: Utilització de spmd
per a Càlculs Distribuïts
Escriu un codi que utilitzi spmd
per calcular la suma dels quadrats dels primers 1000 nombres, distribuint el càlcul entre 4 treballadors.
Solució
n = 1000; numWorkers = 4; partialSums = zeros(1, numWorkers); spmd range = (labindex-1)*(n/numWorkers) + 1 : labindex*(n/numWorkers); partialSums(labindex) = sum(range.^2); end totalSum = sum([partialSums{:}]); disp(totalSum);
Errors Comuns i Consells
Errors Comuns
- No inicialitzar correctament les variables compartides: Assegura't que les variables utilitzades dins de
parfor
estiguin inicialitzades correctament fora del bucle. - Accés concurrent a variables: Evita modificar la mateixa variable des de múltiples iteracions de
parfor
sense utilitzar mecanismes de sincronització.
Consells
- Utilitza
parfor
per a tasques independents: Assegura't que les iteracions del bucleparfor
siguin independents entre si. - Optimitza l'ús de treballadors: No utilitzis més treballadors dels que el teu sistema pot gestionar eficientment.
Conclusió
En aquesta secció, hem explorat els conceptes bàsics de la computació paral·lela en MATLAB, incloent l'ús de parfor
i spmd
, així com la gestió de clústers i treballadors. La computació paral·lela pot millorar significativament el rendiment de les aplicacions que requereixen un alt poder de càlcul. Amb aquestes eines, pots començar a escriure codi paral·lel eficientment en MATLAB.
Curs de Programació en MATLAB
Mòdul 1: Introducció a MATLAB
- Començant amb MATLAB
- Interfície i Entorn de MATLAB
- Comandes i Sintaxi Bàsiques
- Variables i Tipus de Dades
- Operacions i Funcions Bàsiques
Mòdul 2: Vectors i Matrius
- Creació de Vectors i Matrius
- Operacions amb Matrius
- Indexació i Segmentació
- Funcions de Matrius
- Àlgebra Lineal en MATLAB
Mòdul 3: Estructures de Programació
- Flux de Control: if, else, switch
- Bucles: for, while
- Funcions: Definició i Abast
- Scripts vs. Funcions
- Depuració i Gestió d'Errors
Mòdul 4: Visualització de Dades
- Conceptes Bàsics de Gràfics
- Gràfics 2D
- Gràfics 3D
- Personalització de Gràfics
- Tècniques Avançades de Gràfics
Mòdul 5: Anàlisi de Dades i Estadística
- Importació i Exportació de Dades
- Estadístiques Descriptives
- Preprocessament de Dades
- Anàlisi de Regressió
- Proves Estadístiques
Mòdul 6: Temes Avançats
- Entrada/Sortida de Fitxers
- Gestió de Grans Conjunts de Dades
- Tècniques d'Optimització
- Conceptes Bàsics de Simulink
- Computació Paral·lela