Zrównoleglanie trudnych pętli w OpenMP
Jest to pierwszy mój wpis związany z moimi studiami. Ostatnio na uczelni mamy sporo programowania równoległego i rozproszonego. Wykorzystujemy przy tym różne technologie, rozwiązania i języki programowania. Na szczególną uwagę zasługuje OpenMP. Biblioteka ta umożliwia łatwy sposób na zrównoleglenie swojego kodu.
Twórcy standardu wyszli z założenia, że najlepiej jest zrównoleglać pętle poprzez podział iteracji między wątki. Na tym głownie polega praca z OpenMP. Nie musimy się przejmować komunikacją między poszczególnymi wątkami, wszystko za nas robi biblioteka. Co więcej, nie musimy od razu tworzyć skomplikowanych algorytmów równoległych. Piszemy najpierw program sekwencyjny, a dopiero później go zrównoleglamy. Taka kolejność pracy redukuje ilość błędów podczas pisania oprogramowania.
Problemy zaczynają się, przy trudnych pętlach. Jeżeli w ciele pętli odwołujemy się do elementów z poprzedniej iteracji, innym indeksie niż aktualny w pętli, lub przy wielokrotnie zagnieżdżonych pętlach. Takie właśnie zadanie dostaliśmy ostatnio na uczelni do rozwiązania. Pozwolę sobie przedstawić niektóre ciekawsze sposoby na poradzenie sobie z tymi problemami. Pewnie nie są one optymalne, ale dają przyśpieszenie kodu o blisko 50% dla procesora dwurdzeniowego.
Pierwszy przykład:
int size = 20000000;
int size2 = 5000;
for ( int i = 1; i < size; i++ ) {
if ( ( x[ i - 1 ] < 0.001 ) && ( x[ i - 1 ] > 2.0 ) ) x[ i ] = 1.0;
else x[ i ] = exp( - x[ i - 1 ] * 0.99999 ) + sin( x[ i - 1 ] ) + cos( x[ i - 1 ] * 0.1 ) ;
if ( ( y[ i - 1 ] < 0.001 ) && ( y[ i - 1 ] > 2.0 ) ) y[ i ] = 1.0;
else y[ i ] = exp( - y[ i - 1 ] * 0.99999 ) + cos( y[ i - 1 ] ) + sin( y[ i - 1 ] * 0.1 );
z[ i ] = ( x[ i - 1 ] + y[ i - 1 ] ) * 0.999999999;
}
Jak widać zrównolenie tej pętli korzystając z dyrektyw openmp (parallel for) jest praktycznie niemożliwe. Elementy tablicy odwołują się do indeksów z poprzedniej iteracji jednocześnie uniemożliwiając prace wielowątkową. Jedynym rozwiązaniem jest podział na trzy pętle. Dwie pierwsze będą wykonywać warunki, trzecia będzie odpowiedzialna za przypisanie do tablicy z[]. Pierwsze pętlę będą przydzielone do sekcji, gdzie każdą z sekcji będzie wykonywał jeden wątek:
#pragma omp parallel sections num_threads(2) private(i) shared(size)
{
#pragma omp section
{
for ( i = 1; i < size; i++ ) {
if ( ( x[ i - 1 ] < 0.001 ) && ( x[ i - 1 ] > 2.0 ) ) x[ i ] = 1.0;
else x[ i ] = exp( - x[ i - 1 ] * 0.99999 ) + sin( x[ i - 1 ] ) + cos( x[ i - 1 ] * 0.1 ) ;
}
}
#pragma omp section
{
for ( i = 1; i < size; i++ ) {
if ( ( y[ i - 1 ] < 0.001 ) && ( y[ i - 1 ] > 2.0 ) ) y[ i ] = 1.0;
else y[ i ] = exp( - y[ i - 1 ] * 0.99999 ) + cos( y[ i - 1 ] ) + sin( y[ i - 1 ] * 0.1 );
}
}
}
#pragma omp parallel for private(i) shared(size,z) schedule(dynamic, 100000)
for ( i = 1; i < size; i++ ) {
z[ i ] = ( x[ i - 1 ] + y[ i - 1 ] ) * 0.999999999;
}
Pewnie zastanawiacie się, po co rozdzielać jedną pętle na, aż trzy. Przecież to trzy razy więcej iteracji i trzy razy więcej pracy. Jest to prawda, ale ta praca jest wykonywana równolegle, dzięki czemu cały fragment kodu wykonuje się o kilkadziesiąt procent szybciej.
Innym przykładem trudnej pętli jest:
for ( int l = 0; l < 3; l++ )
for ( int k = 0; k < 5; k++ )
for ( int i = 0; i < size2; i++ )
for ( int j = 0; j < i; j++ )
z[ i ] += sin( x[ j ] ) + cos( y[ j ] );
Zewnętrzne pętle mają stosunkowo mało iteracji. Na dodatek te iteracje są nieparzyste przez co nie można je podzielić optymalnie na parzystą ilość rdzeni. W wyniku czego, jeden z wątków po wykonaniu swojej pracy zawsze będzie czekał i marnował czas.
Co więcej w najbardziej zagnieżdżonej pętli odwołujemy się w warunku z pętli wyżej. Jednym z sposobów na poradzenie sobie z takim problemem jest:
int max, maxv, j;
maxv=size2*15;
#pragma omp parallel for private(i,j) shared(z, maxv, max) schedule(static, 9375) ordered
for ( i = 0; i < maxv; i++ ) {
max = i%size2;
for ( j = 0; j < max; j++ )
z[ i%size2 ] += sin( x[ j ] ) + cos( y[ j ] );
}
Zewnętrzne pętle złączyliśmy razem, dzięki czemu otrzymaliśmy jedną pętlę. Taką, którą lubi openMP – najbardziej zewnętrzna z największą liczbą iteracji. Co więcej wątki otrzymują stały przydział po 9375 iteracji pętli. Dzięki czemu mają równe obciążenie, a szansa, że skończą pracę w tym samym czasie jest większa.
Ostatnim przykładem będzie zrównoleglanie pętli nie będącej pętlą for:
do {
do {
sum1 += exp( - x[ counter ] * y[ counter ] );
sum2 += y[ counter ] * z[ counter ];
sum3 += exp( - z[ counter ] * x[ counter ] ) ;
counter ++;
} while ( counter < size );
counter = counter2;
} while ( counter2++ < 5 );
Tutaj nie ma innego wyjścia, jak przerobienie tych pętli na pętle for. Jak widać wcale to nie jest takie proste i wymaga dłuższego przemyślenia, po to by wynik był jak najbardziej zbliżony do oryginalnego. Dodatkowo widzimy sporo operacji dodawania. Wykorzystamy tą informacje wstawiając redukcje dla tej operacji.
double sum1, sum2, sum3;
sum1 = sum2 = sum3 = 0.0;
int counter = 0;
int counter2 = 0;
for(;counter2<5;counter2++) {
#pragma omp parallel for private(counter) shared(size) reduction(+:sum1, sum2, sum3) schedule(static, 10000) ordered
for(counter=counter2;counter<size; counter++)
{
sum1 += exp( - x[ counter ] * y[ counter ] );
sum2 += y[ counter ] * z[ counter ];
sum3 += exp( - z[ counter ] * x[ counter ] ) ;
}
}
#pragma omp parallel for private(counter) shared(size) reduction(+:sum1, sum2, sum3) schedule(static, 10000) ordered
for(counter=0;counter<size; counter++)
{
sum1 += exp( - x[ counter ] * y[ counter ] );
sum2 += y[ counter ] * z[ counter ];
sum3 += exp( - z[ counter ] * x[ counter ] ) ;
}
Jak widać czasami opłaca się rozdzielić pętle na kilka części, czasami złączyć kilka pętli w jedną a jeszcze innym razem przerobić pętle na tradycyjnego for’a. Powyższe fragmenty kodu, dają przyspieszenie pracy pomiędzy 40-50% dla procesora dwurdzeniowego z dokładnością wyniku sięgającej 10 cyfr znaczących. Przy większej liczbie rdzeni (wątków), trzeba zmienić przydziały iteracji dla każdego wątku po to by wyniki był jak najbardziej zbliżony do oryginalnego. W kolejnych postach (jak tylko znajdę chwilę czasu) postaram się częściowo omówić podstawowe sposoby na IPC oraz MPI. Później przejdę do programowania wielowątkowego w Javie.
Uniwersytet Śląski, a Jagielloński – pod kątem kierunku informatyka.
Studiuje informatykę. Skończyłem studia licencjackie na Uniwersytecie Śląskim. Już ponad dwa miesiące studiuję na Uniwersytecie Jagiellońskim na Wydziale Fizyki, Astronomii i Informatyki Stosowanej. Sądzę, że najwyższy czas porównać obie uczelnie. Zrobię to opisując każdą z nich w odpowiednich kategoriach: poziom, kadra, infrastruktura, dziekanat, miasto.
Pierwsza różnica, która rzuca się w oczy między dwoma uczelniami to słynny dziekanat. Na UŚ organizacja i praca dziekanatu była bliska ideałowi. Prawie nigdy nie było kolejek, Panie w dziekanacie (które są bardzo ważne) zawsze uśmiechnięte, życzliwe i co najważniejsze pomocne. Będąc na USiu nie doceniałem tego, aż do momentu gdy trafiłem na UJ. Przez pierwsze 2 mc. idąc do dziekanatu trzeba było zarezerwować sobie co najmniej 1,5h na samo stanie w kolejce. Mimo to, że sekretariat był czynny dłużej niż na mojej poprzedniej uczelni, obsługiwał mniej studentów, system informatyczny był lepiej przystosowany (patrz usosweb) to biurokracja, masa papierków i zła organizacja wpływają ujemnie dla UJtu. Przykład: żeby złożyć wniosek o akademik na US wystarczy wypełnić podanie, które łatwo można znaleźć na głównej stronie USia i złożyć je w swoim dziekanacie. W ciągu paru dni jest odpowiedź. Żeby tą samą czynność załatwić na UJ trzeba po pierwsze: mieć konto na usoswebie. Po drugie: załatwić zaświadczenia z uczelni swojego rodzeństwa, że studiują. Po trzecie: trzeba posiadać zaświadczenie o zarobkach całej rodziny. Na samo czekanie na te papiery z urzędu skarbowego trzeba czekać koło tygodnia. Po czwarte: trzeba drukować podanie, wypełnić je i zanieść wszystkie papiery do dziekanatu. Decyzja o otrzymaniu akademika dostaje się po ponad tygodniu. Inny przykład?! Bardzo proszę! Podanie o stypendium naukowe. W USiu Panie w dziekanacie same wiedzą kto jaką ma średnią i same wszystko przyznają. Na UJ, trzeba złożyć podanie, które trzeba wygenerować z usosweba.
Być może czytając to macie negatywne doznania co do UJ i usosweba. Po części tak powinno być, bo co do organizacji tej uczelni można mieć wiele do życzenia. Jednak niektóre elementy są jak najbardziej pozytywne. Na US przedmioty, a może bardziej siatka przedmiotów była narzucana z góry. Co więcej, niektórym osobom z niską średnią narzucano specjalizacje, co było karygodne. Czegoś takiego nie ma na UJ. Przez usosweba wybiera się specjalizacje i podstawowe przedmioty z nią związane. Te przedmioty są obowiązkowe, jednak dla osób które mają większe ambicje, jest całkiem spora pula przedmiotów dodatkowych min. wykładanych w języku angielskim. To duży plus tej uczelni. Osoba tam będąca studiuje to co chce, a nie to co musi.
Kolejnym elementem analizowanym przeze mnie będzie kadra. Nie mam zamiaru oceniać poziomu wiedzy wykładowców z obu uczelni, bo tego raczej się nie da obiektywnie ocenić. Omówię jedynie sposób przekazania tej wiedzy. Nie wiem dlaczego, ale na US tylko kilku prowadzących zajęcia potrafiło w sposób ciekawy przedstawić swój przedmiot. Większość wykładów było usypiających. Wykładowcy nie miałi daru do przekazywania wiedzy. Ich monotonny sposób mówienia, czytanie slajdów z prezentacji, czysta teoria z brakiem praktyki, wiedza z przed kilkunastu lat wpływała negatywnie na odbieranie wykładu jak i frekwencje wśród studentów. Całkowitym przeciwstawieństwem tego stanu rzeczy jest UJ. Tutaj tylko nieliczne osoby mają problemy z wykładaniem przedmiotu. Z chęcią się chodzi i słucha profesorów, ale frekwencja jest nadal zbliżona.
Pozwolę sobie teraz omówić infrastrukturę uczelni, miasta. Studiując w Sosnowcu na WIiNoM nie zwracałem na to uwagi, bo wydawało mi się to standardowe. Uczelnia posiada własną sieć, w budynku jest internet Wi-Fi, akademiki są blisko uczelni, komunikacją miejską można wszędzie dojechać itp. itd. Teraz studiując w obcym mieście mam porównanie i własne refleksje. W UJ istnieje wspomniany wcześniej usosweb z którego korzysta się bardzo często. Służy on nie tylko do drukowania podań, ale i min.:
- rejestracji na przedmioty,
- podglądu aktualnego planu zajęć,
- podglądu aktualnych stanów podań,
- podglądu aktualnych ogłoszeń, komunikatów,
- komunikacji z profesorami i innymi studentami,
- czy nawet zaliczaniem szkoleń (np. BHP – moduł pegaz)
Funkcjonalność i przydatność usosweba jest bardzo duża. System ten dąży w pewnym stopniu do automatyzacji i rezygnacji z dziekanatu. Póki co jeszcze wiele temu brakuje, ale za parę lat na pewno odciąży w znacznym stopniu sekretariat wydziałowy.
W Krakowie komunikacja miejska może nie jest tak duża jak w Silesi, ale na pewno nie mniej nowoczesna. Autobusy, tramwaje, szybkie tramwaje (coś jak metro) są dobrze zorganizowane. Bilety za przejazd posiada się w czymś na wzór elektronicznej portmonetki z PKM Jaworzno. Tyle tylko, że wszystko jest przechowywane na nowej elektronicznej legitymacji studenckiej. Co do jakości podróży odniosę się w przyszłości w innym poście, ponieważ póki co nie miałem jeszcze przyjemności podróżować transportem publicznym w Krakowie.
Oczywiście reszta podstawowych elementów infrastrukturalnych jest bardzo dobra. Usytuowanie uczelni, akademików, dostęp do internetu itp. itd. jest bez zastrzeżeń.
Zostaje jeszcze porównanie samych miast: Sosnowiec/Katowice z Krakowem. I tutaj chyba nie ma co porównywać bo w każdym calu Kraków ma przewagę. Jeżeli ktoś chce się przekonać i poczuć klimat studiowania w tych miastach, wystarczy samemu pojechać do Sosnowca, a później do Krakowa. Różnicę poczuje się od razu.
Jest jeszcze ostatnia kategoria i chyba najważniejsza: poziom. Tutaj UJ z WFAiIS mocno górują nad US WIiNoM. Pamiętam jak na studiach licencjackich uczyłem się na pamięć wzorów, definicji z książek po to by zdać egzamin ustny. Pamiętam jak pisałem programy na kartkach… Czy projektowaliśmy prostownik w programie na komputerze zamiast w rzeczywistości. Albo dyskutowaliśmy o obiektowości bez patrzenia na kod programu. Niestety, ale na USiu jest tylko i wyłącznie teoria. Osoby kończące tą uczelnie, jeżeli gdzieś nie pracują to nie mają żadnego doświadczenia praktycznego i nie mają większych szans na pracę w zawodzie. Na UJocie, na każdym przedmiocie jest praktyka, praktyk i jeszcze raz praktyka. Jest tyle projektów programistycznych do zrobienia, że nie śpi się po nocach. Nie ma praktycznie przedmiotu, gdzie nie ma się styczności z komputerem i programowaniem. Doceniają to nie tylko studenci, ale i pracodawcy. Całe tablice ogłoszeń są zapchane ofertami pracy. Jest ich naprawdę sporo. Dla porównania na USiu było ich tylko kilka (może z 3-4 na raz). Dlatego dla każdego kto ma dylemat przed wyborem uczelni i myśli o przyszłości i nauce polecam UJ. Jeżeli ktoś już pracuje i nie chce tracić czasu na uczelnie, a potrzebuje papierka z uczelni państwowej to niech wybierze UŚ.
To chyba tyle jeżeli chodzi o porównanie tych dwóch uczelni. Jeżeli ktoś ma odmienne zdanie to zapraszam do dyskusji w komentarzach posta.
Zmiany, zmiany, zmiany…
Marzenia… dziwna rzecz.
Co to w ogóle jest marzenie? Coś do czego dążymy? Nasz cel w życiu? Coś nieosiągalnego, co istnieje tylko w świecie fikcji? Albo tylko myśl, która czasami poprawia nam nastrój w danej chwili… Nie wiem… Za trudne pytanie…
Moim marzeniem było studiowanie informatyki. Studiuję. Następnie zdanie licencjata. Udało się! Potem dostanie się na Uniwersytet Jagielloński. I co? I oto jestem tam. Najdziwniejsze jest to, że powinienem teraz skakać i śpiewać z radości. Niestety tak nie jest. Nie cieszę się swoim szczęściem . Pytanie brzmi dlaczego? Ponieważ przez spełnienie tego marzenia, straciłem inne. Może nie rozsądniejsze, ale na pewno przyjemniejsze i równie ważne.
Ktoś powie: „Nie można mieć wszystkiego”. Może i racja, ale ja się nie poddam! Jestem chytrym chamem, który chce mieć wszystko! Zarówno wymarzone studia, pracę, jak i najwspanialszą dziewczynę na świecie! Jak trzeba będzie to nie będę spał po nocach. Zniszczę sobie wątrobę od napojów energetycznych, ale się nie poddam!
Jedyną nadzieje mam, że decyzje, które podjąłem nie okażą się błędne. Tego bardzo nie chcę!
Aktualizacja (29.09.2010 godzina: 23:20)
Już drugi raz mi się to zdarza, że z powodu wydarzeń, które się zdarzyły w ciągu kilku godzin, aktualizuje swój post. Najbardziej boli, gdy marzenia, które miałby być piękne i cudowne ranią.
18-19.09.2010 Weekend w Zawoi
W ostatnich dniach dominowała deszczowa pogoda. Nie zrealizowałem swoich planów wakacyjnych zarówno pod względem zawodowym, wypoczynku i jak innym – równie ważnym. Po raz kolejny okazało się, że zakładanie czegokolwiek nie ma najmniejszego sensu. Jeżeli istnieje coś takiego jak los czy przeznaczenie, to cokolwiek nie uczynimy i tak nasze założenia nie pójdą po naszej myśli tylko torem takim jak jest to „zapisane”. Czasami jak zwrócimy uwagę na symbole, znaki, daty to można dostać dreszczy i nie spać przez całą noc zastanawiając się czy jest ktoś u góry kto nad nami czuwa.
Nie wierzę, że to napisałem. Brzmi tak jakbym w to wierzył, co jest nieprawdą. Prawdą jest, że ostatni weekend całkowicie mnie zaskoczył. Pojechałem w miejsce, w które nie planowałem odwiedzić w te wakacje. Pojechałem z osobami, z którymi nie sądziłem, że pojadę. Była świetna pogoda pomimo tego, że nic tego nie zapowiadało. Wydarzyły się rzeczy, o których bym nigdy nie pomyślał, że się zdarzą.
A po powrocie co? Jestem chyba trochę inny. Wcześniej byłem osobą twardo stąpającą po ziemi, która miała jasny plan na przyszłość i wiedziała czego chce. Teraz jestem pełen wątpliwości. Nie jestem pewien, gdzie będę za następne dwa tygodnie, co będę robił i z kim. Nie lubię takiego stanu rzeczy. Lubię kontrolować mój los i moje życie. Gdy to się zmienia to dystansuję się od otoczenia co wcześniej czy później nie wychodzi mi na dobre…
Poniżej zamieszczam zdjęcie z ostatniego weekendu. Pewnie nie trudno zgadnąć gdzie to było zrobione. Sprzęt to tradycyjnie nikon D70s z szkłem 50mm f/1.8 z filtrem polaryzacyjnym Cokina.
Aktualizacja (21.09.2010):
Nie będę się rozpisywał. Piosenka wszystko powie co ja myślę.
Planowanie wycieczek/wypraw/podróży
Ostatnie dwie moje wycieczki zmusiły mnie do refleksji i zmiany sposobu planowania.
Po pierwsze i najważniejsze. Dobór osób.
Niestety nie posiadam stałej paczki sprawdzonych ludzi, którzy zawsze i wszędzie ze mną pojadą. Dlatego często biorę osoby z którymi nigdzie nie byłem i nie wiem czego mogę się po nich spodziewać. To niestety powoduje późniejsze problemy, poczynając od kondycji poszczególnych członków, kończąc na problemach z dogadaniem się. O tyle o ile problem z kondycją jest do rozwiązania w mniejszym bądź większym stopniu np. idąc wolniej, skracając plan podróży, czy wysyłanie słabszych osób prostszą/krótszą drogą. To często bariery porozumiewawcze są nie do przekroczenia. Zdarzyło mi się już, że osoba którą wydawało mi się, że znam potrafiła strzelać tzw. „fochy”, czy też zaczynała rozmowy na tematy, które są kontrowersyjne przy okazji zmuszając innych do swojego zdania. To niestety powoduje niemiłą atmosferę w grupie i co gorsza jej rozdzielanie. Dlatego moim zdaniem, głównymi kryteriami w doborze osób powinny być cechy: tolerancja, komunikatywność, dojrzałość oraz szeroko rozumiana kultura osobista. Czasami jest lepiej jechać o tą jedną dwie osoby mniej, niż się męczyć przez całą podróż. Bo przecież jedzie się po to by wypocząć i miło spędzić czas, a nie przejmować i opiekować się innymi osobami.
Po drugie. Wybór trasy.
Pamiętać – mapy kłamią! Jeżeli na mapie jest znaczek ruiny zamku to najprawdopodobniej są to ruiny… Sterta kamieni i nic więcej. Jeżeli na mapie jest znaczek jaskinia, to jest to najprawdopodobniej nic innego jak dziura w ziemi, albo niewielka wnęka w ścianie skały. Dobrze jest przed wyjazdem sprawdzić miejsce gdzie chcemy jechać. Wpisać nawet w google grafika nazwę miejscowości, szczytu, atrakcji turystycznych i zobaczyć czego można się spodziewać. Najlepiej oczywiście jest korzystanie z przewodników. Niekoniecznie drogich wersji papierowych, które zazwyczaj opisują wszystko co popadnie i podają ceny z kosmosu. Moim zdaniem lepiej korzystać z stron, forów internetowych na których można dowiedzieć się wszystkiego co nas interesuje o wybranym przez nas miejscu. Na wyprawy górskie dobrym serwisem jest niech-to-szlak Oprócz relacji z wypraw, tras GPS, ocen użytkowników, można zobaczyć zdjęcia i zadać pytania osobom, które tam były. Trzeba się jednak liczyć, że trasa może okazać się kompletną klapą. Pogoda może się trafić nie najlepsza. Ktoś może zachorować albo złapać kontuzje. Wtedy naprawdę jak nie ma dobrej paczki osób, to z złej wyprawy może powstać prawdziwy horror. Dlatego punkt pierwszy w planowaniu jest bardzo ważny.
Po trzecie i chyba ostatnio. Ekwipunek.
Tutaj nie będę wypisywał wszystkiego co trzeba wziąć, bo wtedy zamiast plecaka 20-40-60l należało by wynająć murzyna do noszenia bagażu. Każdy kto jedzie powinien przewidzieć, to co mu będzie potrzebne. Osoby z słabsza formą i mniejszym doświadczeniem nie powinny pakować się na tydzień przy wycieczce na dwa dni. Natomiast osoby z lepszą formą i doświadczeniem powinny podpowiedzieć i pomóc „zielonym”. Jeżeli nie wiesz co wziąć najlepiej jest skontaktować się z kompanami i spytać się co oni biorą. Co dwie głowy to nie jedna, poza tym w dwie osoby na pewno zabierze się więcej niezbędnych rzeczy. I uwaga, tylko niezbędnych! Każdy dodatkowy kilogram po przejściu 20km staje się prawdziwym ciężarem. Dlatego lepiej w zgranej paczcie podzielić się bagażem. Niech jedna osoba weźmie apteczkę, inna mapy i ewentualny sprzęt do nawigacji, ktoś sprzęt fotograficzny, a osobna osoba dokumenty i telefony. Tak by się nie duplikować, a wspierać nawzajem.
Być może powyższe trzy zasady w planowaniu nie są najlepsze i najmądrzejsze, ale z pewnością zapobiegną wielu nieciekawym sytuacjom na trasie (czego nikomu nie życzę).

