Différences entre les versions de « Jacket »

Ligne 104 : Ligne 104 :
  
 
maxSize = 1510;
 
maxSize = 1510;
sizes = 10:100:maxSize;
+
sizes = 10:100:maxSize;
nbSizes = length(sizes);
+
nbSizes = length(sizes);
 
timeMultJacket = zeros(nbSizes,1);
 
timeMultJacket = zeros(nbSizes,1);
  
Ligne 112 : Ligne 112 :
 
for currentSize = 10:100:maxSize
 
for currentSize = 10:100:maxSize
  
    tic
+
tic
  
    G1=grand(currentSize);
+
G1=grand(currentSize);
    G2=2*grand(currentSize);
+
G2=2*grand(currentSize);
    result = G1*G2;
+
result = G1*G2;
    gsync
+
gsync
    timeMultJacket(currentTest) = toc;
+
timeMultJacket(currentTest) = toc;
    currentTest = currentTest + 1;
+
currentTest = currentTest + 1;
 
end
 
end
  

Version du 10 avril 2013 à 14:55


Le logo de Jacket.

Jacket est un toolbox propriétaire pour MATLAB qui permet l'exécution de code sur GPUs. Similaire à GPUmat, son cousin gratuit, pour sa syntaxe, Jacket comprend cependant davantage de fonctions implémentées et accélère également l'affichage des graphismes 2d ou 3d, en faisant usage du GPU.

Guide

Attention: Jacket est installé sur Tigre et Lionceau.

Présentation donnée par Alexandre Desfosses Foucault: http://dms.umontreal.ca/wiki/images/9/9a/PresentationJacket.pdf


Exemples

Exemple 1

clear

addpath(genpath('/local/jacket-2.3/jacket/engine/'))

%% Exécution de plusieurs opérations indépendantes sur le CPU

%Création des matrices sur le CPU

matrixSize = 2000;

A = rand(matrixSize);

b = ones(matrixSize,1);

tic

%pour plusieurs valeurs de p différentes, on résoud le système linéaire

for p = 1:50

x = linsolve(A,p*b);

end

allCpuTime = toc


%% On refait la même chose, en mettant les variables sur le gpu

A = gdouble(A); b = gdouble(b);

tic

%pour plusieurs valeurs de p différentes, on résoud le système linéaire

for p = 1:50

x = linsolve(A,p*b);

end

gpuVariablesForLoopTime = toc


%% On utilise GFOR pour faire tourner toutes résolutions linéaires en même temps

tic

gfor p = 1:50

x = linsolve(A,p*b);

gend

GFORTime = toc

%% Résultats %Variables sur cpu : 1.4222e+01 % Variables sur GPU et boucle for : 4.4444e+00 % Variables sur GPU et boucle GFOR : 2.5247e+00

%Attention, chiffres valides pour une matrice 2000x2000


Exemple 2

addpath(genpath('/local/jacket-2.3/jacket/engine/')) format short e


%% multiplication matricielle, calcul sur le GPU

G1 = gones(100); G2 = 2 * gones(100); result = G1 * G2;

% seule différence : gones au lieu de ones


%% Chronométrons pour comparer le temps de calcul du cpu au temps de calcul du gpu % Multiplication sur le GPU :

maxSize = 1510; sizes = 10:100:maxSize; nbSizes = length(sizes); timeMultJacket = zeros(nbSizes,1);

currentTest = 1;

for currentSize = 10:100:maxSize

tic

G1=grand(currentSize); G2=2*grand(currentSize); result = G1*G2; gsync timeMultJacket(currentTest) = toc; currentTest = currentTest + 1; end

%% Multiplication matricielle, calcul sur le CPU

timeMultJacket

timeMultCPU = zeros(nbSizes,1);


currentTest = 0; for currentSize = 10:100:maxSize

   currentTest = currentTest + 1;
   tic
   G3 = rand(currentSize);
   G4 = 2*rand(currentSize);
   result = G3*G4;
   timeMultCPU(currentTest) = toc;
   

end

timeMultCPU

plot(10:100:1510,timeMultJacket,'-or') hold on plot(10:100:1510,timeMultCPU,'-xb') set(gca,'FontSize',16) title('Temps de calcul JACKET vs CPU pour la multiplication matricielle') xlabel('Taille des matrices') ylabel('Temps de calcul') legend('Jacket','CPU')



Voir aussi

Articles connexes

Références externes


La dernière modification de cette page a été faite le 10 avril 2013 à 14:55.