[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [linux] Vectorisation de code C++



gcc ne peut pas le faire pour toi, comment va-t-il savoir quel code il peut séparer en deux applis indépendantes ?
Oui et non. Les compilateurs font certaines optimisations du code, mais de là
à savoir si cela permet que le parallélisme (jamais entendu "vectorisation",
tu es Français, je suppose ;-)) soit atteint...

C'est à toi de faire ce genre de travail, regarde tout ce qui thread, ça me parait un bon début mais je m'arrète là, je ne connais pas assez la programmation pour m'étendre sur le sujet.
Effectivement, une possibilité est d'utiliser des threads pour que les calculs
sont effectués en parallèle. Sur un système SMP, les threads seront normalement
répartis sur les différents CPUs, du moins si ça en vaut la peine. Linux (le
scheduler, plus précisément) s'occupe de la gestion des CPUs et tu n'as d'ailleurs
aucun moyen de l'influencer (mais on peut lui faire confiance ;-)).

...
J'aimerais vectoriser un code C++, c'est à dire le compiler
pour que mon programme exécute ses calculs en utilisant les
_deux_ processeurs.
En principe, il n'y a aucun moyen d'influencer cela.
En utilisant des threads, tu peux suggérer au kernel de le faire, mais le
forcer, c'est impossible (sous Linux, du moins).

1. Quelle est la commande à passer à g++ pour qu'il compile
le programme pour deux processeurs ?
Aucun ;-)
Tu peux tjs utiliser une optimisation aggressive, du genre -03

De toute manière, le scheduler dans le kernel s'occupe très bien de cela.
Il est douteux que tu obtiennes une meilleure performance en forçant le kernel
à faire certaines choses. Il y a plein d'autres paramètres qui entrent en
compte, pas seulement les calculs: I/Os disques, swapping/gestion mémoire,
les autres processus, etc...

Tu pourrais tout au plus donner une priorité plus élevée à ton processus
(cf. nice), afin d'indiquer au scheduler de lui donner plus de temps CPU qu'aux
autres (mais attention à ne pas exagérer: certains processus sont très importants
pour le système et doivent aussi recevoir la main).

Tu utilises un kernel 2.4 ? Il est nettement plus optimisé pour le SMP que le 2.2
(resource-locking bcp plus fin).

--
  -o) Pascal Bleser   ATOS Origin/Aachen(DE) |
  /\\         <pascal.bleser@atosorigin.com> |
 _\_v <guru@linuxbe.org>                     |
---------------------------------------------|
Jesus saves,Buddha makes incremental backups :
---------------------------------------------'


_______________________________________________
Linux Mailing List
LCP - 11 Mai - http://www.unixtech.be/lcp.php
Archives: http://www.unixtech.be/mailman/listinfo/linux