Archives pour la catégorie Linux

Installer GNU Octave 3.8.1 sur Linux Xubuntu 14.10

Depuis la version 3.8, GNU Octave dispose d’un environnement de développement (EDI). Cet outil est pour le moment encore en version de test. Il n’est pas activé par défaut lors de l’installation. Il le sera avec la sortie de la version 4 de GNU Octave.

J’avais précédemment montré comment installer GNU Octave sur Windows. Ce billet vous montrera comment l’installer sur Xubuntu 14.10.

GNU Octave Logithèque Ubuntu

Logithèque Ubuntu

Comme pour toutes les distributions Debian, il est possible d’installer GNU Octave à partir du gestionnaire de paquets (apt-get install octave par exemple).

Vous pouvez aussi plus simplement utiliser le menu  » Logithèque Ubuntu  » :
Logithèque Ubuntu

Le paquet octave 3.8.1-1ubuntu1 contient la dernière version à jour de GNU Octave.

GNU Octave et MenuLibre

Une fois installé, le lanceur se trouve normalement dans le menu  » Ã‰ducation  » de MenuLibre. Pour ma part, je préfère l’avoir dans le menu Développement. Pour ce faire :

  • ouvrir le menu  » Paramètres > Éditeur de menus « 
  • sélectionner GNU Octave
  • utiliser les flèches en bas à gauche pour déplacer le menu

Gnu Octave MenuLibre

Activation de l’EDI

L’environnement de développement de GNU Octave est encore en phase de test. Il n’est donc pas activé par défaut.

Si vous exécutez GNU Octave, vous obtenez la console classique :
GNU Octave console

Pour forcer GNU Octave à démarrer en mode EDI, il faut ajouter --force-gui via l’éditeur de menu :
GNU Octave MenuLibre

Vous pouvez aussi en profiter pour modifier le dossier de démarrage de GNU Octave en renseignant le champs  » Répertoire de travail « .

L’environnement de développement de GNU Octave devrait maintenant s’ouvrir :
GNU Octave IDE - EDI

Gestion des cartes graphiques NVIDIA dans MATLAB : le NVIDIA System Management Interface

NVIDIA fournit un utilitaire de monitoring avec les drivers récents des cartes Tesla et Quadro. Cet outil s’appelle le « NVIDIA System Management Interface » ou « nvidia-smi ». Il est disponible sur Linux, et avec les versions 64bit de Windows Server 2008 R2 et de Windows 7. Il est également fournit avec les drivers des cartes GeForce avec une prise en charge limitée pour ces modèles (voir la liste à la fin de ce billet).

Je vais vous montrer comment appeler cet exécutable à partir de MATLAB pour récupérer des informations sur votre carte NVIDIA (nom, température, mémoire, fréquence…).

1) nvidia-smi

nvidia-smi est donc un exécutable 64 bits qui est installé en même tant que le driver de la carte graphique.

Le dossier d’installation par défaut sur Windows 7 est « C:\Program Files\NVIDIA Corporation\NVSMI ». Pour plus de souplesse, vous pouvez ajouter ce chemin dans la variable d’environnement PATH de Windows.

Sur Linux, il faut utiliser le driver propriétaire fournit par NVIDIA. Le dossier d’installation par défaut est « /usr/bin »

Pour vérifier que vous êtes prêt à utiliser cet outil, vous pouvez simplement exécuter la commande suivante dans une invite de commande de votre système d’exploitation :

nvidia-smi -L

Indice du GPU

Pour simplifier la suite de ce billet, je partirai du principe qu’il n’y a qu’une seule carte graphique présente sur votre machine. La commande utilisée commencera donc toujours par :

nvidia-smi -i 0

Le « 0 » étant l’indice du premier GPU détecté sur la machine.

Liste des propriétés

La commande pour récupérer les propriétés est la suivante :

nvidia-smi -i 0 --query-gpu=

Le signe « = » est alors suivi de la liste des propriétés à récupérer, séparées par des virgules. Pour obtenir la liste de toutes les propriétés, utilisez la commande suivante dans une console de votre système d’exploitation :

nvidia-smi --help-query-gpu > list.txt

Ouvrez le fichier list.txt et cherchez la propriété qui vous intéresse.

Vous pouvez consulter la liste générée sur ma machine ici.

Format

Sans trop rentrer dans le détail, on utilisera le formatage --format=csv,noheader lors des appels à nvidia-smi

2) nvidia-smi & MATLAB

Pour résumer, on utilisera ce modèle de commande :

nvidia-smi -i 0 --format=csv,noheader --query-gpu=

Que ce soit sur Windows, Linux ou Mac OS X, MATLAB est capable d’exécuter des programmes externes grâce aux fonctions system, dos ou unix.

On peut donc tester comme précédemment dans le Command Window de MATLAB :

[status, data] = system('nvidia-smi -L')
status =

     0


data =

GPU 0: Quadro K2000 (UUID: GPU-66119846-d929-fb76-3d19-b9056e2e00ab)

Il est très important de tester la valeur de retour de la variable status. Elle vaut 0 en cas de succès et une valeur différente de 0 en cas d’échec. Tout le travail consiste ensuite à extraire les informations de la chaine de caractère contenue dans la variable data

Version du driver

[status, data] = system('nvidia-smi -i 0 --format=csv,noheader --query-gpu=driver_version')
data =

320.00

Nom

[status, data] = system('nvidia-smi -i 0 --format=csv,noheader --query-gpu=name')
data =

