Connaître les besoins précis des applications est difficile. Mais connaître l'organisation des cœurs, caches partagés, et autres ressources matérielles, l'est tout autant, en particulier si on souhaite rester portable. Réécrire une application à chaque fois qu'on l'utilise sur une nouvelle machine est inenvisageable. hwloc est là pour se charger de détecter le matériel et de l'exposer de manière abstraite et portable sous la forme d'un arbre, soit par son interface de programmation en C, soit par des outils en ligne de commande. L'outil lstopo fournit par exemple une vue graphique de la hiérarchie de processeurs, caches, cœurs… exportable dans de nombreux formats via Cairo (voir le lien vers les exemples ci-dessous). D'autres outils permettent notamment de verrouiller des tâches à certains processeurs, cœurs…
- Site de hwloc (17 clics)
- Téléchargement (4 clics)
- Exemples (8 clics)
- Ancien site de libtopology (5 clics)
- Ancien site de PLPA (1 clic)
Développé dans l'équipe-projet INRIA Runtime à Bordeaux initialement sous le nom de libtopology, le logiciel a récemment fusionné avec PLPA (Portable Linux Portable Affinity), un sous-projet d'Open MPI. libtopology a apporté une connaissance beaucoup plus fine du matériel, une interface de programmation beaucoup plus flexible, et une plus grande portabilité. De son côté, PLPA apporte un vaste public grâce à son intégration dans Open MPI et MPICH2, très utilisés dans le domaine du calcul scientifique haute performance.
hwloc 0.9.1 est la première version officielle de hwloc, libtopology s'étant arrêté à 0.9. Le logiciel est diffusé sous licence BSD. Il fonctionne sous de nombreux systèmes d'exploitation, même si sa connaissance du matériel est la plus avancée sous Linux. Parmi les futures évolutions de hwloc, on trouve notamment la connaissance des périphériques d'entrées-sorties, qui permettra de placer les tâches près des périphériques qu'elles utilisent (notamment les cartes réseau et les disques).

# Interessant
Posté par Snarky (page perso, jabber id) . Évalué à 6.
J'ai compilé, ça fonctionne sans soucis. Juste dommage que dans les exemples, on vois juste les processeurs et les mémoires. J'aurai aimé voir ce que ça donne sur une détection complète du matériel (cartes PCI & compagnies)
[^] # Re: Interessant
Posté par Brice Goglin . Évalué à 6.
svn co https://svn.open-mpi.org/svn/hwloc/branches/libpci
./autogen.sh
puis configure/make comme d'habiture. Il faut avoir les headers de développement de pciutils (libpci-dev, pciutils-devel, ... selon la distrib). Ensuite lstopo (avec --whole-pci pour tous les détails) peut te montrer des trucs du genre http://pics.livejournal.com/bgoglin/pic/00002zb7
[^] # Re: Interessant
Posté par Nicolas Boulay . Évalué à 3.
[^] # Re: Interessant
Posté par ribwund . Évalué à 4.
[^] # Re: Interessant
Posté par Samuel Thibault (page perso) . Évalué à 3.
[^] # Re: Interessant
Posté par Nicolas Boulay . Évalué à 1.
cad ?
Les tailles vont de 32 à 128 octets. Cela peut changer pas mal de choses. J'imagine que l'on peut trouver des valeurs plus extrêmes encore.
[^] # Re: Interessant
Posté par Samuel Thibault (page perso) . Évalué à 2.
Au besoin on pourra rajouter le champ, au pire, la question, c'est où s'arrêter: mettre l'associativité, la taille de la TLB, etc?
[^] # Re: Interessant
Posté par Nicolas Boulay . Évalué à 4.
L'associativité peut être mortel quand elle est trop simple. Ce qui est le cas de tout ce qui n'est pas un monstre x86.
Sinon cote x86, il doit exister 32 64 et 128 comme taille de ligne de cache.
[^] # Re: Interessant
Posté par Samuel Thibault (page perso) . Évalué à 4.
[^] # Re: Interessant
Posté par Pierre Jarillon (page perso) . Évalué à 1.
Est-ce que c'est cohérent ? Redondant ? Est-ce que ça pourrait être regroupé ?
[^] # Re: Interessant
Posté par Brice Goglin . Évalué à 4.
hwreport semble essentiellement lister le matériel et dire si un driver linux et lequel le supporte. Aucun rapport avec hwloc a priori donc?
# Flattened Device Tree
Posté par Thierry Thomas (page perso, jabber id) . Évalué à 2.
Cf. [http://fdt.secretlab.ca/Main_Page]
ou encore [http://wiki.freebsd.org/FlattenedDeviceTree]
[^] # Re: Flattened Device Tree
Posté par Brice Goglin . Évalué à 2.
# Lien avec OAR
Posté par Sytoka Modon (page perso) . Évalué à 3.
http://oar.imag.fr/
[^] # Re: Lien avec OAR
Posté par Brice Goglin . Évalué à 1.
# Quelques questions ?
Posté par Cédric Chevalier (page perso) . Évalué à 3.
Si je comprends correctement, le but actuel est d'avoir une représentation des capacités de calculs et de mémoire d'une machine, potentiellement multi-noeuds, sous forme d'un arbre. Donc en quelques sortes, seuls les noeuds de l'arbre sont renseignés. Est-il ou sera-t-il possible dans le futur de connaître les liaisons entre ces noeuds ? genre latence et bande passante ?
Avoir ces informations nécessitera peut être de passer à une représentation en graphe, mais cela pourrait être extrêmement utile pour distribuer efficacement les données sur la machine.
En attendant je vais tester un peu et faire un peu de pub autour de moi ;).
[^] # Re: Quelques questions ?
Posté par Brice Goglin . Évalué à 2.
Envoyer un commentaire
Suivre le flux des commentaires
Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.