Ostatnie posty

Mam sugestię abyś przeczytał plik o nazwie README. Powinno bardzo mocno pomóc.
Wykorzystując uruchomienia próbne poeksperymentowałem z prędkością komunikacji. Biblioteczka z gotowca, małe dane, niecałe 100kb danych (BTW. tyle pozwalają przesłać).
komputerów - ms
1 10 (inna wersja programu, bez używania komunikacji)
10 14
20 20
50 31
100 52
Bardzo ładnie układają się w linię.
Dodatkowo na 100 komputerach i danych wielkości 42 - 51ms

Program był liniowy, wszystkie instancje (wliczając o indeksie 0) wysyłały do komputera nr0 4 liczby int64_t (32 bajty), pierwsza maszyna je odbierała (wymuszając kolejność, skończyły się próby na wersję Recive(-1)) i obrabiała liniowo.

W metameriach potyczek o zadaniach rozproszonych można znaleźć benchmarki.
10 20 50 100
chain 0.11 0.15 0.32 0.59
chain-multi 1.60 1.98 2.85 3.45
chain-big 0.77 1.56 3.72 7.32
star 0.12 0.14 0.24 0.31
star-big 0.52 0.99 1.88 3.48

Po ich znalezieniu przestałem się dziwić, dlaczego mój program jest taki wolny, a zacząłem, dlaczego ta komunikacja jest taka wolna. Od biedy mógłbym przepisać na mpi (open albo chyba łatwiej opakowanie z boost) ale posta napisać jeszcze łatwiej;) do tego rozsądne sprawdzenie odbyłoby się na 4 instancjach ze wspólną pamięcią, nie o to chodzi.

Syntetyczne benchmarki samego openmpi sugerują znacznie większe prędkości.
http://www.open-mpi.org/performance/v1.9/2013/mustang/

Skąd więc bierze się ten narzut. Tak być musi i będzie, bo [coś np o architekturze sieciowej], czy jest to celowo dopisane opóźnienie mające podnieść jakość rozwiązań?
Nie, nie zostało, ale nie mam include-ów od tejże biblioteki rozproszonej co może być przyczyną.
Podawanie złożoności jest absolutnie nietolerowanym konkursowym przestępstwem! Przecież to zawsze odrzuca spore klasy możliwych podejść, a nasuwa na inne.
A, czasami daje też RE. Tak raz na 6 razy.
U mnie się wykrzaczało jeszcze bardziej, jak zainstalowałem OpenMPI-x64. Potem zainstalowałem OpenMPI-win32 i teraz mam to samo co Ty (na końcu jest wynik, więc niby da się żyć). Dokładniej:

D:\algorytmy>run.bat 6 dzielniki_rozproszone.cpp.exe dzielniki2.in
dzielniki2.in
--------------------------------------------------------------------------
WARNING: An invalid value was given for btl_tcp_if_exclude. This
value will be ignored.

Local host: lanparty
Value: 127.0.0.1/8
Message: Did not find interface matching this subnet
--------------------------------------------------------------------------
[lanparty:00228] 5 more processes have sent help message help-mpi-btl-tcp.txt / invalid if_inexclude
[lanparty:00228] Set MCA parameter "orte_base_help_aggregate" to 0 to see all help / error messages
48
Proszę o dodanie ograniczenia aby w ostatniej rundzie nie można było wysyłać zadań w C++ :)
http://potyczki.mimuw.edu.pl/l/zadania_rozproszone/

Każda instancja programu otrzyma takie samo standardowe wejście.
W przypadku zadań, w których wejście odczytywane jest za pomocą
dostarczonej biblioteki, zachowanie biblioteki będzie takie samo dla
każdej instancji.

Czyli teoretycznie możliwe są zadania z stdin lub z lib (jak MAK), a nawet stdin+lib ;)
Sędzia zwraca mi taki kod
"Fatal: Can't find unit message used by Mak1"

Podczas wysyłania zgłoszenia jako bibliotekę podałem
plik message.pas - ten sam który znajduje się w -- http://potyczki.mimuw.edu.pl/static/attachment/local-windows-pascal.zip

( http://potyczki.mimuw.edu.pl/l/zadania_rozproszone/ )

Macie jakieś sugestie co robię źle ??
Nic nie stoi na przeszkodzie, żeby wszystkim instancjom poza jedną kazać nic nie robić.
Trudno się będzie pewnie wtedy w czasie zmieścić dla wszystkich testów, ale to już inny problem ;)
Zainstalowałem środowisko do testowania zadań rozproszonych(c++, windows7 64bit) i próbuję uruchomić przykładowy program "dzielniki". Niestety dostaję problematyczny komunikat z biblioteki OpenMPI.
Czy ktoś może wie o co chodzi?


C:\Users\Wit\Downloads\dzielniki>\local\run 2 dzielniki_rozproszone.cpp.exe dzielniki1.in
dzielniki1.in
--------------------------------------------------------------------------
WARNING: An invalid value was given for btl_tcp_if_exclude. This
value will be ignored.

Local host: Wit-T
Value: 127.0.0.1/8
Message: Did not find interface matching this subnet
--------------------------------------------------------------------------
[Wit-T:04148] 1 more process has sent help message help-mpi-btl-tcp.txt / invali
d if_inexclude
[Wit-T:04148] Set MCA parameter "orte_base_help_aggregate" to 0 to see all help
/ error messages
16
Mateuszu: Nie jest możliwe. Jeśli któraś instancja programu będzie się lenić, sprawdzarka odrzuci rozwiązanie.
No tak, ale czy możliwe jest policzenie tego na jednym tylko kompie, który przy okazji zwróci wynik?
Nie masz danych wejściowych jako takich - dane do programu uzyskujesz przez komunikację z biblioteką, taką samą dla każdej instancji.
Tylko jedna instancja programu może zwracać wynik.