Komputer do programów obliczeniożernych :)

0

Hey,
Dla pasjonatów to pewnie pestka ale ja jestem totalnym laikiem w kwestiach technicznych dlatego proszę o pomoc bardziej doświadczonych użytkowników w celu oceny i ewentualnej pomocy przy doborze odpowiedniego kompa (odpowiednich parametrów/części).

Zamierzam kupić sobie nowy komputer i chciałbym go zoptymalizować pod kątem bardziej obliczeniożernych programów ale nie gier! Może nie wnikając w szczegóły zamierzam (dopiero się uczę :P) pisać programy, które będą tworzyć baaardzo duuużo zmiennych (tablice o wielkości nawet kilkuset tysięcy/milionów elementów) i operować na tych danych
<- takie bardziej statystyczne rzeczy i bardzo obliczeniożerne - dużo mnożenia, dodawania etc :). Dlatego, że wiele rzeczy będzie powstawać przy pomocy prób i błędów potrzebuję, żeby komputer jak najszybciej wykonał to co do niego należy :P (obecnie, jak zacznę się bawić na większym zestawie danych, to komputer to wykonuje od kilku minut nawet do kilku godzin... :(. Ale mniejsza z tym <- nie mówimy przecież o programowaniu :P.
Jeszcze tylko ważna kwestia - nie zamierzam używać większej ilości rdzeni (wiem, że teoretycznie jest taka możliwość, żeby obliczenia były wykonywane równolegle (wielowątkowość) -> przynajmniej w niektórych językach - ale ja na 99% nie będę z tego korzystać)! Dlatego nie potrzebuję 4 lub nawet 6 rdzeni... (wystarczą mi 2!) <- tak mi się wydaje ;P

W związku z powyższym nie zależy mi na karcie
graficznej (bo chyba to będzie zbędne) albo na wygodnej myszce :)...

Głównie chodzi mi o szybkość wykonywanych obliczeń i tylko pod tym <ort>kontem </ort>chciałbym rozpatrzyć różne parametry. Tak więc proszę o jakieś rady.

Mój obecny zestaw wyglądał by następująco (chyba najważniejsze części):

  • Procesor -> Intel Core i5 661 3,33 GHz BOX (jak stanieje lub będzie niewiele droższy to może i5 680 :P)
  • Pamięć -> Kingston HyperX DDR3 2X 2GB 1600MHz Intel XMP CL9 Core i5 (x2 -> łącznie 8 GB)
  • System operacyjny -> Microsoft Windows 7 Professional PL OEM 64Bit (chociaż nie wiem jeszcze co mi daje, że to jest professional?!? -> czy to ma jakieś znaczenie? i czy nie lepszy byłby XP?)
  • Karta graficzna -> jakąś kartę graficzną, chociaż nie wiem którą :( - może wy coś doradzicie -> nie chcę, żeby była wypasiona ale, żeby każda gra na niej chodziła. Tak, żeby wszystko ładnie grało... :)
  • Płyta główna -> Myślę nad: Intel DP55KG lub Intel DP55WG bulk (chociaż nie wiem... A może jakiegoś Asusa?...

Z tych ważniejszych części to chyba wszystko ale kompletnie nie wiem na co powinienem zwracać uwagę... Przykładowo:

Czy powinienem zwracać uwagę na następujące parametry (a jeśli tak to dlaczego - w czym mi to pomoże?/co mi to daje?):
->Parametry procesora

  • częstotliwość taktowania magistrali GT/s
  • pojemność pamięci cache L2/3
  • taktowanie grafiki (do czego jest to w ogóle w procesorze? :/)

->Płyta główna
-czy ma jakieś większe znaczenie?
-na co zwracać uwagę?

->Pamięć DRAM

  • czy pojemność pamięci ma znaczenie dla szybkości obliczeń (jak tak to w jaki sposób?). Na pewno nie zaszkodzi ale czy pomoże?
  • czy częstotliwość pracy ma znaczenie? i co jeśli częstotliwość kostek jest większa od możliwości procesora - bo coś czytałem, że i5 może wykorzystać tylko 1333 MHz a kostki, które sobie wypatrzyłem mają 1600 :)
  • czy opóźnienie - "cycle latency" mają znaczenie?

->System operacyjny
-czy ma znaczenie wersja 32/64 bitowa?
-czy ma znaczenie windows 7 home edition od pro? (gdzieś przeczytałem, że pro jest szybszy... czy to prawda? jeśli tak to w jakim sensie? tzn. czy sam system czy również programy odpalane na nim?)
-czy system operacyjny w ogóle ma jakieś znaczenie? (czy np. nie lepiej zostać przy XP?)

Oczywiście jak coś przeoczyłem i powinienem jeszcze na coś zwrócić uwagę to również proszę o taką informację.

Pozdrawiam i z góry dziękuję za każdą okazaną pomoc!

0

czy pojemność pamięci ma znaczenie dla szybkości obliczeń (jak tak to w jaki sposób?). Na pewno nie zaszkodzi ale czy pomoże?

  • czy częstotliwość pracy ma znaczenie? i co jeśli częstotliwość kostek jest większa od możliwości procesora - bo coś czytałem, że i5 może wykorzystać tylko 1333 MHz a kostki, które sobie wypatrzyłem mają 1600 :)
  • czy opóźnienie - "cycle latency" mają znaczenie?

