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

% Exemple de bucle parfor
n = 100;
A = zeros(n, 1);

parfor i = 1:n
    A(i) = i^2;
end

disp(A);

Explicació:

  • parfor i = 1:n executa les iteracions del bucle en paral·lel.
  • Cada iteració calcula el quadrat de i i l'emmagatzema a A(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

% Exemple de spmd
spmd
    labindex  % Mostra l'índex del treballador actual
end

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ó

n = 1000;
sumSquares = 0;

parfor i = 1:n
    sumSquares = sumSquares + i^2;
end

disp(sumSquares);

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 bucle parfor 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.

© Copyright 2024. Tots els drets reservats