Zamek w Bobolicach w podczerwieni
Aparat: Nikon d70s
filtr: Cokin P007
Czas naświetlania 1/2s przy f/5.6 i 50mm
Spostrzeżenia i uwagi dotyczące fotografii w podczerwieni.
Ostatnimi czasy sporo robię zdjęć w IR. Na początku zdjęcia mi nie wychodziły, ale obecnie uważam, że mam na tyle doświadczenia, że można się nim podzielić.
Pierwszą ważną rzeczy w fotografii IR jest wybór korpusu. Co ciekawe nie każdy aparat się do tego nadaje. Co jeszcze ciekawsze, większość nowych lustrzanek się do tego nie nadaje! Dlaczego?! Chodzi tutaj o tzw filtr górnoprzepustowy. Większość „puszek” ma przed matrycą założony filtr który odcinka w większym, lub mniejszym stopniu fale podczerwieni. Warto przed inwestowaniem w sprzęt do IR dowiedzieć się czy Twoja lustrzanka ma ten filtr i jak bardzo mocny jest on. Niektórzy zapaleńcy modyfikują swoje korpusy by przystosować je do fal podczerwonych. Radzę jednak dokładnie przemyśleć takie działania, gdyż czasem korzyści są mniejsze, niż późniejsze wady. Osobiście posiadam nikona d70s. Bez żadnej modyfikacji lustrzanki czas naświetlania w biały dzień waha się od 1/2s do 3s. Nie jest to dużo biorąc pod uwagę, że nowsze body mają mocniejsze filtry górnoprzepustowe przez co czas naświetlania może sięgać kilkunastu sekund. Skutkiem tak długiej ekspozycji może być mało ostre zdjęcie, szczególnie jak zawieje wiatr.
Kolejnym wyborem jest filtr IR. Ja używam filtru Cokin P007, głównie ze względu na uniwersalność przy mocowaniu na obiektywy o różnej średnicy gwinta. Jeżeli komuś zależy na jakości to powinien się rozejrzeć za innym filtrem np Hoya IR R72. Przed ostatecznym wyborem, lepiej jeszcze sprawdzić czy posiadany obiektyw nadaje się do IR. Wiem, to może szokować, ale nie każde szkło jest odpowiednie. Niektóre „słoiki” będą pokazywały tzw. hotspoty. Są to koliste przebarwienia na środku kadru. Przed ostatecznym kupnem lepiej się upewnić, że wybrany przez nas obiektyw jest pozbawiony tej wady.
No dobra, załóżmy, że posiadamy cały sprzęt niezbędny do fotografii w podczerwieni. Na czym to polega? Od czego zacząć? Odpowiedzi na te pytania nie są jednoznaczne. Zwykle cała sztuka polega na tym by zrobić takie zdjęcie, żeby po całej produkcji uzyskać niebieskie niebo. Nie jest to proste i nie jest to oczywiście regułą, ale większość osób trzyma się tej zasady. Za każdym razem musimy ręcznie ustawić balans bieli. Zazwyczaj ustawia się go na przedmiotach które chcemy mieć białe na zdjęciu. W 90% przypadków jest to coś zielonego – trawa, drzewa, rośliny. Jeżeli nie wiesz jak to zrobić, lepiej przejrzeć instrukcje obsługi swojego aparatu. Uwaga, balans bieli ustawiamy z założonym filtrem IR! To wbrew pozorem też nie jest trywialne. Często założony filtr IR zaburza pracę światłomierza co uniemożliwia poprawne naświetlenie zdjęcia. Trzeba wtedy zwykle zwiększyć ekspozycje zwykle o 1-1,5 ev. Dokładną wartość korekcji ekspozycji poznasz w praktyce metoda prób i błędów.
Jeżeli Twoja lustrzanka nie była przerabiana to niestety zazwyczaj czasy naświetlania są na tyle długie, że nie obejdziesz się bez statywu. Jak ją przerobiłeś to możesz się spodziewać czasów nawet rzędu 1/200s. Co jest bardzo dobrym wynikiem, który teoretycznie umożliwia zrobienie ostrego zdjęcia z ręki z obiektywem o długości 200mm.
Po wypstrykaniu kilku zdjęć i zgraniu je na kompa pora je obrobić. Jeżeli posiadasz rawy to od razu przerób je do jpega najwyższej jakości. Otwórz Photoshopa (w moim wypadku CS5) i zacznij zabawę.
Po pierwsze polecam użyć: Filtr->Szum->Kurz i rysy (promień 1px).
Po drugie używamy narzędzia: Obraz->Auto-tony (Shift+Ctrl+L). Nada to większe nasycenie kolorów w finalnym zdjęciu.
Po trzecie włączamy narzędzie: Obraz->Dopasowania->Mieszanie kanałów. Tam dla kanału czerwonego ustawiamy kolor czerwony na 0% a niebieski na 100%, oraz dla kanału niebieskiego odwrotnie: niebieski na 0% a czerwony na 100%.
Po tych operacjach powinniśmy widzieć gotowe zdjęcie z niebieskim niebem (zakładając, że nastawiliśmy balans bieli na coś zielonego). Oczywiście jeżeli komuś mało można się dalej bawić z ustawieniami aparatu i/lub opcjami PS.
Zachód słońca na Przegibku.
Aparat nikon d70s, filtr Cokin P007,
balans bieli ustawiony na złotawą trawę,
czas naświetlania 4s przy f/8.
Podsumowanie weekendu
Najwyższy czas podsumować ostatni weekend w górach. Zdążyłem wypocząć, wyspać się i ostudzić emocje, by wszystko opisać na spokojnie. No, ale zacznijmy od początku.
Nie wdając się w szczegóły powiem tylko tyle, że zawsze gdziekolwiek jadąc trzeba zrobić pewien zapas czasu na niespodziewane wydarzenia. Podczas pierwszego dnia wycieczki byłem świadkiem tego, że jak coś może nie pójść to na pewno nie pójdzie. Na szczęście pogoda byłą wymarzona, która wszystko zrekompensowała! Lepszej nawet nie mogłem sobie wyobrazić. Trasa nie była męcząca, a na dodatek bardzo malownicza. Gdybym miał trochę więcej czasu na pewno dłużej bym się napawał przyrodą.
Schronisko na Przegibku jest pierwszorzędne. Nieźle położone, za darmo prysznic dla turystów, ceny przystępne. Do tego pełno ławek z stolikami oraz miejsce na ognisko i grilla. Tak powinno być wszędzie.
Noc jak zwykle w górach była przecudna. Cisza, spokój i niezwykle gwieździste niebo na którym widać drogę mleczną. Szkoda tylko, że nie udało mi się tego uchwycić.
Pogorszenie przyszło z rana. O 3:00 nad ranem ruszyliśmy z latarkami na Wielką Rycerzową by móc oglądać wschód słońca. Niestety po drodze widzieliśmy jak zaczyna się błyskać. Ledwo jak dotarliśmy do schroniska rozpętała się burza. Nie było widać wschodu, a trasa powrotna zamieniła się w bagno. Na szczęście zdołaliśmy wrócić do samochodu i do domu. Co prawda byliśmy cali przemoczeni i zmęczeni, ale przynajmniej nam się nie nudziło. Przygoda jakich mało – będzie co wspominać.
Poniżej załączam zdjęcia panoramy z Wielkiej Raczy. Jedno zwykłe, drugie w IR (filtr: Cokin P007):


