Łączenie kilku komputerów w "klaster"

  • Rozpoczynający wątek Robertolog
  • Data rozpoczęcia

DeletedUser

Guest
Mam w domu kilka komputerów, chciałbym je połączyć tak, aby pracowały nad jednym zadaniem. Czy są od tego programy gotowe, czy trzeba samemu coś pisać?
 

DeletedUser314

Guest
Mam w domu kilka komputerów, chciałbym je połączyć tak, aby pracowały nad jednym zadaniem. Czy są od tego programy gotowe, czy trzeba samemu coś pisać?

Zależy co to za zadanie :), napisz to CI odpowiem jeśli będę wiedział :)
 

DeletedUser

Guest
Zależy co to za zadanie :), napisz to CI odpowiem jeśli będę wiedział :)
Chce coś spakować 7-zipem. Przy 4 rdzeniach, wielkości słownika 1024MB, wielkości słowa 273 bity (bajty) wymaga 44GB ramu. Mogę albo ustawić 40GB wirtualnego ramu, albo podłączyć inne kompy i spróbować od nich wykorzystać ram. Dodatkowo Można ustawić wirtualny ram i dodać tylko rdzenie z innych komputerów. Czyli:
1. Komputery wykorzystywane są tylko jako dawcy ramu
2. Komputery wykorzystywane są jako dawcy rdzeni
3. Komputery wykorzystywane sa do ramu i rdzeni
 

DeletedUser314

Guest
Chce coś spakować 7-zipem. Przy 4 rdzeniach, wielkości słownika 1024MB, wielkości słowa 273 bity (bajty) wymaga 44GB ramu. Mogę albo ustawić 40GB wirtualnego ramu, albo podłączyć inne kompy i spróbować od nich wykorzystać ram. Dodatkowo Można ustawić wirtualny ram i dodać tylko rdzenie z innych komputerów. Czyli:
1. Komputery wykorzystywane są tylko jako dawcy ramu
2. Komputery wykorzystywane są jako dawcy rdzeni
3. Komputery wykorzystywane sa do ramu i rdzeni

A takie pytanie co kompresujesz?
Pamiętaj również, że będziesz musiał to dekompresować potem, a to również będzie czaso i zasobo chłonne.
A archiwizowanie w ten sposób dużych danych jest ryzykowne, ponieważ łatwo uzyskać kilka bad sektorów (na płycie czy pendrivie), błąd przy wysyłaniu.
I wtedy całe archiwum może szlak trafić, dlatego np do danych w internecie często dane naprawcze się dołącza.

Z tego co wiem Windowsy i zwykłe Linuksy nie mają możliwości współdzielenia ramu i procesów tak jak np SSI.
Dlatego wymagane chyba będzie, żeby 7zip albo jego alternatywy/pluginy miały zaimplementowane takie rozwiązanie.
Np do miningu, są dodatkowe specjalne procesory doczepianie np poprzez usb :>, ale aplikacje mają już wbudowane sterowniki do nich.

1. Komputery wykorzystywane są tylko jako dawcy ramu
2. Komputery wykorzystywane są jako dawcy rdzeni
3. Komputery wykorzystywane sa do ramu i rdzeni
Nie wiem jak wzrośnie wydajność, bo w tym przypadku wąskim gardłem może okazać się połączanie komputerów i komunikacja między nimi.

Przy takich zadaniach najlepiej jak każda maszyna/wątek otrzymuje swoje dane i je obrabiają, np jak łamiesz hasha, to każda maszyna łamie go dla pewnego zakresu
W takich przypadkach wraz z zwiększaniem maszyn postęp mamy stały.

Dla kompresji już tak nie jest i to nawet w obrębie jednej maszyny:
000008a44abcb7a4.jpg

000008a34abcb7a0.jpg

263581_MSI_WIND_7ZIP.jpg

263581_MSI_WIND_WINRAR.jpg

Teoretycznie postęp powinien być 4 krotny, a mamy 3 krotny, dlatego możliwe, że jak np podłączysz nowy pc i stary laptop to wynik wyjdzie gorszy niż na np samym pc.

Jeśli masz nvidie, poczytaj też o zastosowaniu CUDA'ów, kilka przykładowych linków jakie wyrzuciło google (nie zgłębiałem się w nie):
http://sourceforge.net/p/sevenzip/discussion/45797/thread/f1c138bf
http://www.freelancer.com/projects/PHP-C-Programming/Zip-Port-CUDA.html
https://devtalk.nvidia.com/default/topic/397951/?comment=2814196
ati chyba też ma coś swojego więc analogicznie do niego możesz popatrzeć :)

