DOMANDA Usare tutto il processore

Peri

Nuovo Utente
82
3
Salve
Ho voluto testare la potenza del mio nuovo pc facendo girare vari programmi dall'elevato costo computazionale scritti in C++ (principalmente programmini che calcolano successioni di numeri).
Ho notato che l'uso del processore non superava la soglia del 25% e piano piano terminava i programmi che avviavo ai test.
Inizialmente pensavo: vabbè il resto dei conti sono riservati per tenere acceso il pc, ma poi mi sono ricordato che usava tutto il processore (o almeno indica 100%) quando analizzavo con stockfish 14 una partita di scacchi.
Quindi mi chiedo. È una roba che dipende dall'algoritmo o ci sono comandi che dicono al sistema operativo di usare tutta la CPU?
 

BrutPitt

Utente Attivo
1,166
1,262
Quando esegui un programma esso viene lanciato come singolo processo e a meno che non sia stato predisposto a utilizzare piu' processi o threads, rimarra' relegato ad utilizzare il 100% di quel processo, che viene eseguito sul SINGOLO core/thread del tuo processore multicore.

Per poter utilizzare tutta la potenza di calcolo, ossia tutti i cores, devi strutturare il programma affinche' opssa utilizzare piu' cores, e cio' non avviene in automatico: devi esser tu (o chi lo ha sviluppato) a predisporlo in tal senso.

Dai un'occhiata alla classe thread della STL (da C++ 11), oppure puoi appoggiarti a delle API esterne (come OpenMP o TBB) per poter eseguire dei loop in parallelo (e non solo)
 
Ultima modifica:

Andretti60

Utente Èlite
6,440
5,091
In aggiunta al commento di @BrutPitt che condivido, aggiungo che l’unica maniera per “forzare” un uso intensivo della CPU è di scrivere il nucleo della elaborazione in una funzione contenente un ciclo molto stretto che NON faccia nessuna chiamata specialmente di sistema, tutto deve risiedere in memoria, quindi fare anche attenzione di usare solo la memoria a disposizione. Ovviamente parliamo di linguaggio C, e se usi Windows solo “unmanaged code”
 
  • Mi piace
Reazioni: Peri

fededevi

Utente Attivo
37
4
Aggiungerei anche che nelle CPU moderne non è così facile utilizzare davvero al 100% la CPU.

Per farlo dovresti creare un carico molto specifico per l'architettura che sfrutti in maniera più parallela possibile tutte le componenti di ogni core.

Magari nel "task mangager" vedi 100% perché la cpu è a tutti gli effetti occupata a fare qualcosa ma non significa che la CPU stia lavorando al 100% delle sue capacità.
 
  • Mi piace
Reazioni: Peri

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!