Contenu principal

Cette page a été traduite par traduction automatique. Cliquez ici pour voir la dernière version en anglais.

Exécuter les fonctions MATLAB sur un GPU

Vous pouvez accélérer votre code en exécutant les fonctions MATLAB® sur un GPU. Le calcul GPU dans MATLAB nécessite Parallel Computing Toolbox™ .

Fonctions MATLAB avec arguments gpuArray

De nombreuses fonctions dans MATLAB et d'autres toolboxes s'exécutent automatiquement sur un GPU si vous fournissez un argument de données gpuArray. Un gpuArray dans MATLAB représente un tableau qui est stocké sur le GPU.

A = gpuArray([1 0 1; -1 -2 0; 0 1 -1]);
e = eig(A);

Chaque fois que vous appelez l’une de ces fonctions avec au moins un gpuArray comme argument d’entrée de données, la fonction s’exécute sur le GPU. La fonction génère un gpuArray comme résultat, à moins que le renvoi de données numériques à l'espace de travail local ne soit plus approprié (par exemple, size). Vous pouvez mélanger des entrées en utilisant à la fois des données gpuArray et des tableaux stockés dans la mémoire hôte dans le même appel de fonction. Les fonctions compatibles gpuArray incluent la transformée de Fourier discrète (fft), la multiplication matricielle (mtimes), la division matricielle gauche (mldivide) et des centaines d'autres.

Conditions pour les entrées gpuArray

Les fonctions compatibles GPU s'exécutent sur le GPU uniquement lorsque les données d'entrée se trouvent sur le GPU. Le type de données des arguments de paramètre tels que les dimensions ou les indices n'affecte pas l'endroit où la fonction est exécutée. Par exemple, la fonction sum dans ce code s'exécute sur le GPU car les données, la première entrée, se trouvent sur le GPU.

A = rand(10);
d = 2;
sum(gpuArray(A),d);
Cependant, la fonction sum dans ce code ne s'exécute pas sur le GPU car les données, la première entrée, ne sont pas sur le GPU.
A = rand(10);
d = 2;
sum(A,gpuArray(d));

Travailler avec des nombres complexes sur un GPU

Si la sortie d’une fonction exécutée sur un GPU peut potentiellement être complexe, vous devez spécifier explicitement ses arguments d’entrée comme complexes. Pour plus d'informations, voir Work with Complex Numbers on a GPU.

Travailler avec des tableaux parcimonieux sur un GPU

La fonction sparse peut être utilisée pour créer des objets gpuArray parcimonieux. De nombreuses fonctions MATLAB prennent en charge les objets gpuArray parcimonieux. Pour plus d'informations, voir Travailler avec des tableaux parcimonieux sur un GPU.

Vérifier les fonctions supportées par gpuArray

Plusieurs toolboxes MATLAB incluent des fonctions avec un support de gpuArray. Pour afficher les listes de toutes les fonctions de ces toolboxes qui prennent en charge les objets gpuArray, utilisez les liens dans le tableau suivant. Les fonctions dans les listes avec des indicateurs d'information ont des limitations ou des notes d'utilisation spécifiques à l'exécution de la fonction sur un GPU. Vous pouvez consulter les notes d’utilisation et les limitations dans la section Capacités étendues de la page de référence des fonctions. Pour plus d'informations sur les mises à jour des fonctions individuelles compatibles gpuArray, consultez les notes de version.

Nom de la toolboxListe des fonctions avec support de gpuArrayDocumentation spécifique au GPU
MATLABFonctions avec prise en charge gpuArray 
Statistics and Machine Learning Toolbox™Fonctions avec prise en charge gpuArray (Statistics and Machine Learning Toolbox)Analyze and Model Data on GPU (Statistics and Machine Learning Toolbox)
Image Processing Toolbox™Fonctions avec prise en charge gpuArray (Image Processing Toolbox)GPU Computing (Image Processing Toolbox)
Deep Learning Toolbox™

Fonctions avec prise en charge gpuArray (Deep Learning Toolbox)

*(voir aussi Deep Learning avec les GPU)

Scale Up Deep Learning in Parallel, on GPUs, and in the Cloud (Deep Learning Toolbox)

Deep Learning with MATLAB on Multiple GPUs (Deep Learning Toolbox)

Computer Vision Toolbox™Fonctions avec prise en charge gpuArray (Computer Vision Toolbox)Génération et accélération de code GPU (Computer Vision Toolbox)
Communications Toolbox™Fonctions avec prise en charge gpuArray (Communications Toolbox)Génération de code C/C++ (Communications Toolbox)
5G Toolbox™Fonctions avec prise en charge gpuArray (5G Toolbox) 
Signal Processing Toolbox™Fonctions avec prise en charge gpuArray (Signal Processing Toolbox)Génération de code et support des cartes graphiques (Signal Processing Toolbox)
Audio Toolbox™Fonctions avec prise en charge gpuArray (Audio Toolbox)Code Generation and GPU Support (Audio Toolbox)
Wavelet Toolbox™Fonctions avec prise en charge gpuArray (Wavelet Toolbox)Génération de code et support des cartes graphiques (Wavelet Toolbox)
Curve Fitting Toolbox™Fonctions avec prise en charge gpuArray (Curve Fitting Toolbox) 

Pour obtenir une liste des fonctions prenant en charge gpuArray dans tous les produits MathWorks®, consultez Fonctions prises en charge par gpuArray. Alternativement, vous pouvez filtrer par produit. Dans la barre Help, cliquez sur Functions . Dans la liste des fonctions, parcourez le volet de gauche pour sélectionner un produit, par exemple, MATLAB . En bas du volet de gauche, sélectionnez GPU Arrays . Si vous sélectionnez un produit qui ne dispose pas de fonctions gpuArray, le filtre GPU Arrays n'est pas disponible.