Zachód słońca w IR
Dwa dni temu umówiłem się z starym kolegą na robienie zdjęć. Akurat wtedy sobie przypomniałem o filtrze IR Cokin’a, który kupiłem prawie rok temu. Poszliśmy i wylądowaliśmy na dachu najwyżej położonego bloku w okolicy. Trochę żałuję, że nie było nas tam dzień wcześniej. Wtedy po burzy był niesamowity zachód słońca. Takie chmury jak wtedy trafiają się dosłownie raz na 2 miesiące… A ja to przegapiłem… No, ale nic… Co się stało to się nie odstanie.
Siedzieliśmy ponad godzinę na dachu, gadając i robiąc zdjęcia. Na dowód tego pokazuję poniżej chyba najlepsze zdjęcie jakie wtedy zrobiłem. Później przeszliśmy do pubu, gdzie gadaliśmy, piliśmy paulanera i oglądaliśmy nasze dzieła
.
Teraz czekam na najbliższy weekend, a dokładnie na wypad w góry!
Adobe Photoshop CS5 – Błąd (0xc000001d)
Ostatnio formatowałem mojego starego blaszaka. Po trzech latach bez formata należało mu się porządne sprzątanie. Na czystym systemie pokusiłem się o zainstalowanie najnowszego Photoshop’a CS5 (załóżmy, że to wersja trial
).
Wcześniej obejrzałem wiele filmików przedstawiających dosłownie magiczne możliwości nowego programu Adobe, między innymi: PS jako wspaniałe narzędzie dla fotografów, czy umożliwiające niezwykłe fotomontarze, oraz filmik prześmiewczy z nowych możliwości PS’a.
Nie mogłem się doczekać wypróbowania dosłownie wszystkiego. Mój zapał ostudził błąd pojawiający się podczas włączania:
The application was unable to start correctly (0xc000001d). Click OK to close the application.
Przegrzebując cały internet dowiedziałem się, że to wina moje starego procesora (Athlon XP 2400+) który nie obsługuje najnowszych instrukcji SSE. Nadzieja umierała wraz z przeglądaniem kolejnych stron, nigdzie nie było rozwiązania…
Wreszcie na forum Adobe znalazłem interesujący mnie temat wraz z rozwiązaniem. Wyszła łatka do PS CS5 naprawiająca ten błąd. Znalazłem też coś ciekawego. Sterowniki na WinXp dla procesorów AMD. Oczywiście też zassałem, zainstalowałem i działają. Niestety nie zrobiłem żadnych testów przed instalacją więc nie mam żadnych dowodów, że coś poprawiają. Jednak moje empiryczne odczucia są bardzo pozytywne. Komp na serio chodzi lepiej (pewnie to zasługa formata, ale kto wie
).
Dodaj komentarz


