Bonjour,
depuis un certains temps je suis amené à paralléliser mes programmes, ce que j'arrive à faire, mais c'est un peu de la pratique bête car je ne comprends pas toujours ce que je fais, aussi, j'aimerais bien un éclaircissement à ce sujet.
Tout d'abord, en C, il existe la bibliothèques pthread , permettant de créer des threads qui sont des processus légers.
Ce que je remarque lorsque j'exécute mes programmes avec cette librairie, c'est que je peux créer autant de thread que je veux. (Tout comme je peux faire autant de process avec des fork).
Oui, mais voilà ! Lorsque je vais dans les propriétés de ma machine, je m’aperçois que j'ai 2 cœurs. De mon point de vue il est donc impossible de créer plus de 2 threads.
D'ailleurs, récemment, j'ai commencé à utiliser la lib Open MP permettant également de paralléliser ces programmes. Hors, cette lib optimise de base le nombre de thread en se calquant sur le nombre de cœurs; et il n'est pas possible de créer plus.
Je ne comprends donc pas pourquoi selon la méthode Open MP je suis limité au nombre de cœurs, et pourquoi selon la méthode phthread / fork je ne suis pas limité.
Est-ce qu'il s'agit de la différence entre multi-thread et multi-proc ?
Enfin bref vous l'aurez compris j'aurai bien besoin de mettre plusieurs choses au clair ici, parce que j'aimerais bien comprendre ce que je fais et ne pas le faire bêtement.
Partager