Deep Learning avec les GPU

Pour de nombreuses fonctions dans Deep Learning Toolbox, la prise en charge du GPU est automatique si vous disposez d'un GPU pris en charge et de Parallel Computing Toolbox. Vous n'avez pas besoin de convertir vos données en gpuArray . Voici une liste non exhaustive de fonctions qui, par défaut, s'exécutent sur le GPU s'il est disponible.

Pour plus d'informations sur la prise en charge automatique du GPU dans Deep Learning Toolbox, voir Scale Up Deep Learning in Parallel, on GPUs, and in the Cloud (Deep Learning Toolbox) .

Pour les boucles d'entraînement personnalisées, convertissez vos données en gpuArray et utilisez des fonctions avec prise en charge gpuArray (Deep Learning Toolbox).

Vérifier ou sélectionner un GPU

Si vous disposez d'un GPU pris en charge, MATLAB l'utilise automatiquement pour le calcul GPU. Si vous disposez de plusieurs GPU, vous pouvez utiliser gpuDeviceTable pour examiner les propriétés de tous les GPU détectés dans votre système. Vous pouvez utiliser gpuDevice pour sélectionner l’un d’entre eux ou utiliser plusieurs GPU avec un pool parallèle. Pour plus d'informations, voir Identifier et sélectionner un dispositif GPU et Run MATLAB Functions on Multiple GPUs . Pour vérifier si votre GPU est pris en charge, consultez Exigences de calcul du GPU .

gpuDeviceTable
    Index           Name           ComputeCapability    DeviceAvailable    DeviceSelected
    _____    __________________    _________________    _______________    ______________

      1      "NVIDIA RTX A5000"          "8.6"               true              true      
      2      "Quadro P620"               "6.1"               true              false     

Vous pouvez également déterminer le nombre de dispositifs GPU disponibles, inspecter certaines de leurs propriétés et sélectionner un dispositif à utiliser à partir du bureau MATLAB®. Dans l’onglet Home, dans la zone Environment, sélectionnez Parallel > Select GPU Environment .

The Parallel menu, including the Select GPU Environment pane showing two GPU devices. A tick next to the first device indicates that it is the selected device.

Utiliser les fonctions MATLAB avec le GPU

Cet exemple montre comment utiliser les fonctions MATLAB compatibles gpuArray pour fonctionner avec les objets gpuArray. Vous pouvez vérifier les propriétés de votre GPU en utilisant la fonction gpuDevice.

gpuDevice
ans = 
  CUDADevice with properties:

                 Name: 'NVIDIA RTX A5000'
                Index: 1 (of 2)
    ComputeCapability: '8.6'
          DriverModel: 'TCC'
          TotalMemory: 25544294400 (25.54 GB)
      AvailableMemory: 24734105600 (24.73 GB)
      DeviceAvailable: true
       DeviceSelected: true

  Show all properties.

Créez un vecteur de ligne qui répète les valeurs de -15 à 15. Pour le transférer au GPU et créer un objet gpuArray, utilisez la fonction gpuArray.

X = [-15:15 0 -15:15 0 -15:15];
gpuX = gpuArray(X);
whos gpuX
  Name      Size            Bytes  Class       Attributes

  gpuX      1x95              760  gpuArray              

Pour fonctionner avec les objets gpuArray, utilisez n'importe quelle fonction MATLAB compatible gpuArray. MATLAB exécute automatiquement les calculs sur le GPU. Pour plus d'informations, voir Exécuter les fonctions MATLAB sur un GPU. Par exemple, utilisez diag, expm, mod, round, abs et fliplr ensemble.

gpuE = expm(diag(gpuX,-1)) * expm(diag(gpuX,1));
gpuM = mod(round(abs(gpuE)),2);
gpuF = gpuM + fliplr(gpuM);

Tracez les résultats.

imagesc(gpuF);
colormap(flip(gray));

Si vous devez transférer les données depuis le GPU, utilisez gather . Le transfert de données vers le processeur peut être coûteux et n'est généralement pas nécessaire, sauf si vous devez utiliser votre résultat avec des fonctions qui ne prennent pas en charge gpuArray.

result = gather(gpuF);
whos result
  Name         Size            Bytes  Class     Attributes

  result      96x96            73728  double              

En général, l’exécution de code sur le CPU et le GPU peut produire des résultats différents en raison de la précision numérique et des différences algorithmiques entre le GPU et le CPU. Les réponses du CPU et du GPU sont toutes deux des approximations à virgule flottante tout aussi valables du véritable résultat analytique, ayant été soumises à un comportement d'arrondi différent pendant le calcul. Dans cet exemple, les résultats sont des entiers et round élimine les erreurs d'arrondi.

Exemples d'utilisation de GPU

Exemples d'exécution de fonctions MATLAB sur des GPU

Les exemples suivants transmettent des objets gpuArray aux fonctions MATLAB prises en charge, ce qui entraîne l'exécution de ces fonctions sur le GPU.

Nom de la toolboxExemples
MATLAB
Image Processing Toolbox
Deep Learning Toolbox
Statistics and Machine Learning Toolbox
Signal Processing Toolbox
Audio Toolbox
Communications Toolbox
Wavelet Toolbox

Autres exemples utilisant des GPU

Les exemples suivants utilisent d’autres supports GPU automatiques.

Nom de la toolboxExemples
Deep Learning Toolbox
Communications Toolbox

Remerciements

MAGMA est une bibliothèque de routines d'algèbre linéaire qui tirent parti de l'accélération GPU. Les fonctions d'algèbre linéaire implémentées pour les objets gpuArray dans Parallel Computing Toolbox exploitent MAGMA pour obtenir des performances et une précision élevées.

Voir aussi

| | | |

Rubriques