Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    Test Cpu

    Sto' realizzando un programma in Java che grazie alla successione di Fibonacci occupa al 100% tutti i core della CPU (programmazione concorrente). La successione di Fibonacci calcola un numero intero in seguito ad un numero N inserito dall'utente occupando l'ALU della CPU, ma per quanto riguarda l'unità FPU (calcolo in virgola mobile) cosa potrei utilizzare in JAVA? Esistono delle librerie Java che eseguono dei test sul sistema hardware?

    Grazie delle risposte

    Il progetto del test lo trovate al seguente link:
    Progetto Test Cpu

  2. #2
    Utente di HTML.it L'avatar di Freax
    Registrato dal
    Jul 2006
    Messaggi
    460
    questi benchmark lasciano il tempo che trovano, come tutti i benchmark del resto, inoltre la vedo dura a dialogare con i core, al massimo dialoghi con thread logici, ma proprio estremizzando il concetto.

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,296
    Java ha una sezione dedicata.
    Sposto la discussione.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4
    Risposta a Freax:
    Per prima cosa, non si tratta di dialogare con i core, ma di far calcolare ai core logici la serie di Fibonacci. Del resto, grazie alla programmazione concorrente (se vedi il codice del programma) sono lanciati 10 thread di calcolo contemporaneamente, e da task manager si nota chiaramente che i core sono occupati al 100% (nel mio caso d'esempio sono solo quattro). Prima, dell'utilizzo della programmazione concorrente i core occupati erano soltanto 2 (non ti so spiegare perchè) ed erano occupati nella percentuale del 25 %.

    Se non ricordo male, anche test ritenuti più che validi (come SiSoft Sandra) e altri ancora che non elenco effettuano delle operazioni di calcolo....

    In quale altro modo avresti affrontato il test? Avresti adottato un altro linguaggio di programmazione?

  5. #5
    Utente di HTML.it L'avatar di Freax
    Registrato dal
    Jul 2006
    Messaggi
    460
    Originariamente inviato da Megaoverclock
    Risposta a Freax:
    Per prima cosa, non si tratta di dialogare con i core, ma di far calcolare ai core logici la serie di Fibonacci. Del resto, grazie alla programmazione concorrente (se vedi il codice del programma) sono lanciati 10 thread di calcolo contemporaneamente, e da task manager si nota chiaramente che i core sono occupati al 100% (nel mio caso d'esempio sono solo quattro). Prima, dell'utilizzo della programmazione concorrente i core occupati erano soltanto 2 (non ti so spiegare perchè) ed erano occupati nella percentuale del 25 %.

    Se non ricordo male, anche test ritenuti più che validi (come SiSoft Sandra) e altri ancora che non elenco effettuano delle operazioni di calcolo....

    In quale altro modo avresti affrontato il test? Avresti adottato un altro linguaggio di programmazione?
    guarda, non conosco esperto del mondo IT che basi un minimo di una qualsivoglia tipologia di valutazione sui benchmark, di qualsiasi tipo essi siano, non capisco come fai a giudicare una configurazione, una architettura, semplicemente facendole eseguire un programma.

    Un certo Linus Torvalds non fa mistero di ritenere idioti quelli che si affidano ai bench, semplicemente perché non esiste un software che sia capace di giudicare dell'hardware ( e del software che lo accompagna, del resto i registri della CPU sono del software, tanto per fare un esempio ).

    Possiamo stare qui a scervellarci su come far calcolare serie, frattali e sistemi particellari, ma del dato non te ne fai una bega, al massimo, se sei fortunato, il dato che ottiene sarà fuorviante.

    il paradigma di programmazione asincrona semplicemente serve per gestire meglio certe pipeline, per dare più arbitrio al sistema operativo e all'hardware, con conseguente aumento della stabilità del sistema e dell'applicazione.

    l'asincronia non nasce per sfruttare al 100% la cpu, nasce per altro.

  6. #6
    Allora, dovremmo dire che tutti i benchmark che sono in commercio o sono applicazioni GNU/Linux sono stati pensati da idioti

    Sul fatto che l'asincronia serva ad altro sono d'accordo, ma in questo contesto il dato rilevante e importante è che a parita di sistema operativo (e su questo se ne può discutere) e cpu si può tentare di ottenere un indice di comparazione.

    Allora, cerco di spiegarmi un pò meglio....

    Ho due sistemi con Windows 7 e il primo con una CPU a 2 core e il secondo con una CPU a 4 core. Le condizioni iniziali per i due sistemi sono simili (architettura CPU uguale, chipset uguali...), e il secondo esegue il Test di Fibonacci in un tempo minore del primo e così si ripete per altri sistemi hardware, tale risultati vorranno dire qualcosa oppure è soltanto frutto di qualche magia di microsoft.

    A questo punto potresti obiettare e dire che durante l'esecuzione del test potrebbero esserci altri processi che influenzano l'esecuzione del test (per es: l'antivirus) che con la loro attività occupano la CPU. Si, in questo caso si potrebbe implementare il benchmark verificando quando la cpu risulta inattiva oppure progettando un sistema base con un sistema operativo (una qualsiasi distribuzione GNU/Linux con un buon supporto hardware), il supporto a Java, il programma Test CPU e pochi altri servizi (supporto di rete) e comparare così i vari sistemi.

    Non discuto sulla pipeline visto che dovremmo parlare quindi di architetture superscalari, sistemi multi-core, multiprocessore e altro ancora.

    Bene, a te la discussione che sta diventando interessante!

  7. #7
    Utente di HTML.it L'avatar di Freax
    Registrato dal
    Jul 2006
    Messaggi
    460
    Originariamente inviato da Megaoverclock
    Allora, dovremmo dire che tutti i benchmark che sono in commercio o sono applicazioni GNU/Linux sono stati pensati da idioti
    se lo dicessi ad un buon seminario in campo IT, nessuno ti darebbe torto, anche perché spiegami come fai a confrontare 2 o più macchine diverse tra loro.

    Sul fatto che l'asincronia serva ad altro sono d'accordo, ma in questo contesto il dato rilevante e importante è che a parita di sistema operativo (e su questo se ne può discutere) e cpu si può tentare di ottenere un indice di comparazione.

    Allora, cerco di spiegarmi un pò meglio....

    Ho due sistemi con Windows 7 e il primo con una CPU a 2 core e il secondo con una CPU a 4 core. Le condizioni iniziali per i due sistemi sono simili (architettura CPU uguale, chipset uguali...), e il secondo esegue il Test di Fibonacci in un tempo minore del primo e così si ripete per altri sistemi hardware, tale risultati vorranno dire qualcosa oppure è soltanto frutto di qualche magia di microsoft.

    A questo punto potresti obiettare e dire che durante l'esecuzione del test potrebbero esserci altri processi che influenzano l'esecuzione del test (per es: l'antivirus) che con la loro attività occupano la CPU. Si, in questo caso si potrebbe implementare il benchmark verificando quando la cpu risulta inattiva oppure progettando un sistema base con un sistema operativo (una qualsiasi distribuzione GNU/Linux con un buon supporto hardware), il supporto a Java, il programma Test CPU e pochi altri servizi (supporto di rete) e comparare così i vari sistemi.

    Non discuto sulla pipeline visto che dovremmo parlare quindi di architetture superscalari, sistemi multi-core, multiprocessore e altro ancora.

    Bene, a te la discussione che sta diventando interessante!
    ma io all'antivirus neanche ci arrivo, tanto per iniziare basterebbero 2 considerazioni a romperti le uova nel paniere:
    - registri e revisioni degli stessi presenti nella CPU
    - gestione dei vari core fisici e thread logici da parte della CPU

    per dirla in termini più maccheronici, non è detto che una CPU a 4 core vada il doppio di una a 2, ne consegue anche che se ottiene il risultatl su quella da 4 core di certo non lo puoi dividere per 2 e confrontarlo con il risultato ottenuto con quella da 2.

    non si possono valutare in modo oggettivo 2 macchine diverse, è semplice utopia.

    puoi trovare la macchina più adatta alle tue esigenze, questo si, sei un matematico che fa calcoli in virgola mobile e allora ti metti con il tuo bel software e lo ricompili per tutte le macchine che ti interessano, lo fai girare, la macchina più veloce vince e ti compri quella ( ci sarebbero anche da fare considerazioni sull'aritmetica usata dalle varie CPU ma sono discorsi che neanche in un corso di laurea triennale a volte si fanno ), ma credere che il numerino che ti da il tuo software che giri su quella macchina significhi qualcosa paragonato alle prestazioni di una seconda macchina, è semplicemente falso.

    altro esempio, vai dal concessionario e ti ritrovi davanti 10 macchine diverse, che fai? fai come il matematico, non puoi fare altrimenti, decidi su cosa puntare, 1 valore, più valori, un mix, il punto è che non potendo paragonare le auto tra loro decidi per convenienza tua, cioé decidi in base ad un tuo punto di vista personale e soggettivo.
    Tu a questo punto dirai, c'è l'EuroNcap, e anche li però hanno dovuto scegliere quali test fare, e 5 stelle nell'EuroNcap possono non significare proprio nulla, mai sentito parlare del "test dell'Alce"? Eppure gli scenari che può vivere un automobilista sono forse molto meno vari di quelli che può vivere una macchina da calcolo, ma anche li non esiste nulla di oggettivo ma solo di soggettivo anche se accompagnato da considerazioni ingegneristiche.

    non dimentichiamoci inoltre il marketing e la pubblicità che fanno danni a non finire, in TV si vedono sempre manicaretti preparati dai migliori chef per sponsorizzare un prodotto in scatola che quando te lo ritrovi TU CONSUMATORE nel piatto, sembra una piramide di gelatine deforme; idem per il mondo dell'IT, il consumatore vuole il numero per fare sfoggio del suo ultimo smartphone? Gli diamo il benchmark che gli da il numerillo, qual'è il problema per chi produce il benchmark? Tanto neanche ci si accorge della presa in giro.
    Magari neanche sanno che stanno pagando un ARM più di un X86 ...

  8. #8
    Tutti probabilmente conoscono l'organizzazione interna di una CPU tipica di Von Neumann con registri/ALU/e bus e poi via fino ai moderni elaboratori, ma come ho detto prima le mie condizioni iniziali sono atte a descrimare le differenze tra i due sistemi hardware e potrebbero essere le seguenti (alcune):

    1) I due sistemi hardware oggetto di comparazione posseggono uguale architettura della CPU (con ugual numero di registri, revisioni, pipeline e così via.....)
    2) I due sistemi posseggono lo stesso quantitativo di memoria.
    3) I due sistemi posseggono gli stessi chipset.
    4) Come detto nel precedente post i due sistemi non utilizzano il sistema operativo dell'utente ma potrebbero utilizzare un sistema GNU/Linux con il programma java installato.

    A tal punto, le differenze a parità delle condizioni iniziali potrebbero essere a carico solo della ALU (unità aritmetico logica) e/o dei vari core della CPU (logici) (altro discorso per i sistemi con più processori fisici e diversi processori logici).

    Per tale motivo penso che due sistemi diversi possono essere comparati solo se raggruppati in insiemi simili di sistemi hardware.

    E aggiungo al tuo discorso del concessionaro....

    "Vai dal concessionario e ti ritrovi davanti 10 macchine diverse, che fai?"

    In questo caso non avrei scelta e il tuo discorso torna, scelgo in base alle mie preferenze.
    Però, se due di queste macchine fossero lo stesso modello (con le stesse tecnologie) ma con il motore che nella seconda macchina ha una potenza superiore (in termini di cavalli), allora potrei effettuare una comparazione tra queste due e scegliere la seconda macchina se il mio termine di misura è la velocità. Ovvio, la comparazione tra i vari gruppi è difficile e come hai detto precedentemente può essere sicuramente fuorviante.

    E questo è quello che vorrei fare........

  9. #9
    Utente di HTML.it L'avatar di Freax
    Registrato dal
    Jul 2006
    Messaggi
    460
    Originariamente inviato da Megaoverclock
    Tutti probabilmente conoscono l'organizzazione interna di una CPU tipica di Von Neumann con registri/ALU/e bus e poi via fino ai moderni elaboratori, ma come ho detto prima le mie condizioni iniziali sono atte a descrimare le differenze tra i due sistemi hardware e potrebbero essere le seguenti (alcune):

    1) I due sistemi hardware oggetto di comparazione posseggono uguale architettura della CPU (con ugual numero di registri, revisioni, pipeline e così via.....)
    2) I due sistemi posseggono lo stesso quantitativo di memoria.
    3) I due sistemi posseggono gli stessi chipset.
    4) Come detto nel precedente post i due sistemi non utilizzano il sistema operativo dell'utente ma potrebbero utilizzare un sistema GNU/Linux con il programma java installato.

    A tal punto, le differenze a parità delle condizioni iniziali potrebbero essere a carico solo della ALU (unità aritmetico logica) e/o dei vari core della CPU (logici) (altro discorso per i sistemi con più processori fisici e diversi processori logici).

    Per tale motivo penso che due sistemi diversi possono essere comparati solo se raggruppati in insiemi simili di sistemi hardware.

    E aggiungo al tuo discorso del concessionaro....

    "Vai dal concessionario e ti ritrovi davanti 10 macchine diverse, che fai?"

    In questo caso non avrei scelta e il tuo discorso torna, scelgo in base alle mie preferenze.
    Però, se due di queste macchine fossero lo stesso modello (con le stesse tecnologie) ma con il motore che nella seconda macchina ha una potenza superiore (in termini di cavalli), allora potrei effettuare una comparazione tra queste due e scegliere la seconda macchina se il mio termine di misura è la velocità. Ovvio, la comparazione tra i vari gruppi è difficile e come hai detto precedentemente può essere sicuramente fuorviante.

    E questo è quello che vorrei fare........
    ti mancano le basi sull'architettura di un calcolatore.

    dire che è applicato il modello Von Neumann, significa tutto e niente, specialmente se poi guardiamo l'implementazione, a te poi interessa direttamente il prodotto finito, quindi se proprio alla fine della fiera e parli di modelli, cioé di roba assolutamente teorica.

    se io ti dicessi, applico un modello che prevede la cucina collegata al soggiorno, e il soggiorno collegato alla camera da letto: mi sapresti dire che c'è in soggiorno?

    stai confondendo robe diverse, teoria e pratica.

    un altro paragone può essere l'ABS, l'ABS è un sistema concettualmente molto semplice, gli basta conoscere la velocità angolare delle ruote e poco altro, ma vallo ad implementare e ti ritroverai con uno dei più ostici progetti ingegneristici tra le mani.

    Ok, il tuo computer è organizzato così grazie a Von Neumann, e quindi? Che significa? Anche perché poi a dirla tutta la X86 l'ha brevettata Intel e non Von Neumann, e l'X86 è una implementazione di quel modello, e ancora non è una CPU specifica ma è una architettura, la tua CPU è ancora lontana dal realizzarsi anche conoscendo a menadito l'X86.

    Per il discorso delle macchine è certo che puoi fare la scelta, non è quella la chiave del discorso, ma quella scelta non è oggettiva, forse è questo che non riesco a farti capire, tu puoi tirare fuori i numeri che ti pare e avere i computer più simili tra loro della terra direttamente a casa tua, ma non riuscirai mai a tirare fuori un test oggettivo.

    Del resto anche i primitivi facevano scelte, non è quello che caratterizza l'oggettività e il rigore scientifico.

  10. #10
    Be', dire che i benchmark siano completamente inutili è un po' eccessivo, benchmark specifici diversi possono evidenziare abilità particolari della macchina (calcolo sugli interi "grezzo", calcoli in virgola mobile, velocità di accesso alla RAM, bontà del branch predictor, velocità ed efficacia della cache, eccetera).
    D'altra parte per le macchine "general purpose" come sono i PC domestici è molto difficile dire quali benchmark siano più rilevanti, proprio per il fatto che vengono usati per tanti scopi diversi, per cui magari in un alcuni casi si va di potenza di calcolo bruta (soprattutto nell'encoding video o in applicazioni di cifratura), mentre in molti altri casi il collo di bottiglia è l'IO (e il problema sta più spesso nei dischi che nel processore o nei bridge). Insomma, a mio avviso i benchmark di quel genere per PC "normali" hanno senso solo se si vogliono confrontare componenti a parità di prezzo e uno spicca in maniera sensibile rispetto all'altro, per il resto in genere non fa differenza.
    D'altra parte se si sta mettendo in piedi un PC per uno scopo specifico (giocare, compilare, fare encoding, fare rendering, ...) secondo me hanno sicuramente senso benchmark effettuati misurando valori relativi ai lavori reali che dovranno svolgere (FPS di una serie di giochi, tempo necessario per compilare un grosso progetto, per codificare diversi video con i codec che si conta di utilizzare, per effettuare rendering di modelli complessi, ...)
    Amaro C++, il gusto pieno dell'undefined behavior.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.