Mam przeczucie, że jeśli zadajesz takie pytania, to raczej problemem długich obliczeń nie jest Twój sprzęt, a raczej Twoje programy, a dokładniej algorytmy jakich używasz.

Mój Core2Duo znajduje optymalne rozwiązanie problemu komiwojażera dla 20 miast w mniej niż 1 sekundę (a dla tego problemu jest 1.216451 × 10^18 możliwych rozwiązań). I nie podkręcałem... :D

0
Krolik napisał(a)

Mam przeczucie, że jeśli zadajesz takie pytania, to raczej problemem długich obliczeń nie jest Twój sprzęt, a raczej Twoje programy, a dokładniej algorytmy jakich używasz.

Możliwe i chciałbym, żeby komputer to nadrobił :) <- anyway nie zbaczajmy z tematu...

Krolik napisał(a)

Mój Core2Duo znajduje optymalne rozwiązanie problemu komiwojażera dla 20 miast w mniej niż 1 sekundę (a dla tego problemu jest 1.216451 × 10^18 możliwych rozwiązań). I nie podkręcałem... :D

No to teraz jest pytanie na jakie parametry zwracać uwagę, żeby mój komputer znalazł jak najszybciej rozwiązanie problemu komiwojażera dla 100 miast <- to raczej już nie jest kwestia sekund... :]
Chodzi właśnie o to, że ja będę w podobnej sytuacji, nawet jak algorytmy będą optymalne to ilość możliwych rozwiązań powoduje spory "przestój" :P

0

Dobra rada: najpierw naucz się programować, poznaj podstawy informatyki, potem myśl o sprzęcie 'pod obliczenia'. To od programów zależy wydajność, nie od niewielkich różnic w sprzęcie. Przeproś się z wielowątkowością, to podstawa w 'obliczeniożernym' oprogramowaniu. Tak, dobrze zrozumiałeś, najczęściej sprzęt nie jest w stanie nadrobić braków kiepskiego algorytmu...

Liczba rdzeni ma znaczenie - na czymś musi działać system i pozostałe programy, prawda? Kupa operacji, nawet związanych z IO, może być realizowana z rozrzuceniem zadań na różne rdzenie/procesory. Poza tym nowoczesne kompilatory (przynajmniej niektórych języków) potrafią same generować kod równoległy. Dalej, ważniejszy większy cache (i inne związane z nim parametry) niż kilka MHz więcej.

Przy wielu rodzajach obliczeń przyda się naprawdę mocna karta graficzna, a najlepiej więcej niż jedna. Od czegoś są nowe typy shaderów i gigantyczna wprost wydajność układów graficznych w pewnych zastosowaniach.

Pamięć z kolei musi być szybka, maksymalnie szybka, żeby wymiana danych z cachem nie była zbyt kosztowna, im więcej danych tym bardziej różnica szybkości boli... Pamięci znowu powinno być tyle żeby ze swapa (raczej) nie korzystać, raczej swoje mechanizmy cache'owania/zarządzania danymi stosować jeżeli ma być tego znacznie więcej niż dostępnej pamięci fizycznej - znowu wielowątkowość się przydaje, można małym kosztem na drugim rdzeniu doczytywać/zwalniać/zapisywać zasoby. Oczywiście dobry dysk, a najlepiej kilka + RAID w takim wypadku też by się przydały...

Jak Windows to tylko Server 2008 (...nie stać Cię) albo 7, pomysł używania praktycznie dziesięcioletniego XP, systemu generacji z poprzedniego stulecia (NT5), jest co najmniej zabawny.

To takie ogólniki, pod żadnym pozorem nie kupuj komputera 'pod obliczenia', szczególnie z obecnym poziomem wiedzy, szkoda pieniędzy i nerwów.

Na koniec takie pytanie - co takiego chcesz liczyć, że potrzebujesz czegoś, co oferuje większą wydajność niż średniej klasy netbook?

0

@MisaL sprzęt ci nic nie nadrobi jak masz nieoptymalny algorytm.

Jeśli chodzi o komiwojażera to

  • algorytm burte-force ma O(n!)
  • algorytm dynamiczny ma O( n2 * 2n)

