prtdiag : l’Information cpu sur solaris

Voici un bonne petite commande pour connaitre des informations sur le nombre de processeurs/coeurs ainsi que leurs fréquences sur solaris.

# /usr/platform/`/usr/bin/uname -i 2> /dev/null`/sbin/prtdiag

Ce qui retourne sur une veille machine ceci :

System Configuration: Sun Microsystems  sun4u Sun Blade 2500
System clock frequency: 160 MHZ
Memory size: 2GB

==================================== CPUs ====================================
               E$          CPU     CPU       Temperature
CPU  Freq      Size        Impl.   Mask     Die    Ambient
---  --------  ----------  ------  ----  --------  --------
 0   1280 MHz  1MB         US-IIIi   2.4     66 C      29 C
 1   1280 MHz  1MB         US-IIIi   2.4     72 C      29 C

================================= IO Devices =================================
     Bus   Freq
Brd  Type  MHz   Slot        Name                          Model
---  ----  ----  ----------  ----------------------------  --------------------
 0   pci    66            2  SUNW,XVR-600 (display)        SUNW,375-3153
 0   pci    66            3  network-pci14e4,1647.108e.16+
 0   pci    66            4  scsi-pci1000,21.1000.1000.1 +
 0   pci    66            4  scsi-pci1000,21.1000.1000.1 +
 0   pci    33            7  isa/serial-su16550 (serial)
 0   pci    33            7  isa/serial-su16550 (serial)
 0   pci    33            7  isa/dma-isadma (dma)
 0   pci    33            8  sound-pci10b9,5451.10b9.5451+
 0   pci    33            8  usb-pci1033,35.1235.35.1043 +
 0   pci    33            8  usb-pci1033,35.1235.35.1043 +
 0   pci    33            8  usb-pci1033,e0.1235.e0.2004 +
 0   pci    33           10  usb-pci10b9,5237.3 (usb)
 0   pci    33           11  usb-pci10b9,5237.3 (usb)
 0   pci    33           11  firewire-pci104c,8024.1235.8+
 0   pci    33           13  ide-pci10b9,5229.c4 (ide)

============================ Memory Configuration ============================
Segment Table:
-----------------------------------------------------------------------
Base Address       Size       Interleave Factor  Contains
-----------------------------------------------------------------------
0x200000000        2GB               2           BankIDs 0,1

Bank Table:
-----------------------------------------------------------
           Physical Location
ID       ControllerID  GroupID   Size       Interleave Way
-----------------------------------------------------------
0        0             1         1GB             0,1
1        0             1         1GB

Memory Module Groups:
--------------------------------------------------
ControllerID   GroupID  Size       Labels
--------------------------------------------------
0              1        2GB        DIMM2,DIMM3

=============================== usb Devices ===============================

Name          Port#
------------  -----
mouse           2

=============================== usb Devices ===============================

Name          Port#
------------  -----
keyboard        2

C4380 et windows 7

hp_photosmart_c4380Parmis les imprimantes wifi la HP c4380 est incontestablement un des gros best seller. Cette imprimante « WAF compliant » assez compliqué a configurer sous windows vista est un amour sous windows 7 étant directement reconnu en wifi par l’ajout de nouvelle imprimante de windows 7.

Il n’en va malheureusement pas de même pour la fonction scanner de l’imprimante pour laquelle ont doit obligatoirement passer par l’installation des drivers HP.

Le mystère planait sur la possibilité qu’HP ne développe pas de drivers pour Windows 7. Heureusement, le 20 octobre 2009, HP publia les pilote 13.1.0 qui apportait le support complet de la C4380 pour Windows 7. Pour la petite histoire ces pilotes pèsent la bagatelle de 310mo.

Ouf ! Et merci HP.

Vous pouvez télécharger ces pilotes en cliquant sur ce lien.

Truecrupt 6.3 compatible Windows 7

