Prestazioni della CPU: velocità di clock o coreQuando si esegue JMP, sarebbe meglio avere più core a frequenza più bassa o viceversa? Pensavo che pochissime piattaforme fossero dotate di thread, quindi questo mi avrebbe portato a credere che la velocità di clock sia più importante. Ma non sono sicuro che questo sia ancora vero. So che sto parlando di un caso generale ed è quasi impossibile parlarne con precisione. Grazie comunque.
Ri: Prestazioni della CPU: velocità di clock o coreL'efficacia con cui JMP utilizza i processori disponibili dipende dalla piattaforma di analisi in esecuzione e dai dati elaborati. Ecco JMP che esegue Text Explorer durante la fase di analisi del testo, su documenti lunghi, con numero di righe > numero di processori. (Altre piattaforme si comporteranno diversamente e alcune non saranno in grado di sfruttare il threading. L'analisi di Text Explorer è qualcosa con cui ho lavorato di recente.)
100% busy100% occupato
Gli algoritmi di Text Explorer non sono sempre in grado di mantenere la macchina occupata al 100%. Alcuni lavori dipendono dal fatto che altri lavori vengano completati prima e alcuni lavori sottoposti a thread competono per le risorse (come l'accesso alla memoria) in un modo che fa attendere i thread.
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'aggiunta di più CPU ha un limite; qui tutte le CPU 32/64 sembrano occupate ma il lavoro procede più o meno alla stessa velocità:
100% busy but not making progress much fasterOccupato al 100% ma non sto facendo progressi molto più velocemente
Sospetto che queste CPU si intralcino a vicenda. Un GB di documenti che si spostano nella memoria ha molte opportunità di agitare la memoria cache nelle CPU. Per lo più JMP è sviluppato su macchine con da 4 a 12 CPU ed è probabile che sia ciò per cui sono ottimizzati gli algoritmi. Ad esempio, dopo che Text Explorer ha terminato la fase di analisi, combina i risultati dell'analisi utilizzando metà dei processori perché abbiamo stabilito che era più veloce rispetto all'utilizzo di tutti loro... su un computer con 8 CPU.
Quindi sì, 4-12 CPU, CPU più veloci e memoria sufficiente per evitare il paging. Se non disponi di memoria sufficiente per contenere i dati senza effettuare il paging su disco, nient'altro sarà d'aiuto.
Ri: Prestazioni della CPU: velocità di clock o core@vince_faller : per rispondere alla tua domanda originale, la mia raccomandazione personale per ottimizzare una copia di JMP (su Windows) è di ottenere i 4 o 6 processori più veloci possibili.
@txnelson : avrei dovuto essere più chiaro, JMP spesso utilizza una frazione di tutti i core, ma non li utilizza tutti al massimo della capacità. Ciò mi porta a credere che JMP funzioni con meno di 8 o 12 thread "lavoratori" effettivi e che l'elaborazione venga spostata da un core all'altro dal sistema operativo.
Questa proprietà di JMP mi dà fastidio, quindi ho passato un po' di tempo a testare la mia teoria secondo cui JMP utilizza solo una frazione dei core totali. Di seguito sono riportati i risultati quando si eseguono contemporaneamente 1, 2, 3 o 4 copie dello script riportato di seguito, ciascuna nella propria istanza di JMP.
Una istanza
19-21 secondi

Due istanze
26-28 secondi

Tre istanze
34-39 secondi

Quattro istanze
43-47 secondi

Il tempo per eseguire due copie contemporaneamente è sicuramente inferiore al tempo per eseguirne una due volte:

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; )
)
)
);Ri: Prestazioni della CPU: velocità di clock o coreI miei risultati sono diversi e potrebbe essere dovuto alle piattaforme con cui ho testato. Quando eseguo un Random Forrest, lo eseguo facilmente su tutte le CPU, sia su Windows 7 che su Windows 10. In media, occupa il 35%+ della capacità totale della CPU. Ho solo 8 processi....non il meraviglioso totale di 12, ma tutti e 8 stanno lavorando al problema.
Ri: Prestazioni della CPU: velocità di clock o coreNon ho riscontrato che una singola istanza di JMP utilizzi più di 6 core su 12 su un desktop Windows 7. Di solito si blocca insieme al 25% di utilizzo del processore.Ri: Prestazioni della CPU: velocità di clock o coreVinci,
La maggior parte delle piattaforme analitiche sono multi-thread, mentre JSL è per lo più a thread singolo. Quindi è un caso misto. Quello che suggerisco è di aprire il Task Manager e quindi la scheda Prestazioni al suo interno. Quindi, se esegui il flusso di lavoro tipico, vedrai chiaramente quando le tue applicazioni colpiscono più core e quando sono single core. Da lì puoi prendere la tua decisione.