Je suis en train d'implémenter un programme qui normalise un grand ensemble de données (un seul fichier), c'est un calcul mathématique intensif et donc limité par le CPU.
Après avoir consulté certaines des questions des fils optimaux, la plupart d'entre elles aboutissent à ceci :
Runtime.getRuntime().availableProcessors()
Mais avec la technologie HT, un seul cœur peut gérer deux threads simultanément.
Certaines des réponses précédentes indiquent également que le nombre optimal de threads = nombre de cœurs Je ne suis pas sûr que cela soit correct pour les tâches limitées par le CPU.
Sachant que chaque système d'exploitation peut exécuter la programmation parallèle différemment, dois-je utiliser uniquement le logiciel availableProcessors()
sans avoir à prendre en compte des éléments tels que
- Thread(s) par cœur
- cœur(s) par socket
- Socle(s) de l'unité centrale
Par exemple, dois-je utiliser availableProcessors()
* Thread(s) par cœur pour obtenir des fils optimaux ? Cela crée-t-il une concurrence entre les fils ?
Je cherche la pratique recommandée pour y parvenir, sans avoir à modifier et reconstruire le programme lorsque celui-ci est transféré sur l'autre machine (le programme n'est testé que sur une machine locale).
Merci d'avance.