truecrypt-iconComme promis,Truecrypt 6.3 apparait avec la sortie de Windows 7 . Cette nouvelle version apporte des nouveautés trés interessante:

  • Le support complet de Windows 7. Plus besoin de bidouille comme j’avais expliqué ici.
  • Le support complet de MacOS 10.6.
  • Mais aussi d’un nouveau système de volume favoris. Cela peut être très pratique dans le cas où vous avez besoin que des volumes soit montés avant que l’OS, les applications et les services démarrent et aussi avant que l’utilisateur s’identifie. Cela peut être aussi très sympa dans le cas d’un dossier de partage réseau qui est dans un volume truecrypt et qu’il faut que les partages réseaux soit restauré à chaque fois que l’OS est redémarré.

Mais aussi la correction de bug mineur.

Plus de détail sur le site de truecrypt.

CUDA

Voici la seconde partie de mon article sur les GPU.
Celui-ci vous permettra de découvrir CUDA de NVIDIA

1      Présentation

CUDA ou Computer Unified Device Architecture est une librairie de développement créée par NVIDIA en 2007. Celle-ci associée à une carte graphique compatible, permet d’utiliser la puissance de calculs des GPU d’architectureG80 et plus de NVidia (à partir des GeForce 8800 et déclinaisons).
Par abus de langage nous parlerons aussi de langage CUDA.
CUDA est aussi le premier langage à exploiter l’unification des shaders : les processeurs de la carte ne sont pas différentiés en unités pour le traitement des vertex ou des fragments, chacun de ceux-ci peut être assigné à n’importe quelle tâche.

L’API CUDA supporte plusieurs langages tels que le C, le C++ et le Fortran.
Ces trois langages peuvent être utilisés simultanément pour écrire diverses fonctions exécutées par le GPU.

Il existe cependant des « wrapper », des passerelles, servant de liaison entre ces langages bas-niveau et des langages de plus haut niveaux tels que Python, Java et .Net.

CUDA est constitué d’un pilote (driver), déjà intégré aux drivers les plus récents, d’un runtime, et de quelques librairies.

Les différents composants de CUDA
Les différents composants de CUDA

Il existe 3 niveaux de programmation pour CUDA, chacune disposant de sa propre API :

–       Utilisation d’une librairie externe.
Celle-ci, possède le code de toute les fonctions à exécuter par le GPU, et sert de liaison entre le programme et le GPU.
Le développeur ne peut utiliser que certaines fonctions prédéfinies, et ne peut contrôler directement le GPU.
Les deux librairies les plus connues sont CUBLAS qui offre un ensemble d’éléments pour réaliser des calculs d’algèbre linéaires sur le GPU, ainsi que CUFFT qui permet le calcul de transformée de Fourrier.

–       l’API de haut niveau : l’API CUDA Runtime ou appelée plus communément C for CUDA.
Cette API est implémentée « au dessus » de l’API bas niveau. Chaque appel à une fonction du runtime est décomposé en instructions plus basiques gérées par l’API driver.
Ces 2 API sont exclusives : le programmeur doit utiliser soit l’une soit l’autre. Il est impossible de mélanger des appels de fonctions de l’une et de l’autre.
Lorsque l’on parle d’API de haut niveau, il convient de relativiser : l’API runtime reste ce que beaucoup considèreraient comme déjà de très bas niveau. Cependant elle offre des fonctions bien pratiques pour l’initialisation ou la gestion des contextes.
Cette API sera la plus couramment utilisée.

–       l’API de bas niveau : l’API CUDA Driver.
Cette API est plus complexe à gérer, elle demande plus de travail pour lancer un traitement sur le GPU, mais en contrepartie elle est plus flexible, offrant un contrôle supplémentaire au programmeur qui le désire.
Cette API a l’avantage de pouvoir charger des portions de code en tant que module à partir de code binaires CUDA ou de code assembleur, et permet aussi d’inspecter les paramètres, …
Cette API est beaucoup plus difficile à écrire, à débugger et nécessite beaucoup plus de lignes de code à écrire, mais elle offre de meilleure performances.

