Liens connexes

Dépêche modérée par

Dépêche éditée par

: Hardware Locality (hwloc)

Posté par Brice Goglin (). Modéré le 06 novembre 2009.
23
Hardware Locality (hwloc) est une bibliothèque détectant le matériel et l'exposant de manière portable et générique aux utilisateurs et applications. Cela permet notamment aux applications d'adapter leur comportement à la complexité interne croissante des machines modernes, avec une hiérarchie sophistiquée de processeurs, cœurs, caches partagés, threads, nœuds NUMA

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…

> Lire la suite (17 commentaires, moyenne: 3).   [dépêche : 2096 caractères]

La cible principale d'hwloc est les applications de calcul haute performance (HPC) qui ont besoin d'une connaissance fine du matériel pour déployer des threads (par exemple avec OpenMP) et/ou des processus MPI. L'exploitation optimale des performances du matériel impose en effet de prendre en compte les besoins et affinités entre ces tâches et les caractéristiques du matériel. Par exemple, deux tâches se synchronisant régulièrement ou échangeant beaucoup de données doivent de préférence être placées sur des cœurs partageant un cache, ou au moins dans le même processeur. Par contre, des tâches nécessitant beaucoup de bande passante mémoire doivent de préférence être réparties sur l'ensemble de la machine. D'où l'intérêt de bien connaître la hiérarchie matériel en dessous.

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).

Cette discussion est archivée, il n'est plus possible de laisser des commentaires.

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.

Interessant

Posté par Snarky (Jabber id, page perso, ) le 06/11/2009 à 11:56. (lien). Évalué à 6.

Beau projet, qui a de nombreuses utilités.
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)

--
Milite pour un about:black sur les navigateurs ! ( シ Sauvons la planète ツ )

Flattened Device Tree

Posté par Thierry Thomas (Jabber id, page perso, ) le 06/11/2009 à 13:41. (lien). Évalué à 2.

Et comment ça se positionne par rapport au Flattened Device Tree ?

Cf. [http://fdt.secretlab.ca/Main_Page]
ou encore [http://wiki.freebsd.org/FlattenedDeviceTree]

--
Th. Thomas.

Lien avec OAR

Posté par Sytoka Modon (page perso, ) le 07/11/2009 à 08:26. (lien). Évalué à 3.

OAR est un batch scheduler développé en partie par l'INRIA. Quel est ou quel pourrait être les liens entre hwloc et oar ?

http://oar.imag.fr/

Quelques questions ?

Posté par Cédric Chevalier (page perso, ) le 09/11/2009 à 19:05. (lien). Évalué à 3.

Je ne sais pas si linuxfr est le meilleur endroit pour les poser mais comme cela peut intéresser du monde, je le fais ici.

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 ;).

Revenir en haut de page