Quadro K2000

Numéro de série

[status, data] = system('nvidia-smi -i 0 --format=csv,noheader --query-gpu=serial')
data =

0321113022548

Identifiant unique (UUID)

[status, data] = system('nvidia-smi -i 0 --format=csv,noheader --query-gpu=uuid')
data =

GPU-66119846-d929-fb76-3d19-b9056e2e00ab

Vitesse ventilateur

[status, data] = system('nvidia-smi -i 0 --format=csv,noheader --query-gpu=fan.speed')
data =

30 %

Température

[status, data] = system('nvidia-smi -i 0 --format=csv,noheader --query-gpu=temperature.gpu')
data =

32

Mémoire totale

[status, data] = system('nvidia-smi -i 0 --format=csv,noheader --query-gpu=memory.total')
data =

2047 MB

Mémoire disponible

[status, data] = system('nvidia-smi -i 0 --format=csv,noheader --query-gpu=memory.free')
data =

34 MB

Mémoire utilisée

[status, data] = system('nvidia-smi -i 0 --format=csv,noheader --query-gpu=memory.used')
data =

2013 MB

3) Fonctions MATLAB

J’ai écris deux fonctions MATLAB pour vous permettre de récupérer aisément certaines informations sur votre carte graphique NVIDIA.

Vous pouvez télécharger les deux codes sources ici : Informations sur la carte graphique NVIDIA avec MATLAB et le NVIDIA System Management Interface

Voici un exemple d’utilisation :

>> [gpuInfo, sysInfo] = nvsmiQuery;
>> nvsmiLog(gpuInfo, sysInfo);

Voici un aperçu des informations renvoyées :

query nvidia gpu property with MATLAB

4) Multiple GPUs

Si vous avez plusieurs cartes graphiques installées sur votre machine, il serait tentant d’utiliser les syntaxes suivantes pour accéder aux différents GPU :

nvidia-smi -i 0 ...

Puis

nvidia-smi -i 1 ...

Mais, il faut savoir que l’ordre des indices peut changer à chaque démarrage de la machine. Dans ce cas, il est donc plus prudent d’utiliser l’identifiant unique de chaque GPU :

nvidia-smi -i GPU-66119846-d929-fb76-3d19-b9056e2e00ab ...

5) Alternative à l’utilisation de la fonction system

L’outil fourni par NVIDIA permet de stocker le résultat dans un fichier CSV, comme par exemple :

status = system('nvidia-smi -i 0 -f gpuprop.csv --format=csv,noheader --query-gpu=driver_version,serial,name,uuid,temperature.gpu,fan.speed')

Ou encore dans un fichier XML :

status = system('nvidia-smi -q -f gpuprop.xml -x ')

Il faudra alors ensuite extraire les informations de ces fichiers.

Vous pouvez consulter les fichiers issus des lignes précédentes :

6) Conclusion

Vous avez maintenant un outil à disposition pour récupérer des informations sur les GPUs NVIDIA directement depuis MATLAB.

En réalité, l’exécutable nvidia-smi est basé sur la bibliothèque NVIDIA Management Library (NVML) disponible gratuitement avec le GPU Deployment Kit. De ce fait, on peut faire directement appel à cette librairie via un fichier MEX depuis MATLAB. C’est ce que je vous montrerai dans un prochain billet ;)

N’hésitez pas à me faire des retours si vous rencontrez des difficultés dans l’utilisation des codes présentés dans ce billet.

7) Produits pris en charge

Voici une liste des GPUs pris en charge par nvidia-smi :

  • Full Support
    • NVIDIA Tesla Line:
      • S2050, C2050, C2070, C2075,
      • M2050, M2070, M2075, M2090,
      • X2070, X2090,
      • K10, K20, K20X, K20Xm, K20c, K20m, K20s
    • NVIDIA Quadro Line:
      • 410, 600, 2000, 4000, 5000, 6000, 7000, M2070-Q
      • K2000, K2000D, K4000, K5000, K6000
    • NVIDIA GRID Line:
      • K1, K2, K340, K520
    • NVIDIA GeForce Line: None
  • Limited Support
    • NVIDIA Tesla Line: S1070, C1060, M1060
    • NVIDIA Quadro Line: All other current and previous generation Quadro-branded parts
    • NVIDIA GeForce Line: All current and previous generation GeForce-branded parts

8) Liens utiles

Récupérer des informations sur le processeur avec MATLAB et la SDL 2

La bibliothèque SDL 2 (Simple DirectMedia Layer) possède quelques fonctionnalités pour récupérer des informations sur le CPU (voir CPU Feature Detection). J’ai donc écrit un fichier MEX qui permet de récupérer ces informations avec MATLAB. Vous pouvez télécharger le code ici.

Il faut installer les outils de développement de la SDL 2 et compiler le fichier MEX avant la première utilisation. Toutes les informations sont contenues dans les entêtes des fichiers getCpuInfoSdl2.m et getCpuInfoSdl2mx.c. Pour les utilisateurs sur Mac, vous pouvez vous référer à ce billet pour la compilation du MEX.

Les information suivantes sont renvoyées :

  • cpuCacheLineSize : taille du cache L1 en Ko
  • cpuCount : nombre de cÅ“urs (Intel hyperthreading compris)
  • systemRAM : quantité de mémoire RAM installée

Le code renvoi également, sous forme de booléens, la disponibilité des jeux d’instructions suivants :