Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

multithreading et multicoeurs

2 réponses
Avatar
Wykaaa
J'ai un Mac 8-core.
Ai-je un moyen d'assigner, en Java, des threads à des processeurs ?
La JVM Sun gère-t-elle "au mieux" ces architecture ?

2 réponses

Avatar
Adrien Grand
Salut,

Wykaaa a écrit :
Ai-je un moyen d'assigner, en Java, des threads à des processeurs ?



Java n'offre pas directement cette possibilité. Il est nécessaire
d'utiliser du code natif (via JNI) si l'on souhaite régler plus finement
l'attribution des threads aux processeurs, il y a un exemple ici (pour
Windows) :
http://1-800-magic.blogspot.com/2008/03/jni-made-simple.html
(Voir la méthode fixThread.)

Pourquoi as tu besoin d'assigner des threads à des processeurs précis
(simple curiosité) ?

La JVM Sun gère-t-elle "au mieux" ces architecture ?



Les versions récentes des JVMs de Sun utilisent des threads natifs (par
opposition aux green threads,
http://en.wikipedia.org/wiki/Green_threads) donc la responsabilité de la
gestion des threads est laissée à l'OS. Concernant la garbage collector,
il peut être intéressant de modifier certains paramètres, notamment
augmenter la taille allouée à la jeune génération car les collections
majeures ne sont pas parallélisées (cf.
http://java.sun.com/docs/hotspot/gc/, en particulier « Be sure to
increase the young generation as you increase the number of processors,
since allocation can be parallelized, but GC is not parallel. »).

--
jpountz
Avatar
Wykaaa
Adrien Grand a écrit :
Salut,

Wykaaa a écrit :
Ai-je un moyen d'assigner, en Java, des threads à des processeurs ?



Java n'offre pas directement cette possibilité. Il est nécessaire
d'utiliser du code natif (via JNI) si l'on souhaite régler plus finement
l'attribution des threads aux processeurs, il y a un exemple ici (pour
Windows) :
http://1-800-magic.blogspot.com/2008/03/jni-made-simple.html
(Voir la méthode fixThread.)

Pourquoi as tu besoin d'assigner des threads à des processeurs précis
(simple curiosité) ?

La JVM Sun gère-t-elle "au mieux" ces architecture ?



Les versions récentes des JVMs de Sun utilisent des threads natifs (par
opposition aux green threads,
http://en.wikipedia.org/wiki/Green_threads) donc la responsabilité de la
gestion des threads est laissée à l'OS. Concernant la garbage collector,
il peut être intéressant de modifier certains paramètres, notamment
augmenter la taille allouée à la jeune génération car les collections
majeures ne sont pas parallélisées (cf.
http://java.sun.com/docs/hotspot/gc/, en particulier « Be sure to
increase the young generation as you increase the number of processors,
since allocation can be parallelized, but GC is not parallel. »).



Merci pour ta réponse.

Je fais de la synthèse granulaire (audio) et, dans mon approche, à
partir du moment où j'ai déterminé le "macro processus", je sais
paralléliser beaucoup de choses. Je veux être sûr que les processeurs
sont employés au mieux car les calculs sont très longs (synthèse
additive de "grains de Gabor" de 0,025 seconde chacun).
J'ai un Mac Pro 8-cores et 10 Go de RAM.