Différences entre versions de « Jacket »

Ligne 78 : Ligne 78 :
  
  
 +
===Exemple 2===
 +
 +
addpath(genpath('/local/jacket-2.0/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;
 +
timeMultJacket = zeros(nbSizes,1);
 +
 +
currentTest = 1;
 +
 +
for currentSize = 10:100:maxSize
 +
 +
tic
 +
 +
G1=grand(currentSize);
 +
 +
G2=2*grand(currentSize);
 +
 +
result = G1*G2;
 +
 +
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')
  
  

Version du 27 février 2013 à 15:19


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

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.0/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.0/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; timeMultJacket = zeros(nbSizes,1);

currentTest = 1;

for currentSize = 10:100:maxSize

tic

G1=grand(currentSize);

G2=2*grand(currentSize);

result = G1*G2;

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 27 février 2013 à 15:19.