Jacket


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 les deux calculs 

% Le résultat: «Addition: 17.26681»
% Le verdict: l'addition matricielle en utilisant le 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 12 mai 2020 à 13:41.