J'essaie de comprendre ce qui se passe réellement lorsque vous voulez utiliser plus d'un noyau dans Haskell. This donne une bonne introduction, mais à mon humble avis n'est pas très critique et laisse de nombreuses questions ouvertes.Haskell et Multicore, qu'est-ce qui se passe vraiment
Lorsque j'utilise le combinateur par ou forkIO dans mon code et que je le compile avec l'indicateur -fileaded, que décide finalement si je reçois un thread OS ou non? Est-ce le compilateur ou l'OS?
Si j'utilise forkOS qui devrait toujours créer un thread OS, cela me libère-t-il des capacités du système d'exploitation sous-jacent?
Pour clarifier ma question: je suppose que dans un monde multicœur, le système d'exploitation sous-jacent/installé a des limitations en ce qui concerne le nombre de cœurs qu'il peut comprendre et utiliser. Est-ce que tout ce que je fais dans Haskell est tronqué par les capacités de l'OS? Ou, y a-t-il des moyens (quels sont-ils?) D'être meilleurs que le système d'exploitation dans un sens que si un hôte a 12 cœurs et les maîtres d'OS 8, puis-je pousser plus loin en écrivant une application intelligente dans Haskell? tout ce que je cours sur cet hôte avec cet OS soit limité à l'utilisation intelligente de 8 cœurs?
Si le système d'exploitation dit que vous avez pas plus de huit cœurs, vous effectivement pas plus:
Vous devriez probablement lire les articles liés à la concurrence d'accès-Haskell à partir d'ici huit cœurs. –
@Daniel Fischer Le système d'exploitation me dit quels que soient les cœurs, cela ne signifie pas nécessairement qu'il peut les comprendre/les utiliser tous, n'est-ce pas? –
Pas nécessairement, c'est vrai. Mais à moins de courir sur du métal nu, les limites de l'OS sont des limites pour vous. Jusqu'à présent, je n'ai pas entendu parler d'une implémentation Haskell fonctionnant sur du métal nu. Heureusement, un système d'exploitation moderne peut donner un sens à tous les cœurs que vous êtes susceptible d'avoir dans un proche avenir. –