gpuArray
Tableau stocké sur le GPU
Description
Un objet gpuArray
représente un tableau stocké dans la mémoire du GPU. Un grand nombre de fonctions dans MATLAB® et dans d'autres toolboxes prennent en charge les objets gpuArray
, vous permettant d'exécuter votre code sur des GPU avec des modifications minimales du code. Pour travailler avec des objets gpuArray
, utilisez n'importe quelle fonction MATLAB compatible gpuArray
telle que fft
, mtimes
ou mldivide
. Pour trouver une liste complète des fonctions compatibles gpuArray
dans MATLAB et dans d'autres toolboxes, voir Fonctions prises en charge par le GPU. Pour plus d'informations, voir Exécuter les fonctions MATLAB sur un GPU.
Si vous souhaitez récupérer le tableau à partir du GPU, par exemple lorsque vous utilisez une fonction qui ne prend pas en charge les objets gpuArray
, utilisez la fonction gather
.
Remarque
Vous pouvez charger des fichiers MAT contenant des données gpuArray
sous forme de tableaux en mémoire lorsqu'un GPU n'est pas disponible. Un objet gpuArray
chargé sans GPU est limité et vous ne pouvez pas l'utiliser pour des calculs. Pour utiliser un objet gpuArray
chargé sans GPU, récupérez le contenu en utilisant gather
.
Création
Utilisez gpuArray
pour convertir un tableau de l'espace de travail MATLAB en un objet gpuArray
. Certaines fonctions MATLAB vous permettent également de créer directement des objets gpuArray
. Pour plus d'informations, voir Establish Arrays on a GPU.
Syntaxe
Arguments d'entrée
Fonctions d'objet
Il existe plusieurs méthodes pour examiner les caractéristiques d'un objet gpuArray
. La plupart se comportent comme les fonctions MATLAB du même nom.
isgpuarray | Determine whether input is gpuArray
|
existsOnGPU | Determine if gpuArray or CUDAKernel is available on GPU |
isUnderlyingType | Determine whether input has specified underlying data type |
ndims | Number of array dimensions |
size | Array size |
underlyingType | Type of underlying data determining array behavior |
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 toolbox | Liste des fonctions avec support de gpuArray | Documentation spécifique au GPU |
---|---|---|
MATLAB | Fonctions 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 *(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.
Exemples
Limites
Aucun des éléments suivants ne peut dépasser
intmax("int32")
:Le nombre d'éléments d'un tableau dense.
Le nombre d'éléments non nuls d'un tableau parcimonieux.
La taille dans une dimension donnée. Par exemple,
zeros(0,3e9,"gpuArray")
n'est pas autorisé.
La distribution d'un
gpuArray
parmi les workers d'un pool parallèle à l'aide des fonctionsdistributed
oucodistributed
n'est pas prise en charge. Si vous disposez de plusieurs GPU et que chaque worker de votre pool parallèle a accès à un GPU unique, vous pouvez à la place diviser manuellement ou générer initialement vos données sous forme de plusieurs objetsgpuArray
sur différents workers. Pour des exemples montrant comment utiliser les donnéesgpuArray
dans un pool parallèle, voir Run MATLAB Functions on Multiple GPUs .Limitations d'un
gpuArray
parcimonieux :Les tableaux GPU parcimonieux prennent uniquement en charge le référencement de lignes ou de colonnes entières par index.
L'attribution de valeurs à des tableaux GPU parcimonieux par index n'est pas supporté.
Pour plus d'informations, voir Travailler avec des tableaux parcimonieux sur un GPU.
Conseils
Si vous avez besoin de meilleures performances ou si une fonction n'est pas disponible sur le GPU,
gpuArray
prend en charge les options suivantes :Pour précompiler et exécuter du code purement élément par élément sur des objets
gpuArray
, utilisez la fonctionarrayfun
.Pour exécuter du code C++ contenant du code de périphérique CUDA® ou des appels de bibliothèque, utilisez une fonction MEX. Pour plus d'informations, voir Run MEX Functions Containing CUDA Code.
Pour exécuter les noyaux GPU existants écrits en CUDA C++, utilisez l'interface MATLAB
CUDAKernel
. Pour plus d'informations, voir Run CUDA or PTX Code on GPU.Pour générer du code CUDA à partir du code MATLAB, utilisez GPU Coder™ . Pour plus d'informations, voir Get Started with GPU Coder (GPU Coder).
Pour contrôler le flux de nombres aléatoires sur le GPU, utilisez la fonction
gpurng
.
Alternatives
Vous pouvez également créer un objet gpuArray
à l'aide de certaines fonctions MATLAB en spécifiant une sortie gpuArray
. Le tableau suivant répertorie les fonctions MATLAB qui vous permettent de créer directement des objets gpuArray
. Pour plus d’informations, consultez la section Capacités étendues de la page de référence des fonctions.
|
|
|
|
| (depuis R2024a) |
| gpuArray. colon |
| gpuArray. freqspace |
| gpuArray. linspace |
| gpuArray. logspace |
| gpuArray. speye |
Capacités étendues
Historique des versions
Introduit dans R2010b