Bo to zadanie na zaliczenie z pewnego przedmiotu trwającego jeden semestr i chciałbym wiedzieć na jakim poziomie uczelnia stoi ->
1)Skopiować plik input.dat z katalogu w:\pw. Plik ten zawiera 2^24 liczb typu double na dysk
lokalny (rozmiar: 16M liczb double czyli 128MB). Uwaga! samo skopiowanie jeszcze nie jest
podstawą zaliczenia :-)
2) Zadanie polega na znalezieniu najmniejszej i największej liczby typu double znajdującej się w
pliku. Można posłużyć się dowolnym językiem programowania (np. Java, c#, C++)
3) (Poziom podstawowy) Aplikacja sekwencyjna przeglądająca zawartość pliku. Zastanowić się
nad odpowiednim buforowaniem. Nie czytać całego pliku do bufora ale też nie przetwarzać
pojedynczych liczb. Posługujemy się funkcjami np. fread i fopen lub CreateFile i ReadFile.
4) Wykorzystać przetwarzanie współbieżne w celu przyspieszenia działania programu. Liczba
wątków roboczych ma być parametrem (określonym za pomocą dyrektywy #define ).
5) Należy zadbać nie tylko o zrównoleglenie przeszukiwania ale również o zrównoleglenie
operacji czytania pliku i szukania. Tj. gdy jeden wątek czyta inne już mogą przeszukiwać swoje
bufory.
6) Zadbać o optymalne wykorzystanie pamięci. Tzn. wątki działają na buforach o ograniczonym
rozmiarze.
7) (Dodatkowo) Objaśnić w jakich przypadkach może opłacić się również zrównoleglenie
operacji IO działających na jednym pliku. Wątki w takim przypadku otworzyłyby każdy
oddzielnie plik do czytania w trybie współdzielonym.
8) (Dodatkowo) Ustalić eksperymentalnie optymalny rozmiar bufora dla operacji czytania.
9) (Dodatkowo) Sformułować wnioski dot. optymalnej liczby równoległych wątków.