Les API Runtime et Driver sont capables toutes les deux de communiquer avec des ressources OpenGL ou Direct3D. L’utilité est évidente : CUDA pourrait être utilisé pour générer des ressources (géométrie, textures procédurales, etc.) qui seraient ensuite passées à l’API graphique ou à l’inverse on pourrait imaginer que l’API 3D pourrait envoyer le résultat du rendu à CUDA qui serait dans ce cas utilisé pour effectuer un post traitement. Les exemples d’interactions sont nombreux et l’avantage est que les ressources restent stockées dans la mémoire RAM du GPU sans avoir à passer par le goulot d’étranglement du bus PCI-Express.

CUDA est fourni avec un « émulateur » : le code devant s’exécuter sur le GPU est en fait exécuté sur le GPU. Les performances sont alors bien moindres, mais permettent de débugger l’application et de tester celle-ci lorsqu’on ne dispose pas de GPU compatible.

Présentation d’un GPU

Mon stage de fin d’études au Centre National d’Etudes Spatiales portant sur les GPU, je vous propose une série d’articles traitant de ce thème.

Depuis ma première publication le 07 octobre, j’ai complété mon article, en lui rajoutant quelques précisions.

1.1         Historique

1.1.1        Le CPU

Les ordinateurs personnels et les stations de travail professionnel sont des systèmes autonomes dédiés à l’exécution d’applications logicielles. Au cœur de ces systèmes se trouve un microprocesseur central, ou CPU (Central Processing Unit), qui interprète les instructions et traite les données qui constituent ces applications. C’est lui qui a la charge de l’ensemble des calculs.

1.1.2        Evolution du CPU

Dans les années 80, de nouveaux besoins sont apparus nécessitant le traitement de données de plus en plus volumineuses, notamment dans les domaines de l’imagerie, de la vidéo ou du son, encore appelé multimédia. Les principales applications à l’origine de ces besoins sont logiciels professionnels de conception assistée par ordinateur (CAO) et les jeux vidéos.

Les applications multimédia s’appuient sur des algorithmes de nature très différente des applications dites « classiques » (bureautique par exemple). Alors que ces dernières traitent peu de données mais avec une logique de traitement complexe impliquant beaucoup d’interactions, de re-bouclages et de branchement conditionnels (si… alors…), les applications multimédia nécessite d’appliquer des algorithmes plus linéaires mais à de gros volumes de données. On parle de calcul vectoriel.

Les architectures des microprocesseurs se sont donc adaptées pour traiter aux mieux ces nouvelles problématiques en proposant des fonctionnalités dédiées aux applications multimédia, sous formes d’instructions spécifiques implantées au sein du processeur : MMX pour les processeurs Intel Pentium, 3D Now ! pour les processeurs AMD Opteron. Ces nouvelles instructions, qui permettent d’appliquer la même opération à plusieurs données à la fois, ont permis d’améliorer les performances des applications faisant appel à des algorithmes vectoriels, ce qui a contribué à leur succès.

Ces nouveaux microprocesseurs ont permis d’apporter des GFLOPS [1] aux ordinateurs de bureau ainsi que des centaines de GFLOPS aux serveurs. Ces nouvelles instructions et l’augmentation de performances associée ont permis d’enrichir la qualité des applications en élargissant les fonctionnalités offertes tout en améliorant les interfaces utilisateurs. Les utilisateurs, à leur tours, habitués à ces continuels progrès exigent toujours plus d’améliorations, aussi bien sur la perception des performances que sur les effets visuels, ce qui crée un cycle positif pour l’industrie informatique.

Pour répondre au besoin croissant de performance, la plupart des développeurs de logiciels ont compté sur les évolutions du matériel pour exécuter plus rapidement leurs programmes. Ainsi le même logiciel fonctionne plus rapidement sur chaque nouvelle génération de processeurs. Malheureusement cette course s’est ralentie depuis 2003 en raison de problèmes limitant l’augmentation du nombre d’instructions qu’un CPU peut exécuter par seconde (on parle de fréquence d’horloge). Ces problèmes sont principalement liés à la miniaturisation des composants (finesse de gravure) et à l’augmentation du nombre de transistors dans un microprocesseur induisant un dégagement de chaleur de plus en plus important ainsi que des interactions électromagnétiques, entrainant engendrant une augmentation de consommation électrique.

