|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Member
Iscritto dal: Mar 2009
Messaggi: 38
|
Configurazione desktop pc per "ricerca" (budget limitato)
Ciao a tutti,
il mio responsabile vorrebbe acquistarmi una macchina per lavorore, mi ha dato carta bianca ma non ha fissato un budget preciso, diciamo che volevo proporre due preventivi, uno sui 600 euro, l'altro sugli 800. Vi spiego le caratteristiche di cui avrei bisogno e l'abbozzo di macchine che avevo in mente (ho pensato ad un assemblato perché ho esigenze molto diverse per le varie parti, mentre quelli "di marca" hanno tutte configurazioni omogenee, cioè non si trovano pc con processori molto performanti e scheda video integrata, per capirci, la customizzazione è piuttosto inutile per me). Indico TOP/BASE come alternativa per i due preventivi direttamente sulla stessa riga: - computer desktop - non ho particolari vincoli di dimensioni per il case, wattaggio quanto serve per le componenti, avete in mente qualcosa in particolare che dovrei considare? - raffreddamento abbastanza buono, la macchina può girare con tutti i core al 100% anche per diverse ore, vorrei evitare che venga abbassata la frequenza delle cpu per raffreddare il tutto dato che farò misurazioni sul tempo di cpu del codice. Se può aiutare va bene anche un case leggermente più spazioso per "areare" meglio. - processore performante I7 quad-core/I7 fascia bassa o I5 (per le frequenze e i modelli vedrei come siamo messi col budget per le altre componenti tipo motherboard e ram, in modo da massimizzare il throughput del trio) - ram 16/8GB DDR3, frequenza direi almeno 1333MHz (anche qui, se ci escono 16GB con meno frequenza perché la motherboard per il budget non ce la farebbe va bene uguale), per l'ECC non saprei valutare, era vario tempo che non vedevo RAM che l'avessero, mentre ultimamente ne ho viste un po', che ne dite? - motherboard in linea con processore e ram scelti, scheda video integrata (direi intel HD 4000) e scheda di rete - memoria secondaria: SSD da 256/128 GB + HD sata da 1T/500GB - mouse ottico wired con scroll e tastiera wired da spendere poco, non ho esigenze particolari - monitor 21/19 pollici, contate che è un pc per programmare, scrivere in latex e lanciare esperimenti con SW, non devo renderizzare nulla né guardare filmati etc, anche se ci passerò 8/10 ore, vista anche la scheda video integrata non ha senso spenderci molti soldi a mio avviso - sistema operativo & sw/driver componenti: ho delle licenze dell'università per Windows quindi non lo comprerei, metterei su un dual boot win7 64 bit pro e (fedora 18) linux, quindi l'os non va conteggiato nel budget. Se siete a conoscenza di qualche problema con driver sotto linux magari segnalatemeli ![]() Non mi servono lettori di schede, lettori ottici o altro. Come indicazione generale il pc verrà usato per scrivere articoli, programmare e lanciare esperimenti con dataset piuttosto grandi (fino a 100GB, suddivisi in file da qualche centinaio di mega fino a 2/3 gigabyte), dove ogni singolo file avrà la necessità di essere caricato in memoria e processato (quindi potrebbe occupare anche il doppio rispetto alla versione su disco, per questo sotto 8GB non andrei). Gli esperimenti spesso riguardano le performance di esecuzione temporale degli algoritmi, per questo vorrei una buona configurazione di processore+ram (caricando sull'SSD i dati per l'esperimento attuale, mentre lo storico lo scaricherei sul disco sata). Per spiegare meglio, il pattern degli esperimenti di solito è il seguente: 1) un singolo file viene letto da disco e salvato in RAM con una rappresentazione "logica" che può occupare fino al doppio della dimensione su disco 2) il file viene processato (uso massivo di CPU) con I/O dalla RAM 3) il file viene serializzato su disco il procedimento si ripete per ogni singolo file. Le misurazioni di tempo vengono fatte solo sul punto 2, però per la durata totale dei test e il tempo per ottenere i risultati vorrei minimizzare anche 1 e 3 (cosa che usando un SSD anche da 128GB vedo fattibile con poco sforzo). Premetto che ho già fatto diverse ricerche in rete, purtroppo il giusto compromesso per la triade ram+cpu+motherboard mi pare difficile da valutare solo con le specifiche, in più ho esigenze un po' fuori dalla norma, per questo mi farebbe piacere ricevere qualche opinione da persone con più esperienza (teorica o pratica). Grazie in anticipo a chi vorrà darmi qualche consiglio, Alessandro |
![]() |
![]() |
![]() |
#2 |
Junior Member
Iscritto dal: Jan 2013
Messaggi: 27
|
Be temo di doverti avvertire che nessuno CPU ha frequenza fissa. Misurare i tempi per il software è una cosa che faccio piuttosto spesso e non è molto semplice. Ogni cpu può viariare la frequenza abbastanza rapidamente anche in pochi secondi (bada bene questo vale già per il mio DualCore Intel che ha 4 anni di età) soprattutto certe cpu che hanno il controllo energetico, quindi magari evita di prendere le cpu troppo "risparmiose" dal punto di vista energetico, che sarebbe esattamente l'esigenza opposta alla mia poichè hanno fluttuazioni più o meno grandi e rischiano di alterare i tempi (a me piace complicarmi la vita infatti).
Quindi piuttosto che usare il tempo di CPU forse meglio quello dei timer ad alta risoluzione che ogni cpu ha. Nel momento della prima chiamata la frequenza viene "bloccata" e viene stallato il pipeline in modo che l'istruzione che restituisce i ticks non venga eseguita "fuori ordine". (ovviamente devi fare la query della frequenza attuale altrimenti non sai per cosa scalare i valori che ti ritorna) Se usi linguaggio assembly le cpu moderne hanno ottime istruzioni che ti permettono di scrivere direttamente sulla memoria RAM dei valori (senza aggiornare la cache, in teoria sarebbe rischioso perchè perde di consistenza la cache) perfetto ad esempio per salvare le frequenze e i tick delle misurazioni di precisione senza causare effetti collaterali di cache misses. Assumendo che tu debba elaborare i dati in maniera non sequenziale, ti conviene una memoria bella veloce e a bassa latenza inoltre tanta cache ti può aiutare. Invece se elabori i dati in maniera sequenziale direi che ti basta anche poca ram e una cpu discreta. (ovviamente i tempi di esecuzione in questo caso li andresti ad elaborare in un secondo momento, specialmente su windows avrai a che fare con i counter-leaps che sono una rottura immane). Grazie a queste istruzioni misturi i tempi con precisioni che variano e salvi i risultati direttamente in RAM senza interferire troppo coi risultati. Per quanto riguarda la frequenza credo che tu su alcuni modelli possa da bios specificare che vuoi la cpu utilizzata al massimo anche in idle (ma non sono sicuro su questo eh, di hardware non sono un esperto), ma comunque se le cpu possono variare frequenze ci sono dei bei motivi quindi andarle a fissare (Anche senza overcock) secondo me è un po come segarsi le gambe Ultima modifica di Fixen : 09-01-2013 alle 18:49. |
![]() |
![]() |
![]() |
#3 |
Member
Iscritto dal: Mar 2009
Messaggi: 38
|
Grazie delle precisazioni Fixen, non sono entrato nei dettagli dando abbastanza per scontate tutte le problematiche che hai citato, intendevo proprio casi limite di surriscaldamento "grave". Ad ogni modo ogni esecuzione è mediata su molte esecuzioni per robustezza statistica.
|
![]() |
![]() |
![]() |
#4 |
Junior Member
Iscritto dal: Jan 2013
Messaggi: 27
|
bo credo alla fine dipenda tutto da quanto "casually" (streaming o sparse?) accedi la RAM e dall'intensità aritmetica delle applicazioni che usi. Magari questo può aiutare parecchio gli esperti hardware di queste parti a trovarti il computer adatto
![]() Ultima modifica di Fixen : 09-01-2013 alle 20:56. |
![]() |
![]() |
![]() |
#5 |
Member
Iscritto dal: Mar 2009
Messaggi: 38
|
Sì in effetti sono stato avaro di dettagli perché il post era già troppo lungo, però forse qualche precisazione in più è necessaria.
Diciamo solo che non faccio calcoli matriciali o algebrici pesanti, lavoro sia con automi su alberi che con ontologie, in entrambi i casi faccio principalmente esplorazione simbolica. Non ho mai guardato a basso livello cosa facciano effettivamente tutte le librerie che uso, però con un'analisi superficiale posso dire che il collo di bottiglia è stata spesso la CPU per gli automi, RAM/CPU per le ontologie. La maggior parte del tempo di CPU (a memoria mi ricordo un 90% col profiler per la funzione di calcolo dell'hashing) è spesa nella gestione delle giganti hashtable (la rappresentazione "logica" di cui parlavo" nel primo post), su cui vengono effettuate molte operazioni di ricerca, inserimento e confronto, con conseguente calcolo di hashing degli oggetti. Mi rendo conto che almeno precisare che non faccio number crunching poteva essere utile, però la mia richiesta era leggermente più generale, ovvero ottimizzare la triade motherboard/cpu/memoria a parità di budget, prendendo tutte cose sfruttabili senza "punte di diamante" sprecate come spesso accade. Grazie comunque per le tue precisazioni, mi hai aiutato a rendere più chiara la formulazione della richiesta, o almeno spero ![]() |
![]() |
![]() |
![]() |
#6 |
Junior Member
Iscritto dal: Jan 2013
Messaggi: 27
|
Accidenti! che lavoro pazzesco
![]() ![]() Cacchio 90% tempo di hashing XD pauroso. Secondo me puoi verificare i colli di bottiglia con downgrade mirati. (ad esempio i calcoli matriciali richiedono belle CPU, ma se sono la minoranza delle operazioni che esegui non ha senso migliorare la cpu solo per loro, mentre di quel 90% di tempo di hashing, se non conosci il codice di hash non puoi sapere se è soggetto a cache misses e se è soggetto a cache misses in quale percentuale lo è). Con i downgrade mirati, riesci a vedere il peggioramento, e quindi non solo ti fai un'idea di quanto potrebbe essere il miglioramento, ma individui in un botto solo tutti i colli di bottiglia. ( il tempo di esecuzione totale è l'unico vero parametro a tua disposizione in questo caso e variando i fattori uno alla volta ti fai un idea molto precisa.). Che ne so, abbassi frequenza della RAM da 1600 Mhz a 1333 Mhz ( 83% ) e vedi che le prestazioni degradano del 70%. Idem per la frequenza della CPU o per il numero di cores. Provi a dimezzare la cache (qui però starei attento, le cache tendono a comportarsi in maniera logaritmica, se è il tuo collo di bottiglia e la dimezzi le prestazioni potrebbero peggiorare di 4 volte, viceversa raddoppiare la cache potrebbe migliorare non più del 50% le prestazioni e le cache sono costosissime , vedi cpu intel). A parte il fatto che con i downgrade mirati ti fai un idea molto precisa di cosa fa il tuo software e in futuro sai già dove migliorare il tuo hardware ( o come assemblare un nuovo hardware), credo sia l'unico modo di procedere sensato. Credo che qualunque altro consiglio sull'hardware ti farebbe sicuramente sprecare qualche componente (poi vedi tu, visto che i downgrade richiedono tempo e il tempo è denaro ^^ ed inoltre richiedono pure i pezzi "downgradati" che se non li hai sono un costo seppure non grande come i componenti "upgradati", anche se credo che con alcuni BIOS riesci a simulare il downgrade abbastanza agevolmente). A priori nessuno può sapere come equilibrare la triade per te ![]() Scusa per il lungo post ma non so dove accorciarlo XD. Ultima modifica di Fixen : 10-01-2013 alle 01:29. |
![]() |
![]() |
![]() |
#7 |
Member
Iscritto dal: Mar 2009
Messaggi: 38
|
Ciao Fixen,
purtroppo ho a disposizione solo un portatile davvero scadente e molto meno tempo di quello richiesto per fare tutte queste prove. Ovviamente non pretendo che la soluzione sia quella ottimale, per quella servono prove accurate come dici, però già un consiglio generale fra un I5/I7, un mobo adatta credo sia fattibile anche senza fare benchmark specifici sulle mie applicazioni. Le direttive generali sono che lavoro per lo più su aritmetica con numeri interi (hashing per l'appunto), senza uso massivo di algebra lineare, non farò overclocking e per la scheda video mi accontento della configurazione meno costosa. Da quel che ho visto in questi giorni l'ECC non la supporta nessun I5/I7 3rd generation, perciò via anche quella domanda, le frequenze supportate sono 1333 e 1600, quindi anche volendo a meno non si va. Dato che sono molti anni che non guardo nulla di HW non sapevo assolutamente che i nuovi processori intel integrano la scheda video/gpu, perciò direi che cade anche il requisito della mobo con scheda video integrata. Per la mobo, inoltre, non è strettamente necessario avere USB3 (non attacco periferiche di nessun genere, tantomeno HD, e mai dovessi farlo posso serenamente avere prestazioni mediocri). Ho letto parecchi thread in giro ma non riesco sinceramente a capire le reali differenze fra I5 e I7, numero di core e thread per core a parte (diciamo che lì mi potrei "accontentare" anche di 4 core e 4 thread se col budget non si riuscisse). A parte i dettagli per overclock (che non farei comunque) e le caratteristiche oggettive tipo frequenza massima, consumo, cache e "temperatura" etc (che variano anche fra modelli di I5 o I7 stessi, quindi non considero una discriminante fra le due categorie), non capisco se per me possa valere la spesa l'I7 o meno, a livello proprio architetturale (mai ci fossero differenze sostanziali). Anche le leve di prezzo per i socket associati alle due tipologie non mi è tanto chiaro, perché le schede hanno sempre feature nascoste per O.C. che a me sfuggono, il prezzo può essere dato anche da quello. Per ottimizzazione di scheda madre rispetto a CPU/RAM intendo questioni tipo il FSB (a cui chiederei di aggiungerne altre di cui sicuramente non sono a conoscenza). Per la RAM sono pure un po' indietro su ottimizzazione di ripartizione dimensione/blocchi (l'ultima volta che ho guardato era un concetto di punta l'hybrid channel, non so se oggigiorno ci sia altro). Per l'SSD ho visto che a parità di capacità e in una fascia di prezzo ragionevole (più di 1€/GB e meno di 2€/GB a spanne), ci sono questioni di "affidabilità" fra marche e modelli (avevo segnato un modello samsung da 128GB che pareva buono, ma ho perso l'appunto). Spero che almeno su queste questioni "basilari" (a me decisamente non chiarissime come si può leggere dai dubbi) qualcuno mi sappia dare delle linee guida. Grazie, Alessandro Ultima modifica di geuzzo : 11-01-2013 alle 08:57. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:25.