Différences entre les versions de « Jacket »
Ligne 13 : | Ligne 13 : | ||
== Exemples == | == 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 | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
== Voir aussi == | == Voir aussi == |
Version du 27 février 2013 à 14:14
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