Pour palier aux problèmes de miniaturisation, plusieurs solutions ont été trouvées :

  • Combiner plusieurs processeurs en un seul, les tâches à réaliser sont alors réparties entre les unités de calcul qui le composent. C’est ce que l’on appelle le « multi-cœur ». Cette nouvelle technologie a eu un impact important sur le développement logiciel.
  • Adjoindre un microprocesseur spécifique dédié à l’accélération des applications les plus gourmandes, à savoir les applications multimédia. Cette approche a été possible de part la spécificité algorithmique (calcul vectoriel) de ces derniers. C’est ce qui deviendra le GPU (Graphic Process Unit).

[1] GFLOPS : se lit Giga Flops. Signification : milliards d’opérations à virgule flottante par seconde.
Il s’agit de l’unité de référence pour calculer la vitesse d’un processeur.

Les Westmere ou les futurs monstres de l’AES ?

intel_core_i5_1Contrairement à ce que je disais il y a quelques billet, le i5 et i7 actuel (Lynnfield – 45nm) ne possèdent pas d’instruction améliorant la cryptographie. Ce sera uniquement avec les processeurs se basant sur l’architecture Westmere (32nm) prévu pour fin 2009, début 2010 que 6 instruction AES seront intégrés au processeur.

Outre ces instructions lié a l’AES, Intel à ajouté une nouvelle instruction supportant le Carry-Less Multiplication (CLMUL) qui permet d’améliorer les performances des applications utilisant les algorithme de chiffrement par bloc. Nommé PCLMULQDQ ces instruction vont permettre d’optimiser le calcul de formule  lié à la théorie des cors finie de ce bon vieux Evariste Gallois très utilisé en cryptographie (cocorico).

Continuer la lecture de Les Westmere ou les futurs monstres de l’AES ?

Netflow tools

flowscanVoici un sujet fréquemment débattu sur FRnOG ici ou : Quel outils de Netflow choisir pour superviser le traffic de son réseau ?

La réponse dépend directement du besoin de supervision, il n’y a pas de réponse unique. Concernant les versions propriétaire et commercial Manage Engine est régulièrement cité même s’il fait l’objet de quelques critique face a des problèmes de lenteur ponctuel. Pour ce qui est des version libre/gratuite, networkuptime.com ou switch.ch dressent des bon résumés de la situation avec la présentation de plusieurs outils.

Windows 7 Checksum

Ayant accès aux version finale de Windows 7 à travers MSDNAA. Voici les checksum des différentes ISO des version finale de Windows 7  aussi appeler Windows 7 RTM. Avant de l’installer un petit checksum permet d’être sure d’avoir une version exempte de virus/vers/trojan/backdoor en tout genre.

en_windows_7_professional_x64 :

CRC32 : 502C42C1
MD5 : 7B7AF5FE3A01E9FD76DE4DACB45A796B
SHA1 : 50127304441A793EE51B3F501289F6599A559E9F

en_windows_7_professional_x86 :

CRC32 : 578725D1
MD5 : D8F675AAEB48057452666B0CD686D7F5
SHA1 : 697FA06554502FB21D30275273B25747299C020D

fr_windows_7_professional_x64 :

CRC32 : C1B0708A
MD5 : 6518B8C394103BAF4C5F6D2485CE7420
SHA1 : 608BBC966703F42FF3A9C6AD9F162FCAA1BC5D9A

fr_windows_7_professional_x86 :

CRC32 : 6F35A8FD
MD5 : 49ECA4D46AF3958C1C815E19627B45C8
SHA1 : 3DD41ECB795CE6D29DF95E52224CEB18422E240F

Je recommande eXpress CheckSum Calculator comme calculateur de checksum.