Zakładając że dla 1 miasta problem zostałby rozwiązany w 10^-9 sekundy (1 takt procesora taktowanego 1Ghz zegarem) to dla 20 miast mielibyśmy:

  • w przypadku burte force 20! = 2432902008176640000 * 10^-9 sekundy = 2432902010 sekund = 675810 godzin = 28160 dni = 77 lat
  • w przypadku algorytmu dynamicznego 400*1048576 * 10^-9 sekundy = 0,4194304 sekundy

Widzisz różnicę? Gdybyśmy mieli 10 razy szybszy komputer to nieoptymalny algorytm nadal liczyłbym nam ponad 7,7 lat!

(mogłem się machnąć licząc, ale rzędy wielkości są mniej więcej takie)

btw w tej konwencji dla 100 miast komiwojażer liczyłby się:

  • dla brute force
    29593548783594670434328779444529014615270157364403101683343786115936580413885
    69114946139776006992588985721014739574573764941185024000 <ort>miliadrów </ort>lat
  • dla dynamicznego zaledwie
    401969368 <ort>miliadrów </ort>lat
    :D

// Wstawiłem nową linię - Q

0

Dużo cache się czasem przydaje (do niestrumieniowych obliczeń) i robi kolosalną różnicę. Z tym, że u AMD w L2 i L3 są zawsze inne dane i dlatego to się sumuje np w PII x4 mamy 4 * 0.5 MiB + 6 MiB = 8 MiB, a w intelach i7 jest tak, że to co jest w L2 jest też w L3 (nie wiem czy wszystko) więc się nie sumuje, więc jest też 8 MiB.

Ja bym polecał i750, nie ma HT, który czasem powoduje spadki wydajności z "niewiadomego" powodu, no i ma dużo cache.

Do 4 GiB ramu i więcej trzeba 64 bitowego domowego Wina, inaczej nie wykryje całości RAMu, to chyba każdy głupi wie.

0
donkey7 napisał(a)

Do 4 GiB ramu i więcej trzeba 64 bitowego domowego Wina, inaczej nie wykryje całości RAMu, to chyba każdy głupi wie.

32-bit Windows Server 2003 obsługuje bodaj do 64GB, zależnie od ograniczeń licencyjnych...

0

no ale nie jest wersją domową tzn na desktopy, a autor wątku raczej tylko taki chciałby mieć

0

x86 to x86, dokładnie takie jak desktopowe obsługuje Windows Server. XP ma bodaj ograniczenie do 4GB, ale posiada obsługę PAE i kilka innych drobiazgów - mam wrażenie, że ograniczenie nie jest programowe a konfiguracyjne, licencyjne. Nawet ciekawy temat do grzebania w systemie.

Poza tym XP to system do domu, nie na stacje robocze, a takich się do 'obliczeniożernych' rzeczy używa, od tego jest właśnie Windows Server.

PS sam używam Windows Server 2003 na desktopie.

0

btw w tej konwencji dla 100 miast komiwojażer liczyłby się:

  • dla brute force
    2959354878359467043432877944452901461527015736440310168334378611
    593658041388569114946139776006992588985721014739574573764941185024000 miliadrów lat
  • dla dynamicznego zaledwie
    401969368 miliadrów lat
    :D

No, i wtedy właśnie się nie kupuje lepszego kompa, tylko stosuje odpowiednie heurystyki, które liczą to w minuty. A że rozwiązanie jest o 1% gorsze od optymalnego, to rzadko kiedy jest problemem.

0

Krolik bardzo mi zależy na tym by pogadać z Tobą na temat pewnej kwestii bo z tego co zauważyłem w jednym wątku masz odpowiednia wiedzę...
proszę o wiadomość na priv albo kontakt na gg 9882910

sorki za spam w temacie ale nie mam jak się z nim skontaktować

0

Możliwe i chciałbym, żeby komputer to nadrobił <- anyway nie zbaczajmy z tematu...

Zdaj sobie sprawę, że za wszelkie te kesze, ramy i szybszy zegarowo procek zapłacisz tysiące a dadzą ci powiedzmy góra 30% przyspieszenia.
Natomiast jeśli algorytm jest zły, to można go przyspieszyć i milion razy.
A jeśli jest dobry, to zrównoleglenie go daje ci przyspieszenie w sprzyjających warunkach tylukrotne, ilu rdzeni używasz.

W związku z powyższym nie zależy mi na karcie graficznej (bo chyba to będzie zbędne)
Zastosowanie technik typu CUDA też daje znaczne przyspieszenie...

  • System operacyjny -> Microsoft Windows 7 Professional PL OEM 64Bit (chociaż nie wiem jeszcze co mi daje, że to jest professional?!?
    Pogóglaj.

-> czy to ma jakieś znaczenie?
Na prędkość obliczeń? Nie.

i czy nie lepszy byłby XP?)
Jeśli chodzi ci o prędkość obliczeń, to bez różnicy.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.