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 plus basse ou vice versa ? Je pensais que très peu de plates-formes étaient threadées, ce qui me ferait 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 qu'il est presque impossible d'en 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 plateforme d'analyse exécutée et des données traitées. Voici JMP exécutant Text Explorer pendant la phase d'analyse de texte, sur des documents longs, avec nombre de lignes > nombre de processeurs. (D'autres plateformes se comporteront différemment et certaines ne pourront pas profiter du threading. L'analyse de Text Explorer est quelque chose avec lequel j'ai travaillé récemment.)
100% busy100% busy100% occupé
Les algorithmes de Text Explorer ne sont pas toujours capables de maintenir la machine occupée à 100 %. Certains travaux dépendent de l'achèvement d'autres travaux en premier, et certains travaux 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 processeurs supplémentaires a une limite ; ici, tous les processeurs 32/64 semblent occupés mais le travail se déroule à peu près au même rythme :
100% busy but not making progress much faster100% 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 circulant dans la mémoire a de nombreuses chances de perturber la mémoire cache des processeurs. La plupart du temps, JMP est développé sur des machines équipées de 4 à 12 processeurs et c'est probablement pour cela que les algorithmes sont optimisés. Par exemple, une fois que Text Explorer a terminé l'étape d'analyse, il combine les résultats de l'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 ne disposez pas de suffisamment de mémoire pour conserver les données sans les transférer 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 (sous Windows) est d'obtenir les 4 ou 6 processeurs les plus rapides possibles.
@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 me porte à croire que JMP fonctionne avec moins de 8 ou 12 threads de travail réels et que le traitement est déplacé de cœur en cœur 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 total des cœurs. Voici les résultats de l'exécution simultanée de 1, 2, 3 ou 4 copies du script ci-dessous, chacune dans sa propre instance de JMP.
Une instance
19-21 secondes

Deux cas
26-28 secondes

Trois cas
34-39 secondes

Quatre instances
43-47 secondes

Le temps nécessaire pour exécuter deux copies à la fois est certainement inférieur au temps nécessaire pour 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, cela occupe 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. Cela correspond généralement à une utilisation de 25 % du processeur.Re : Performances du processeur : vitesse d'horloge ou cœursVince,
La plupart des plates-formes analytiques sont multithread, tandis que JSL est principalement monothread.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 touchent plusieurs cœurs et quand elles sont monocœurs.À partir de là, vous pourrez prendre votre décision.