W ostanim linku też padło ciekawe stwierdzenie:
Compression is pretty much a serial algorithm with dependencies on previous decisions, I don't think there is much potential for parallelizing a compression algorithm except maybe for gathering some statistics about the source data.

Ale i tak musiał byś się temu przyjrzeć dokładniej, bo ja tylko pobieżnie patrzyłem ;p
 
Ostatnio edytowane przez moderatora:

DeletedUser

Guest
A takie pytanie co kompresujesz?
Pamiętaj również, że będziesz musiał to dekompresować potem, a to również będzie czaso i zasobo chłonne.
A archiwizowanie w ten sposób dużych danych jest ryzykowne, ponieważ łatwo uzyskać kilka bad sektorów (na płycie czy pendrivie), błąd przy wysyłaniu.
I wtedy całe archiwum może szlak trafić, dlatego np do danych w internecie często dane naprawcze się dołącza.
Płytkę BD-R DL. Około 42GB.
Nie chodzi mi tylko o wzrost wydajności. Głównie o polepszenie parametrów kompresji. Na chwilę obecną mogę ustawić maksymalnie takie parametry:
Stopień kompresji: Ultra
Metoda Kompresji: LZMA2
Rozmiar słownika: 256MB
Rozmiar słowa: 273
Rozmiar bloku ciągłego: 4GB
Liczba wątków: 4

Użycie pamięci do kompresji: 5677MB
Użycie pamięci do dekompresji: 258MB
Przy zwiększeniu rozmiaru słownika do wartości maksymalnej czyli 1024MB:
Użycie pamięci do kompresji: 22573MB
Użycie pamięci do dekompresji: 1026MB

Chciałem kiedyś użyć NanoZip, ale nie może dzielić na części archiwum, co jest dla mnie bardzo ważne.
Mam kartę Ati Radeon.
A czy idzie zrobić tak, aby system widział dodatkowe procesory jako dodatkowe rdzenie?

PS
Dodatkowo, przy ustawieniu rozmiaru słownika do wartości maksymalnej, spada drastycznie zużycie procesora (dopóki zużycie ramu nie osiągnie wartości maksymalnej, wszystko jest dobrze tj procesor pracuje na 90%).
 
Ostatnio edytowane przez moderatora:

DeletedUser314

Guest
Płytkę BD-R DL. Około 42GB.
Nie chodzi mi tylko o wzrost wydajności. Głównie o polepszenie parametrów kompresji. Na chwilę obecną mogę ustawić maksymalnie takie parametry:

Przy zwiększeniu rozmiaru słownika do wartości maksymalnej czyli 1024MB:


Chciałem kiedyś użyć NanoZip, ale nie może dzielić na części archiwum, co jest dla mnie bardzo ważne.
Mam kartę Ati Radeon.
A czy idzie zrobić tak, aby system widział dodatkowe procesory jako dodatkowe rdzenie?

PS
Dodatkowo, przy ustawieniu rozmiaru słownika do wartości maksymalnej, spada drastycznie zużycie procesora (dopóki zużycie ramu nie osiągnie wartości maksymalnej, wszystko jest dobrze tj procesor pracuje na 90%).

Jeśli chcesz skompresować coś bo nie mieści się na blueray'u, to odradzam. Mała ryska i bez danych naprawczych nie odzyskasz tego. Tak jak pisałem w poście wyżej.
Tak wielkich danych nie powinno się tak kompresować jeśli chcemy je archiwizować.

A czy idzie zrobić tak, aby system widział dodatkowe procesory jako dodatkowe rdzenie?
Nie, chyba, że zainstalujesz odpowiedni system.
Zobacz post wyżej, dokładnie cześć: "Z tego co wiem Windowsy i zwykłe Li...". Tam masz linki :)

I tak z ciekawości ile zajmuje Ci kompresja tych 42gB przy słowniku 256mB ?
 

DeletedUser

Guest
Jeśli chcesz skompresować coś bo nie mieści się na blueray'u, to odradzam. Mała ryska i bez danych naprawczych nie odzyskasz tego. Tak jak pisałem w poście wyżej.
Tak wielkich danych nie powinno się tak kompresować jeśli chcemy je archiwizować.
Nie chce tego nagrać :) Wrzucam na chomika, nad danymi naprawczymi pomyśle.
I tak z ciekawości ile zajmuje Ci kompresja tych 42gB przy słowniku 256mB ?
Wczoraj kompresja zajęła mi 3 godziny, ale ratio wynosiło 80%. Czyli zyskałem ponad 8GB.

Który system SSI jest najprostszy i najbardziej intuicyjny w użyciu? :)
 
Ostatnio edytowane przez moderatora:
Do góry