Différences entre les versions de « Jacket »

Ligne 12 : Ligne 12 :
 
'''''Attention''''': Jacket est installé sur '''Tigre''' et '''Lionceau'''.  
 
'''''Attention''''': Jacket est installé sur '''Tigre''' et '''Lionceau'''.  
  
Présentation donnée par Alexandre Desfosses Foucault: http://dms.umontreal.ca/wiki/images/2/20/Jacket.pdf
+
Présentation donnée par Alexandre Desfossés Foucault: http://dms.umontreal.ca/wiki/images/2/20/Jacket.pdf
  
  
Ligne 37 : Ligne 37 :
 
tic
 
tic
  
%pour plusieurs valeurs de p différentes, on résoud le système linéaire
+
%pour plusieurs valeurs de p différentes, on résout le système linéaire
  
 
for p = 1:50
 
for p = 1:50
Ligne 48 : Ligne 48 :
  
  
%% On refait la même chose, en mettant les variables sur le gpu
+
%% On refait la même chose, en mettant les variables sur le GPU
  
 
A = gdouble(A);
 
A = gdouble(A);
Ligne 55 : Ligne 55 :
 
tic
 
tic
  
%pour plusieurs valeurs de p différentes, on résoud le système linéaire
+
%pour plusieurs valeurs de p différentes, on résout le système linéaire
  
 
for p = 1:50
 
for p = 1:50
Ligne 62 : Ligne 62 :
 
    
 
    
 
end
 
end
 +
 +
gsync
  
 
gpuVariablesForLoopTime = toc
 
gpuVariablesForLoopTime = toc
Ligne 75 : Ligne 77 :
 
    
 
    
 
gend
 
gend
 +
 +
gsync
  
 
GFORTime = toc
 
GFORTime = toc
Ligne 113 : Ligne 117 :
  
  
%% Chronométrons pour comparer le temps de calcul du cpu au temps de calcul du gpu
+
%% Chronométrons pour comparer le temps de calcul du CPU au temps de calcul du GPU
  
 
% Multiplication sur le GPU :
 
% Multiplication sur le GPU :

Version du 16 avril 2013 à 14:00


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 Desfossés Foucault: http://dms.umontreal.ca/wiki/images/2/20/Jacket.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ésout 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ésout le système linéaire

for p = 1:50
    
x = linsolve(A,p*b); 
   
end

gsync

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

gsync

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 16 avril 2013 à 14:00.