|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#21 |
|
Senior Member
Iscritto dal: Sep 2004
Città: Interamnia Urbs
Messaggi: 2125
|
Scusa ma non capisco che significa mandare la CPU al 100%. In generale un programma di benchmark deve fissare uno scopo. Tipo: calcolo dei numeri fino ad una certa cifra, etc...
Trovati una serie di problemi ed implementa l'algoritmo per risolverlo e vedi quanto ci mettono.
__________________
Un wormhole (buco di tarlo, in italiano), detto anche Ponte di Einstein-Rosen, è una ipotetica caratteristica topologica dello spaziotempo che è essenzialmente una "scorciatoia" da un punto dell'universo a un altro, che permetterebbe di viaggiare tra di essi più velocemente di quanto impiegherebbe la luce a percorrere la distanza attraverso lo spazio normale. Go to a Wormhole |
|
|
|
|
|
#22 | |
|
Senior Member
Iscritto dal: Jan 2010
Città: (MB)
Messaggi: 11971
|
Quote:
ecco volevo fare una cosa simile, per quanto riguarda problemi vari, ho già implementato tutto.
__________________
CPU: Ryzen 3700x DISSY: CM HYPER EVO 212 RAM: 16gb DDR4 3000Mhz MOBO: MSI b350 tomahawk VGA: MSI Ventus 2X 4060TI 16GB ALI: Cooler Master V550 SSD: Samsung 970 Evo Plus Trattive+:(a) topolino2808(x2), galfum, giap959, sm_morgan, Biduzzo, huangwei, maxmax80, bubbi, dinamite2, PaxNoctis;(v) rubrie, CubeDs, Slater91, Juvanni, FireFox152, gluvocio, giulio81, emahwupgrade, Velvet, semmy83, giocher03 |
|
|
|
|
|
|
#23 |
|
Senior Member
Iscritto dal: Sep 2007
Messaggi: 329
|
E' sufficiente un:
white(1); per mandare in palla un core del processore. Se vuoi caricarli tutti: Codice:
#include <stdio.h>
#include <windows.h>
#define NCORE 4
int vai(void *) {
while(1);
}
int main(int argc, char *argv[]) {
for(int n = 0; n < NCORE; ++n)
CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)vai, (LPVOID)0, 0, NULL);
getch();
}
__________________
Canon EOS 5D3 | 16-35 f/4 L IS | 24-105 f/4 L IS | 70-200 f/4 L IS | 14 f/2.8 | 24 f/1.4 L | 35 f/1.4 | 135 f/2.0 L | Canon 430EX |
|
|
|
|
|
#24 | |
|
Senior Member
Iscritto dal: Sep 2004
Città: Interamnia Urbs
Messaggi: 2125
|
Quote:
wPrime is a leading multithreaded benchmark for x86 processors that tests your processor performance by calculating square roots with a recursive call of Newton's method for estimating functions Che non è "mandare la CPU al 100%". In questo thread chi più chi meno ti ha consigliato un ciclo infinito, no? Ammesso che ce la mandi con un while(1), che hai risolto? Che hai dimostrato sul processore che stai usando?
__________________
Un wormhole (buco di tarlo, in italiano), detto anche Ponte di Einstein-Rosen, è una ipotetica caratteristica topologica dello spaziotempo che è essenzialmente una "scorciatoia" da un punto dell'universo a un altro, che permetterebbe di viaggiare tra di essi più velocemente di quanto impiegherebbe la luce a percorrere la distanza attraverso lo spazio normale. Go to a Wormhole |
|
|
|
|
|
|
#25 | |
|
Senior Member
Iscritto dal: Jan 2010
Città: (MB)
Messaggi: 11971
|
Quote:
__________________
CPU: Ryzen 3700x DISSY: CM HYPER EVO 212 RAM: 16gb DDR4 3000Mhz MOBO: MSI b350 tomahawk VGA: MSI Ventus 2X 4060TI 16GB ALI: Cooler Master V550 SSD: Samsung 970 Evo Plus Trattive+:(a) topolino2808(x2), galfum, giap959, sm_morgan, Biduzzo, huangwei, maxmax80, bubbi, dinamite2, PaxNoctis;(v) rubrie, CubeDs, Slater91, Juvanni, FireFox152, gluvocio, giulio81, emahwupgrade, Velvet, semmy83, giocher03 |
|
|
|
|
|
|
#26 | |
|
Senior Member
Iscritto dal: Jan 2010
Città: (MB)
Messaggi: 11971
|
Quote:
__________________
CPU: Ryzen 3700x DISSY: CM HYPER EVO 212 RAM: 16gb DDR4 3000Mhz MOBO: MSI b350 tomahawk VGA: MSI Ventus 2X 4060TI 16GB ALI: Cooler Master V550 SSD: Samsung 970 Evo Plus Trattive+:(a) topolino2808(x2), galfum, giap959, sm_morgan, Biduzzo, huangwei, maxmax80, bubbi, dinamite2, PaxNoctis;(v) rubrie, CubeDs, Slater91, Juvanni, FireFox152, gluvocio, giulio81, emahwupgrade, Velvet, semmy83, giocher03 |
|
|
|
|
|
|
#27 |
|
Senior Member
Iscritto dal: Mar 2007
Città: Milano Beach
Messaggi: 1696
|
A questo punto devi pensare ad un problema che comporti un uso massiccio di CPU.
Erano stati proposti calcoli su matrici o ordinamenti; altrimenti il solito calcolo del pi o dei numeri primi.
__________________
~ Cthulhu: MacBookPro 13.3" ~ Azathoth: D510MO |
|
|
|
|
|
#28 | |
|
Senior Member
Iscritto dal: Dec 2005
Città: Istanbul
Messaggi: 1817
|
Quote:
In teoria qualsiasi algoritmo che usi solo la cpu va bene. Se la cpu non va al 100% vuol dire che effettui qualche altra operazione che non fa uso della cpu. Questo potrebbe essere lettura/scrittura su disco, usare una notevole quantita' di memoria che causa swap, comunicazione di rete, altro ancora. Oppure semplicemente fai dei test che durano troppo poco... pero' a questo punto senza capire cosa fa il tuo codice che non ti funziona, dare ulteriori suggerimenti e' difficile.
__________________
One of the conclusions that we reached was that the "object" need not be a primitive notion in a programming language; one can build objects and their behaviour from little more than assignable value cells and good old lambda expressions. —Guy Steele |
|
|
|
|
|
|
#29 |
|
Senior Member
Iscritto dal: Sep 2007
Messaggi: 329
|
Certo, io ho banalizzato il tutto per farti vedere come caricare al 100% il processore partendo da una funzione. Dato che, senza multithreading, se hai più di un processore logico il carico del 100% non lo avrai mai.
Aggiungici qualcosa del tipo: Codice:
int calcola(void *) {
/* ciclo con calcoli a tua discrezione */
}
int main(int argc, char *argv[]) {
HANDLE *h = new HANDLE[200];
unsigned tempo;
tempo = GetTickCount();
for(int n = 0; n < 200; ++n)
h[n] = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)calcola, (LPVOID)0, 0, NULL);
WaitForMultipleObjects(200, h, TRUE, INFINITE);
printf("\nSono passati %ums", GetTickCount() - tempo);
}
Dipende se vuoi un test che carichi solo il processore o un mix tra cpu e ram. SuperPI utilizza uno sviluppo in serie per calcolare pi greco, ma puoi partire da qualcosa di più banale calcolando il rapporto tra l'area di un quadrato di raggio X (Q = X²) e quella del cerchi di raggio X/2 (C = PI * X² / 4). Da cui ricavi PI come 4 * C / Q. L'area del cerchio è data dalla somma dei punti che distano meno di R dal cerntro, considerando il centro nel mezzo: Codice:
int calcola(void *) {
double y, x, Q, C = 0.0f, epsilon = .00001f;
for(y = -1.0f; y < 1.0f; y += epsilon) {
for(x = -1.0f; x < 1.0f; x += epsilon) {
if ((x * x) + (y * y) < 1.0f) C += epsilon * epsilon;
}
}
Q = 4.0f;
/* printf("\nPI=%.6f", C / Q * 4.0f); */
}
Sotto Windows: Codice:
SYSTEM_INFO si;
GetSystemInfo(&si);
printf("\nCi sono %u processori", si.dwNumberOfProcessors);
__________________
Canon EOS 5D3 | 16-35 f/4 L IS | 24-105 f/4 L IS | 70-200 f/4 L IS | 14 f/2.8 | 24 f/1.4 L | 35 f/1.4 | 135 f/2.0 L | Canon 430EX Ultima modifica di Mirkolo : 25-10-2011 alle 00:29. |
|
|
|
|
|
#30 |
|
Senior Member
Iscritto dal: Sep 2004
Città: Interamnia Urbs
Messaggi: 2125
|
Mirkolo ho una domanda:
Codice:
if ((x * x) + (y * y) < 1.0f)
__________________
Un wormhole (buco di tarlo, in italiano), detto anche Ponte di Einstein-Rosen, è una ipotetica caratteristica topologica dello spaziotempo che è essenzialmente una "scorciatoia" da un punto dell'universo a un altro, che permetterebbe di viaggiare tra di essi più velocemente di quanto impiegherebbe la luce a percorrere la distanza attraverso lo spazio normale. Go to a Wormhole |
|
|
|
|
|
#31 | |
|
Senior Member
Iscritto dal: Jan 2010
Città: (MB)
Messaggi: 11971
|
Quote:
guarda questo è un esempio STUPIDO: Codice:
#include <stdio.h>
#include <time.h>
#include <math.h>
int main(int argc,char **argv)
{
long int i,a;
const unsigned long int num=6000000000000000000000000000;
clock_t start_clock=clock();
printf("Calcolo secondi che impiega la vostra cpu a completare le operazioni \n");
for(i=0;i<num;i++)
a=(num*num*num*num*num*num*num*num*num*num);
double sqrt(a);
printf("Processor time used : %g sec.\n",(clock() - start_clock)/(double) CLOCKS_PER_SEC);
system("PAUSE");
return 0;
}
__________________
CPU: Ryzen 3700x DISSY: CM HYPER EVO 212 RAM: 16gb DDR4 3000Mhz MOBO: MSI b350 tomahawk VGA: MSI Ventus 2X 4060TI 16GB ALI: Cooler Master V550 SSD: Samsung 970 Evo Plus Trattive+:(a) topolino2808(x2), galfum, giap959, sm_morgan, Biduzzo, huangwei, maxmax80, bubbi, dinamite2, PaxNoctis;(v) rubrie, CubeDs, Slater91, Juvanni, FireFox152, gluvocio, giulio81, emahwupgrade, Velvet, semmy83, giocher03 |
|
|
|
|
|
|
#32 | |
|
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Se non ricordo male, il range per gli unsigned long int va da 0 a ULONG_MAX. ULONG_MAX è definita in limits.h, mi pare. Forse sfori il range.
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
|
|
|
|
|
#33 |
|
Senior Member
Iscritto dal: Jan 2010
Città: (MB)
Messaggi: 11971
|
Sisi lo si grazie, non era qui in cerca di una soluzione per quella cavolata di programma, più che altro vorrei capire come creare thread per caricare la cpu!
__________________
CPU: Ryzen 3700x DISSY: CM HYPER EVO 212 RAM: 16gb DDR4 3000Mhz MOBO: MSI b350 tomahawk VGA: MSI Ventus 2X 4060TI 16GB ALI: Cooler Master V550 SSD: Samsung 970 Evo Plus Trattive+:(a) topolino2808(x2), galfum, giap959, sm_morgan, Biduzzo, huangwei, maxmax80, bubbi, dinamite2, PaxNoctis;(v) rubrie, CubeDs, Slater91, Juvanni, FireFox152, gluvocio, giulio81, emahwupgrade, Velvet, semmy83, giocher03 |
|
|
|
|
|
#34 |
|
Senior Member
Iscritto dal: Nov 2004
Città: Padova
Messaggi: 2342
|
Mi sa che finchè sei in un sistema operativo "moderno" non riesci a caricare al 100% la cpu (o un core) con solo un tuo programma.
Principalmente per il fatto che l'OS si riserva sempre un tempo di Cpu per il modulo del kernel che si occupa dell'assegnazione della cpu ai processi. Mettendo il processo con priorità real time ottieni la massima priorità, ma non il massimo uso di cpu altrimenti il sistema potrebbe "perdere il controllo" sulla cpu. Inoltre è anche vero che non tutte le istruzioni occupano solo il processore, un accesso a memoria (anche una semplice assegnazione) comporta l'accesso alla cache della cpu o alla memoria. Poi dipende da cosa vuoi testare anche della cpu: l'alu, la cache di primo livello, di secondo... Per fare un lavoro preciso dovresti usare un linguaggio macchina come l'assembly così da dire per filo e per segno alla cpu che calcoli deve fare. L'assembly lo puoi facilmente embeddare in un programma scritto in C quindi a parte capire il significato di qualche comando non c'e' molto altro da fare, anche se diventa meno portabile rispetto a un programma scritto in C. In ogni caso anche se la cpu lavora al 99% penso che sia sufficiente, di fatto i benchmark che ci sono in giro lavorano con questo presupposto. Da ciò deriva anche il fatto che lo stesso benchmark può fornire punteggi lievemente diversi ogni volta che lo fai in base a quali altri processi sono in esecuzione.
__________________
CPU Ryzen 2600 @ 3,95Ghz + Bequiet Dark Rock TF / MB Asus X470-F Gaming / RAM 2x8GB DDR4 G.Skill FlareX 3200 CL14 / VGA Sapphire RX 7900 XT Nitro+ @ 3200Mhz / SSD Samsung 970 Pro 512GB + Sandisk 240GB Plus + Sandisk 960GB Ultra II PSU Seasonic Platinum P-660 / Headset Kingston HyperX Flight |
|
|
|
|
|
#35 | |
|
Moderatore
Iscritto dal: Nov 2006
Messaggi: 21833
|
Quote:
__________________
"WS" (p280,cx750m,4790k+212evo,z97pro,4x8GB ddr3 1600c11,GTX760-DC2OC,MZ-7TE500, WD20EFRX) Desktop (three hundred,650gq,3800x+nh-u14s ,x570 arous elite,2x16GB ddr4 3200c16, rx5600xt pulse P5 1TB)+NB: Lenovo p53 i7-9750H,64GB DDR4,2x1TB SSD, T1000 |
|
|
|
|
|
|
#36 |
|
Senior Member
Iscritto dal: Sep 2005
Messaggi: 1400
|
per quanto mi riguarda stai sbagliando approccio, capisco che è una cosa amatoriale, ma non cavi un ragno dal buco senza un minimo di approfondimento tecnico e teorico.
già dopo aver visto questo è meglio che ti dica: leva mano. ti hanno già detto che hai sbagliato, se insisti senza un minimo di teoria stai sbagliando strada. Codice:
const unsigned long int num=6000000000000000000000000000; Codice:
a=(num*num*num*num*num*num*num*num*num*num); non prendertela a male, ma voglio solo farti caprie dove sbagli. |
|
|
|
|
|
#37 | |||
|
Senior Member
Iscritto dal: Jan 2010
Città: (MB)
Messaggi: 11971
|
Quote:
Quote:
Quote:
__________________
CPU: Ryzen 3700x DISSY: CM HYPER EVO 212 RAM: 16gb DDR4 3000Mhz MOBO: MSI b350 tomahawk VGA: MSI Ventus 2X 4060TI 16GB ALI: Cooler Master V550 SSD: Samsung 970 Evo Plus Trattive+:(a) topolino2808(x2), galfum, giap959, sm_morgan, Biduzzo, huangwei, maxmax80, bubbi, dinamite2, PaxNoctis;(v) rubrie, CubeDs, Slater91, Juvanni, FireFox152, gluvocio, giulio81, emahwupgrade, Velvet, semmy83, giocher03 |
|||
|
|
|
|
|
#38 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
E' praticamente impossibile utilizzare tutta la CPU per ogni ciclo di clock, se è questo che vorresti ottenere: per un motivo o per un altro ci saranno delle sezioni e/o unità (di esecuzione) non utilizzate.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#39 |
|
Senior Member
Iscritto dal: Jan 2010
Città: (MB)
Messaggi: 11971
|
e i programmi di bench come fanno ad ottenere ciò??
__________________
CPU: Ryzen 3700x DISSY: CM HYPER EVO 212 RAM: 16gb DDR4 3000Mhz MOBO: MSI b350 tomahawk VGA: MSI Ventus 2X 4060TI 16GB ALI: Cooler Master V550 SSD: Samsung 970 Evo Plus Trattive+:(a) topolino2808(x2), galfum, giap959, sm_morgan, Biduzzo, huangwei, maxmax80, bubbi, dinamite2, PaxNoctis;(v) rubrie, CubeDs, Slater91, Juvanni, FireFox152, gluvocio, giulio81, emahwupgrade, Velvet, semmy83, giocher03 |
|
|
|
|
|
#40 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
A ottenere cosa? Come ho già detto, è praticamente impossibile farlo.
Se hai conoscenze di architetture degli elaboratori, prenditi lo schema interno di una CPU, conta tutte le sezioni che ci sono, le unità di esecuzione, e cerca di immaginare un mix di istruzioni che potrebbe impegnarle tutte. Girala quanto vuoi, vedrai che, a conti fatti, qualcuna rimarrà sempre a girarsi i pollici.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 21:27.




















