Lista zadań nr 4N

Uwaga! W przypadku tej listy słuchacz rozwiązuje tylko jedno, wybrane zadanie!

Zadanie 2 (4 pkt)

Napisz program wczytujący plik w formacie BMP (wykorzystaj gotowe narzędzia, np. QDBMP) i przekształcający zapisany w nim obraz kolorowy na obraz w skali szarości; zaimplementuj rozwiązanie z użyciem CPU, a następnie wykorzystaj infrastrukturę CUDA do wykonania konwersji na maksymalnej liczbie piksli jednocześnie; zapisz przekształcony plik pod nową nazwą. Dokonaj pomiarów czasu konwersji w obu wariantach dla dużych (min. 1024x1024 px). Upewnij się, że oba pliki wyjściowe (ten z CPU i ten z GPU) są identyczne.

Zadanie 3 (5 pkt)

Napisz program wczytujący plik w formacie BMP (wykorzystaj gotowe narzędzia, np. QDBMP) i przekształcający zapisany w nim obraz kolorowy poprzez zaaplikowanie filtru medianowego 3x3; zaimplementuj rozwiązanie z użyciem CPU, a następnie wykorzystaj infrastrukturę CUDA do wykonania konwersji na maksymalnej liczbie piksli jednocześnie; zapisz przekształcony plik pod nową nazwą. Rozważ konieczność użyj synchronizacji między wątkami. Dokonaj pomiarów czasu konwersji w obu wariantach dla dużych (min. 1024x1024 px)
obrazów. Upewnij się, że oba pliki wyjściowe (z CPU i z GPU) są identyczne.

Uwaga: w celu poprawnego łącznego skompilowania pliku qdbmp.c i kodu z pliku .cu należy:

  1. dołączyć plik nagłówkowy qdbmp.h w sposób następujący:

    extern "C" {
    #include "qdbmp.h"
    }

  2. wykonać łączną kompilację poleceniem:

    nvcc qdbmp.c kod.cu -o kod