Performances du processeur : vitesse d'horloge ou cœursLors de l'exécution de JMP, serait-il préférable d'avoir plus de cœurs à une fréquence inférieure ou vice versa ? Je pensais que très peu de plates-formes étaient filetées, ce qui m'amènerait à croire que la vitesse d'horloge est plus importante.Mais je ne suis pas sûr que ce soit toujours vrai.Je sais que je parle d'un cas général et c'est presque impossible de parler avec précision.Merci quand même.
Re : Performances du processeur : vitesse d'horloge ou cœursLa manière dont JMP utilise les processeurs disponibles dépend de la plate-forme d'analyse en cours d'exécution et des données traitées. Voici JMP exécutant Text Explorer pendant la phase d'analyse de texte, sur de longs documents, avec nombre de lignes > nombre de processeurs. (Les autres plates-formes se comporteront différemment et certaines ne pourront pas tirer parti du threading. L'analyse de Text Explorer est quelque chose avec lequel j'ai travaillé récemment.)
100% busy100% occupé
Les algorithmes de Text Explorer ne sont pas toujours capables de garder la machine occupée à 100 %. Certains travaux dépendent du fait que d'autres travaux sont terminés en premier, et certains travaux qui sont threadés sont en concurrence pour les ressources (comme l'accès à la mémoire) d'une manière qui fait attendre les threads.
dt = New Table( "bigtext",
Add Rows( 1000 ),
New Column( "text", Character, "Nominal", formula( Repeat( "aaa bbb ccc ", 1e5 ) ) )
);
dt << Text Explorer(
Text Columns( :text )
);
L'ajout de plus de processeurs a une limite ; ici, tous les processeurs 32/64 semblent occupés, mais le travail se poursuit à peu près au même rythme :
100% busy but not making progress much faster100 % occupé mais ne progresse pas beaucoup plus vite
Je soupçonne que ces processeurs se gênent mutuellement. Un Go de documents se déplaçant dans la mémoire a de nombreuses opportunités de transformer la mémoire cache des processeurs. JMP est principalement développé sur des machines dotées de 4 à 12 processeurs et c'est probablement pour cela que les algorithmes sont réglés. Par exemple, une fois que Text Explorer a terminé l'étape d'analyse, il combine les résultats d'analyse en utilisant la moitié des processeurs car nous avons déterminé que c'était plus rapide que de les utiliser tous... sur une machine à 8 processeurs.
Donc, oui, 4 à 12 processeurs, des processeurs plus rapides et suffisamment de mémoire pour éviter la pagination. Si vous n'avez pas assez de mémoire pour contenir les données sans paginer sur le disque, rien d'autre ne vous aidera.
Re : Performances du processeur : vitesse d'horloge ou cœurs@vince_faller : pour répondre à votre question initiale, ma recommandation personnelle pour optimiser une copie de JMP (sur Windows) est d'obtenir les 4 ou 6 processeurs les plus rapides possible.
@txnelson : J'aurais dû être plus clair, JMP utilise souvent une fraction de tous les cœurs, mais il ne les utilise pas tous à pleine capacité.Cela m'amène à croire que JMP s'exécute avec moins de 8 ou 12 threads de travail réels et que le traitement est déplacé d'un cœur à l'autre par le système d'exploitation.
Cette propriété de JMP me dérange, j'ai donc passé du temps à tester ma théorie selon laquelle JMP n'utilise qu'une fraction du nombre total de cœurs. Voici les résultats lors de l'exécution simultanée de 1, 2, 3 ou 4 copies du script ci-dessous chacune dans leur propre instance de JMP.
Une instance
19-21 secondes

Deux instances
26-28 secondes

Trois instances
34-39 secondes

Quatre instances
43-47 secondes

Le temps d'exécuter deux copies à la fois est certainement inférieur au temps d'en exécuter une deux fois :

Names default to here( 1);
dt = Open( "$Sample_data/probe.jmp", Private );
Random reset(1);
valcol = dt << New Column( "Validation",
Numeric, "Nominal", Set formula( Random Category( 0.75, 0, 0.25, 1, 2 ) ),
Value Labels( {0 = "Training", 1 = "Validation", 2 = "Test"} ), Use Value Labels( 1 )
);
dt << Run Formulas; valcol << Delete Formula;
timeboot = Function( {},
start = Today();
xvars = Substitute(Char((dt << Get Column Names)[8::394]), "{", "", "}", "");
Eval( Parse(
"rf = dt << Bootstrap Forest(
Y( :Process ),
X( " || xvars || " ),
Validation Portion( :Validation ),
Method( \!"Bootstrap Forest\!" ),
Portion Bootstrap( 1 ),
Number Terms( 30 ),
Number Trees( 2000 ),
Early Stopping( 0 ),
Go
);"
));
rf << Close Window;
end = Today();
return(end - start);
);
win = New window("Time Bootstrap",
V List Box(
r = text box( "", << Set Width( 100 ) ),
H List Box(
Button Box( "Start", r << Set Text( Char( timeboot() ) || " seconds" ) ),
Button Box( "Close", dt << Close Window; win << Close Window; )
)
)
);Re : Performances du processeur : vitesse d'horloge ou cœursMes conclusions sont différentes, et cela peut être dû aux plates-formes avec lesquelles j'ai testé.Lorsque j'exécute un Random Forrest, je l'exécute facilement sur tous les processeurs, sous Windows 7 et Windows 10. En moyenne, occupant plus de 35% de la capacité totale du processeur.Je n'ai que 8 processus ... pas votre merveilleux total de 12, mais tous les 8 travaillent sur le problème.
Re : Performances du processeur : vitesse d'horloge ou cœursJe n'ai pas vu une seule instance de JMP utiliser plus de 6 cœurs sur 12 sur un bureau Windows 7. Il boit généralement avec 25% d'utilisation du processeur.Re : Performances du processeur : vitesse d'horloge ou cœursVincent,
La plupart des plates-formes analytiques sont multi-thread, tandis que JSL est principalement mono-thread.C'est donc un cas mixte.Ce que je suggère, c'est d'ouvrir le Gestionnaire des tâches, puis l'onglet Performances qu'il contient.Ensuite, si vous exécutez votre flux de travail typique, vous verrez clairement quand vos applications frappent sur plusieurs cœurs et quand il s'agit d'un seul cœur.À partir de là, vous pouvez prendre votre décision.