2012-01-18 20 views
5

Mam skrypt PHP teraz przechodzący przez kombinacje zestawu tablic. Mogę przetestować 6,1 miliarda z 500 bilionów kombinacji w ciągu 1 godziny za pomocą prostego skryptu PHP. Czy można napisać program w dowolnym języku na dzisiejszym przeciętnym komputerze, który byłby w stanie przetestować wszystkie kombinacje 500 trylionów z wielu tablic w mniej niż około 6 godzin?Jak przetestować kombinacje 500 trylionów w czasie krótszym niż 6 godzin od wykonania

Ponadto nie mam zasobów do korzystania z obliczeń rozproszonych lub klastrowych dla tego zadania. Jakiego rodzaju zyski mogłem się spodziewać konwersji kodu na wielowątkowe java/C#?

Dziękujemy

+2

Czy jest to 48 bitów WPA do hakowania? ;) – Nabab

+0

To ogromnie zależy od metody, której używasz do przetwarzania tych elementów tablicy i ile pamięci RAM marnujesz, aby zapisać te 500 trylionów kombinacji. W teorii tak, języki wielowątkowe mogłyby lepiej wykorzystać procesor. –

+0

jeśli jest to ze szlachetnej przyczyny, możesz utworzyć stronę "Podaruj czas procesora" i podejdź do wirusów, zbierając bloki rozwiązań wykonanych przez użytkowników w przeglądarce ... które rozwiązałyby Twój problem z zasobami ... –

Odpowiedz

5

Zacznijmy proste. Czy korzystasz z gwintowania? Jeśli nie - współczesny komputer wyższej klasy Intel ma dziś 12 wątków sprzętowych na procesor. Oznacza to, że otrzymujesz współczynnik 12 z gwintowania.

Jeśli ktoś uzyska określony serwer, może łatwo uzyskać 24-32 wątki sprzętowe przy stosunkowo niskim koszcie.

Jeśli tablice są częściowo statyczne i zakładasz odpowiednią kartę graficzną, może okazać się, że masz od 800 do 3000 rdzeni procesora ogromną oszczędność czasu. Nic nie przebije tego - a nawet przeciętne procesory mają dość podstawowe możliwości w swoich układach lub kartach graficznych w dzisiejszych czasach.

+0

Zgadzam się z TomTom - GPGPU-Computing jest zdecydowanie do zrobienia w takich przypadkach i jeśli nie masz zasobów do grupowania lub podobnych. – ChrFin

+0

Nawet jeśli. Istnieje powód, dla którego SuperMicro sprzedaje 2 serwery urządzeń z miejscem na 6 kart Nvidii Tesli. NIC nie pokonuje procesora graficznego w przypadku operacji, które można usunąć w sposób niemożliwy do uzyskania. Znam faceta dokonującego analizy opcji na amerykańskich giełdach z maszyną pod jego biurkiem - co sekundę, WSZYSTKIE akcje. Wykorzystuje do tego coupld z 6990. – TomTom

+0

@TomTom nic nie pobije GPGPU dla określonego rodzaju operacji równoległych. W tym przypadku tak, powinno być całkiem dobrze dopasowane. – Voo

2

Jeśli nie masz zasobów, to obawiam się powiedzieć, że z numerami, które chcesz, jesteś buggered.

Musisz ponownie przemyśleć struktury danych i algorytmy je obsługujące, aby mieć szansę na ukończenie łamigłówki w określonym czasie - używając PHP lub innego języka.

0

Nie wiem nic na temat procesu, który chcesz uruchomić i być może nie ma sposobu, aby osiągnąć swoje cele przy użyciu bieżących zasobów, ale ponieważ pytasz o język i prawdą jest, że PHP nie jest najlepszym rozwiązaniem. radzić sobie z paralelizmem, powinienem powiedzieć, że Erlang słynie z tego rodzaju osiągnięć.

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 

Zakładając, że masz procesor Intel Core i7-2600 CPU (3.4GHz), czyli 4 rdzenie + Hyperthreading = 8 rdzeni, to trzeba prędkość per-Rdzeń

23.1/6 = 3.9GHz 

, który znajduje się na ekstremalnym końcu możliwości podstawowego przetaktowania.

Po uwzględnieniu innych kosztów ogólnych nie jest to możliwe. Twój procesor nie może zrobić NIC, ALE PORÓWNANIA.

+0

rezerwowanie 2 rdzeni na obciążenie? – Mikeb

+1

Nie jestem nawet pewien, czy HT z takim zadaniem. A potem konto tutaj czegoś brakuje: 3,9 miliarda porównań nie mapuje bezpośrednio do 1 cyklu/porównania. W zależności od rzeczywistego kodu potrzebujemy dużo więcej, aby uzyskać kolejną niezbędną kombinację, zapętlić nad głową i tak dalej. Byłbym bardzo zaskoczony, gdybyśmy przebrnęli mniej niż co najmniej sto cykli na iterację – Voo

Powiązane problemy