2012-01-18 11 views
5

Ho uno script PHP che ora scorre le combinazioni di un set di matrici. Posso testare 6.1 Miliardi di 500 Trilioni di combinazioni totali in 1 ora con un semplice script PHP. È possibile scrivere un programma in qualsiasi linguaggio eseguito sul PC medio di oggi che sarebbe in grado di testare tutte le 500 trilioni di combinazioni di più array in meno di ~ 6 ore?Come testare 500 trilioni di combinazioni in meno di 6 ore di tempo di esecuzione

Inoltre, non ho le risorse per utilizzare il calcolo distribuito o cluster per questa attività. Che tipo di guadagni potrei aspettarmi convertendo il codice in java/C# multithread?

Grazie

+2

È un WPA 48 bit da hackerare? ;) – Nabab

+0

Questo dipende enormemente dal metodo che usi per elaborare quegli elementi dell'array e dalla quantità di RAM che stai perdendo per salvare quelle 500 trilioni di combinazioni. In teoria si, i linguaggi multithread potrebbero utilizzare meglio la CPU. –

+0

se questo è per una nobile causa, potresti creare una pagina "donare tempo CPU" e diventare virale, raccogliendo blocchi di soluzione fatti dagli utenti nel loro browser ... che risolverebbe il tuo problema di risorse ... –

risposta

5

Iniziamo semplice. Usi la filettatura? In caso contrario, una moderna Intel di fascia alta ha 12 thread hardware per processore. Ciò significa che ottieni un fattore 12 dalla filettatura.

Se qualcuno ottiene un server specifico, potrebbe ottenere facilmente 24-32 thread hardware a un costo relativamente basso.

Se gli array sono semi-statici e la scheda grafica non funziona, è possibile riscontrare da 800 a 3000 core di processore un enorme risparmio di tempo. Niente di meglio di questo - e anche le CPU medie hanno abbastanza capacità di base nei loro chip o nelle schede grafiche in questi giorni.

+0

Sono d'accordo con TomTom - GPGPU-Computing è sicuramente la strada da percorrere in questi casi e se non si dispone delle risorse per il clustering o simili. – ChrFin

+0

Anche se. C'è una ragione per cui SuperMicro vende 2 server unità rack con spazio per 6 schede Nvidia Tesla. NOTHING batte GPU per operazioni paralellizable. Conosco un ragazzo che fa analisi delle opzioni sui mercati azionari statunitensi con una macchina sotto la sua scrivania - ogni secondo, TUTTI gli stock. Utilizza un coupld di 6990 per quello. – TomTom

+0

@TomTom niente batte GPGPU per un tipo specifico di operazioni parallele. In questo caso sì, dovrebbe essere abbastanza buono. – Voo

2

Se non si dispone delle risorse, ho paura di dire che, con i numeri che si desidera, si sono infastiditi.

Dovrai ripensare le strutture dati e gli algoritmi su di esse per avere la possibilità di completare il tuo puzzle entro il limite di tempo - utilizzando PHP o qualsiasi altra lingua.

0

Non so nulla del processo che si desidera eseguire e forse non c'è modo di raggiungere i propri obiettivi con le risorse attuali, ma dal momento che si sta richiedendo una lingua, ed è vero che PHP non è il migliore per Affrontare il paralelismo, dovrei dire che Erlang è famoso per questo tipo di risultati.

3
500 trillion comparisons in 6 hours 
= 
83.3 trillion comparisons in 1 hour 
= 
1.4 trillion comparisons per minute 
= 
23.1 billion comparisons per second 

Supponendo che hai un processore Intel Core i7-2600 CPU (3.4GHz), che è 4 core + hyperthreading = 8 core, avreste bisogno di una velocità per core di

23.1/6 = 3.9GHz 

che si trova all'estremità della possibilità di overclocking di base.

Una volta preso in considerazione l'altro overhead, ciò che si desidera non è possibile. La tua CPU non può fare NIENTE MA CONFRONTI.

+0

riservando 2 core per overhead? – Mikeb

+1

Non sono nemmeno sicuro se HT con un simile compito. E poi l'account qui manca qualcosa: 3,9 miliardi di confronti non mappano direttamente a 1 ciclo/confronto. A seconda del codice effettivo avremo bisogno di molto altro per ottenere la prossima combinazione necessaria, il sovraccarico del ciclo e così via. Sarei piuttosto sorpreso se riuscissimo a cavarcela con meno di un centinaio di cicli per ogni iterazione – Voo

Problemi correlati