Différences entre versions de « Jacket »

Ligne 4 : Ligne 4 :
  
 
'''Jacket''' est un ''toolbox'' propriétaire pour [[MATLAB|MATLAB]] qui permet l'exécution de code sur GPUs. Similaire à [[GPUmat|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.
 
'''Jacket''' est un ''toolbox'' propriétaire pour [[MATLAB|MATLAB]] qui permet l'exécution de code sur GPUs. Similaire à [[GPUmat|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.
 +
  
 
__TOC__
 
__TOC__

Version du 6 juin 2013 à 11:20


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/d/d0/PresentationJacket0.pdf

Exemples

Exemple 1

On utilise la fonction TIMEIT de Jacket. La fonction TIMEIT sert à calculer le temps de calcul par les processeurs (GPU ou CPU).

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

clear; clear gpu_hook;

n=6000

Acpu=rand(n,n,'single');
Bcpu=rand(n,n,'single');

Agpu=gsingle(Acpu); %on déclare la même matrice, mais cette fois-ci pour le GPU (c.-à-d., gsingle)

Bgpu=gsingle(Bcpu);

tCpuPlus=timeit(@() Acpu+Bcpu);

tGpuPlus=timeit(@() Agpu+Bgpu);


fprintf('Addition: %f\n', tCpuPlus/tGpuPlus); % On compare le temps des deux calculs.

% Le résultat: « Addition: 17.26681 »
% Le verdict: l'addition matricielle sur GPU est 17 fois plus rapide.  

Exemple 2

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

clear; clear gpu_hook;

% Chronométrons pour comparer le temps de calcul du CPU au temps de calcul du GPU.

minSize = 100; maxSize = 2000; it = 100;

sizes = minSize:it:maxSize;

nbSizes = length(sizes);

timeMultGPU = zeros(nbSizes,1);

timeMultCPU = zeros(nbSizes,1);

currentTest = 1;

for currentSize = minSize:it:maxSize

	G1=grand(currentSize); G2=grand(currentSize);

	G3=double(G1); G4=double(G2);

	timeMultGPU(currentTest) = timeit(@() G1*G2);  

	timeMultCPU(currentTest) = timeit(@() G3*G4);

	currentTest = currentTest + 1;

end

timeMultGPU          %Le temps calculé pour le GPU

timeMultCPU          %Le temps calculé pour le CPU

timeMultCPU/timeMultGPU          %Le rapport entre les deux temps calculé. 

plot(minSize:it:maxSize,timeMultGPU,'-or')

hold on

plot(minSize:it:maxSize,timeMultCPU,'-xb')

set(gca,'FontSize',16)

title('Temps de calcul GPU vs CPU pour la multiplication matricielle')

xlabel('Taille des matrices')

ylabel('Temps de calcul (s)')

legend('GPU','CPU','Location','NorthWest')

Exemple 3 (GFOR)

Dans cet exemple on va exécuter plusieurs itérations d'une boucle «for» simultanément sur le GPU. Tous les m multiplications matricielles sont réalisées simultanément.

clear; clear gpu_hook;

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


n=5;
m=20;

A = grand(n,n,m);  % On crée une matrice (un tableau) sur le GPU.

B = gones(n);

gfor p = 1:m

    A(:,:,p) = A(:,:,p) * B

gend

Voir aussi

Articles connexes

Références externes


La dernière modification de cette page a été faite le 6 juin 2013 à 11:20.