Oglądaj/Otwórz
Transkrypt
Oglądaj/Otwórz
Optymalizacja zapytań w środowisku heterogenicznym CPU/GPU dla baz danych szeregów czasowych Autoreferat rozprawy doktorskiej Piotr Przymus 19 marca 2014 1 Wstęp W ostatnich latach przetwarzanie i badanie szeregów czasowych zyskało spore zainteresowanie. Rosnące ilości danych i potrzeba ich sprawnego przetwarzania nadały nowe kierunki prowadzonym badaniom, które uwzględniają również wykorzystanie rozwiązań sprzętowych. Procesory graficzne (GPU) mają znacznie więcej zastosowań niż tylko wyświetlanie obrazów. Coraz częściej są wykorzystywane przy rozwiązywaniu problemów obliczeniowych ogólnego zastosowania, które mogą spożytkować możliwości przetwarzania masywnie równoległego. Wiele źródeł potwierdza skuteczność GPU zarówno w nauce, jak i w zastosowaniach w przemyśle. Jest jednak kilka kwestii związanych z użyciem GPU jako koprocesora w bazach danych, które trzeba mieć na uwadze. Po pierwsze, wszystkie obliczenia na GPU są poprzedzone czasochłonnym transferem danych. W pracy zaprezentowano rezultaty badań dotyczących lekkich i bezstratnych algorytmów kompresji w kontekście obliczeń GPU i systemów baz danych dla szeregów czasowych. Omówione zostały algorytmy, ich zastosowanie oraz szczegóły implementacyjne na GPU. Rozważono wpływ algorytmów na wydajność przetwarzania danych z uwzględnieniem czasu transferu i dekompresji danych. Ponadto, zaproponowany został adaptacyjny planer kompresji danych, który wykorzystuje różne algorytmy lekkiej kompresji w celu dalszego zmniejszenia rozmiaru skompresowanych danych. Kolejnym problemem są zadania, które źle (lub tylko częściowo) wpisują się w architekturę GPU. Może być to związane z rozmiarem lub rodzajem zadania. W pracy zaproponowany został model heterogenicznych obliczeń na CPU/GPU. Przedstawiono metody optymalizacji, poszukujące równowagi między różnymi platformami obliczeniowymi. Opierają się one na heurystycznym poszukiwaniu planów wykonania uwzględniających wiele celów optymalizacyjnych. Model leżący u podstaw tego podejścia naśladuje 1 rynki towarowe, gdzie urządzenia są traktowane jako producenci, konsumentami są natomiast plany zapytań. Wartość zasobów urządzeń komputerowych jest kontrolowana przez prawa popytu i podaży. Zastosowanie różnych kryteriów optymalizacji pozwala rozwiązać problemy z zakresu heterogenicznego przetwarzania zapytań, dla których dotychczasowe metody były nieskuteczne. Ponadto proponowane rozwiązania wyróżnia mniejsza złożoność czasowa i lepsza dokładność. W rozprawie omówiono przykładowe zastosowanie baz danych szeregów czasowych: analizę zachowań racicznicy zmiennej (Dreissena polymorpha) opartą na obserwacji rozchyleń muszli zapisanej w postaci szeregów czasowych. Proponowany jest nowy algorytm oparty na falkach i funkcjach jądrowych (ang. kernel functions), który wykrywa odpowiednie zdarzenia w zebranych danych. Algorytm ten pozwala wyodrębnić zdarzenia elementarne z zapisanych obserwacji. Ponadto proponowany jest zarys systemu do automatycznego oddzielenia pomiarów kontrolnych i tych dokonanych w stresujących warunkach. Jako że małże z gatunku Dreissena polymorpha są znanymi wskaźnikami biologicznymi, jest to istotny krok w kierunku biologicznych systemów wczesnego ostrzegania. 2 Opis wyników rozprawy 2.1 Uwagi na temat architektury bazy danych dla szeregów czasowych Serwer Źródło danych + TS kolektor Żródło danych Planer zapytań Kolektor Baza NoSQL Planer zapytań Zarządca Klient CPU CPU Silnik zapytań Silnik zapytań GPU GPU CPU CPU Silnik zapytań Silnik zapytań GPU Rysunek 1: Ogólna architektura bazy danych dla szeregów czasowych W rozprawie rozważane są problemy związane z bazami danych dla szeregów czasowych z obsługą GPGPU. Typowa architektura bazy danych dla szeregów czasowych składa się z trzech warstw: warstwy przechowywania danych, modułu wprowadzania danych oraz silnika zapytań. Założenia dotyczące architektury opisane poniżej (porównaj z Rysunkiem 1) były punktem wyjścia dla prowadzonych badań. 2 Aby osiągnąć wysoką wydajność i skalowalność, jako magazyn bazy danych może być wykorzystana jedna z baz danych NoSQL zgodnych z podejściem Big Table. Znane są przykłady wykorzystania w tym kontekście baz HBase i Cassandra [7, 13]. Kolektory danych są to elementy odpowiedzialne za gromadzenie oraz wprowadzanie do bazy danych obserwacji pochodzący z różnych źródeł. Proces ten musi uwzględniać fakt, że źródła danych ciągle generują nowe wartości. Zazwyczaj dane pochodzą z prowadzonych pomiarów lub monitorowania systemu operacyjnego, baz danych, serwerów sieciowych lub urządzeń sieciowych (zobacz opis narzędzi do monitorowania OpenTSDB [13]). System nie powinien w żaden sposób ograniczać zbieranych danych, optymalnie dane powinny być przechowywane bezstratnie. W większości zastosowań bezpiecznie jest założyć, że przetwarzane szeregi czasowe nie są równomiernie próbkowane. Szeregi czasowe są zapisywane jako pary znacznik czasu oraz wartości pomiaru (ti , vi ). Każdy szereg czasowy powinien być jednoznacznie identyfikowalny poprzez metadane. Można założyć że rozproszone kolektory danych (dopuszcza się wiele instancji, w tym takie które pracują bezpośrednio na źródle danych) dostarczają dane bezpośrednio do składu danych. Aby zapewnić optymalne przechowywanie danych zarządca powinien być używany do organizacji i kompresji danych. Ponadto, warto przyjąć, że szeregi czasowe są podzielone na rozłączne fragmenty i przechowywane w oddzielnych rekordach. Użytkownicy mogą wykonywać zapytania przy użyciu dowolnej instancji planera zapytań, efektem czego będzie stworzenie rozproszonego planu zapytań. Stworzony plan zapytań może być przetwarzany przy wykorzystaniu heterogenicznych procesorów GPU/CPU. Planer zapytań powinien uwzględniać obciążenie poszczególnych jednostek w środowisku. Wygenerowany plan zapytania musi uwzględniać wiele czynników: szybkość CPU i GPU, dostępną pamięć, przepustowość pamięci, rozmiar danych, stopień kompresji i szybkość połączenia sieciowego. Ze względu na wymienione czynniki, nie wszystkie operacje mogą zostać przyspieszone poprzez wykorzystanie GPU. Dlatego zapytania powinny być wykonywane na GPU tylko wtedy, kiedy transfer danych z CPU na GPU jest amortyzowany przez szybsze przetwarzanie danych [4]. Jako że przetwarzanie zapytań w architekturze typu klient-serwer może przynieść wymierne korzyści [10], warto uwzględnić przypadek, w którym wykorzystywane są również zasoby sprzętowe po stronie klienta. 2.2 Metody lekkiej kompresji dla CPU/GPU Wyniki badań dotyczących stosowania algorytmów lekkiej kompresji w obliczeniach typu GPGPU są opisane w publikacjach [15–17]. Zastosowanie metod lekkiej kompresji w systemach baz danych może znacząco poprawić ich wydajność [24, 25]. Systemy baz danych dla szeregów czasowych nie są wyjątkiem. Metody lekkiej kompresji mogą w istotny sposób poprawić wydajność takich systemów. Związane jest to z tym, że metody te mają duży wpływ na rozmiar oraz wydajność składu danych systemu. Algorytmy lekkiej kompresji projektowane są w taki sposób, aby przepustowość dekompresji była większa od przepustowości transferu danych z nośnika danych. Wzrost wydajności systemu bazodanowego jest więc związany ze wzrostem przepustowości danych. 3 Ponadto, metody lekkiej kompresji mogą poprawić wydajność obliczeń GPGPU w zastosowaniach bazodanowych [9, 15–17]. Dzieje się tak ze względu na mniejszy narzut na transmisję danych ze składu danych do pamięci RAM i dalej z pamięci RAM do globalnej pamięci urządzenia. Ponadto, w niektórych zastosowaniach, można dekompresować dane w locie, tylko na czas obliczeń. Dzięki temu można także poprawić czas dostępu do danych wewnątrz karty GPU. Takie podejście może być wykorzystane również w ogólnym kontekście obliczeń GPGPU, a w szczególności w problemach intensywnego przetwarzania danych. Algorytmy lekkiej kompresji koncentrują się nie tylko na rozmiarze skompresowanych danych, ale są projektowane w taki sposób, aby w pierwszej kolejności poprawić przepustowość dekompresowanych danych. W związku z tym, warto rozważyć kaskadowe plany lekkiej kompresji, które wykorzystują wiele algorytmów lekkiej kompresji w celu poprawienia współczynnika kompresji [9, 17]. Kaskadowe plany kompresji są bardziej wymagające obliczeniowo, co z kolei może zredukować przepustowość dekompresji danych. Dlatego ważne jest, aby znaleźć równowagę pomiędzy stopniem kompresji a przepustowością dekompresji. Ze względu na różne pochodzenie danych, szeregi czasowe różnią się swoją charakterystyką. Również różne fragmenty tego samego szeregu czasowego mogą mieć zróżnicowaną charakterystykę. Dlatego planer kompresji powinien być w stanie stosować różne plany kompresji dla różnych fragmentów szeregów czasowych [17]. Reasumując, w pracy [17] udało nam się poprawić wyniki wcześniej przedstawione przez Fang i innych w [9] poprzez: • zaproponowanie nowych efektywnych implementacji trzech algorytmów lekkiej kompresji wykorzystujących mechanizm „Patch” danych dla platformy GPU, • poprawienie niektórych z wcześniej prezentowanych implementacji algorytmów (np. poprzez dopuszczenie kodowania bitowego o dowolnej długości z przedziału [2, . . . , 32] – w przeciwieństwie do pracy [9], gdzie algorytmy dopuszczały tylko kodowania wykorzystujące wielokrotności bajtu). Ponadto zaprezentowaliśmy koncepcję dynamicznego planera lekkiej kompresji dla szeregów czasowych [15], adaptującego się do zmiennych właściwości szeregów czasowych. Następnie wykazaliśmy, że lekka kompresja może znacznie poprawić wykorzystanie GPGPU przy obliczeniach intensywnych ze względu na dane, a w szczególności w zastosowaniach związanych z przetwarzaniem szeregów czasowych [15–17]. Wreszcie, udało się pokazać, że w pewnych zastosowaniach możliwe jest poprawienie czasu dostępu do pamięci wewnątrz GPU poprzez wykorzystanie dekompresji w locie. 2.3 Przetwarzanie zapytań dla szeregów czasowych z użyciem CPU/GPU Tematyka przetwarzania szeregów czasowych jest omawiana w następujących publikacjach [15, 16, 18, 19]. Zagadnienie podobieństwa pomiędzy szeregami czasowymi jest ważnym aspektem szerszego problemu z zakresu eksploracji danych szeregów czasowych. Wiele z zagadnień 4 eksploracji szeregów czasowych opiera się o pojęcie podobieństwa szeregów czasowych. Przykładowo, zapytania typu: „query by content”, „k-nearest neigbors” czy „-range”, są to znane zagadnienia w dziedzinie eksploracji danych szeregów czasowych, których działanie uzależnione jest od miary podobieństwa szeregów czasowych [8]. W publikacji [15] omówiony został problem dopasowania całych szeregów poprzez obliczenie odległości Hamminga jako funkcji podobieństwa z wykorzystaniem obliczeń na GPU. Pomimo że sama implementacja funkcji odległości Hamminga na GPU jest wydajna obliczeniowo, transfer danych z pamięci RAM do pamięci na GPU jest głównym problemem i znacząco redukuje wydajność GPU w takich zastosowaniach. Z tego powodu konieczne było zastosowanie metod lekkiej kompresji (zobacz paragraf 2.2), aby wyeliminować wąskie gardło, którym jest transfer danych [15]. Z powodzeniem przeprowadzone zostały eksperymenty z innymi miarami podobieństwa dla szeregów czasowych, w szczególności z odległością euklidesową oraz metodą Dynamic Time Warping (DTW) [14, 21]. W obu przypadkach udało się zmniejszyć narzut związany z transferem danych. Jednakże w przypadku DTW problem był na tyle złożony obliczeniowo, że poprawa transferu danych nie wpłynęła znacząco na wydajność całości. W pracy [17] omówiono implementacje na GPU efektywnych algorytmów przetwarzania i transformacji szeregów czasowych, opartych na operacjach realizowanych w OpenTSDB [13]. W artykule przedstawiono algorytmy redukcji, interpolacji i agregacji danych, czyli powszechnie realizowane zadania w wielu bazach danych dla szeregów czasowych. Podobnie jak w poprzednim przypadku, w celu pełnego wykorzystania potencjału GPU w obliczeniach, należało rozwiązać problem transferu danych. Raz jeszcze wykorzystanie algorytmów lekkiej kompresji okazało się skuteczne. Pomimo tego, że badania przedstawione w publikacjach [18, 19] koncentrują się głównie na zagadnieniach związanych z systemem biomonitoringu, warto zauważyć, że system w dużym stopniu wymaga wsparcia ze strony bazy danych dla szeregów czasowych. W systemie wykorzystywane są różne techniki eksploracji danych, a w szczególności filtrowanie danych, dopasowywanie wzorców, ekstrakcja cech czy klasyfikacja szeregów czasowych. Pomimo że metody zastosowane w systemie monitoringu biologicznego nie zostały dotychczas zrealizowane na GPU, to dla niektórych z wykorzystywanych operacji takie implementacje istnieją. W szczególności, implementacja dyskretnej transformaty falkowej na GPU została przedstawiona w [23], natomiast wyszukiwanie oparte na k-NN na GPU było omawiane w [11, 12]. Wyniki tych badań pozwolą w przyszłości na stworzenie zaawansowanego systemu baz danych dla szeregów czasowych ze wsparciem GPU. 2.4 Model dwucelowy optymalizacji planów zapytań w heterogenicznych środowiskach CPU/GPU Badania nad optymalizacją zapytań w heterogenicznych środowiskach CPU/GPU zostały omówione w publikacji [20]. Dotychczasowe badania wskazują, że wiele zadań systemu bazodanowego może być przyspieszone poprzez wykorzystanie obliczeń na kartach GPU [1–6, 15–17, 22]. Jednakże, należy wcześniej rozwiązać kilka problemów z tym związanych. W rozprawie 5 zostały już omówione metody lekkiej kompresji pozwalające poprawić przepustowość obowiązkowego transferu danych z CPU do GPU (zobacz rozdział 2.2). Nie rozwiązuje to jednak wszystkich problemów. Jednostki GPU są głównie zoptymalizowane pod kątem obliczeń numerycznych, dlatego tylko wybrane operacje bazodanowe mogą w pełni wykorzystać GPU. Ponadto, niewielkie zestawy danych są również problemem. W przypadku zbyt małych danych, wzrost wydajności może być nieznaczny lub wręcz ujemny. Dlatego ważne jest, aby wykonywać obliczenia zarówno na CPU jak i na GPU [20]. W rozprawie rozważane są obliczenia w heterogenicznym środowisku CPU/GPU. Omawiana jest metoda optymalizacji poszukująca równowagi między tymi dwoma platformami. Metoda opiera się na heurystycznym poszukiwaniu planów wykonania optymalnych w sensie Pareto ze względu na dwa cele z uwzględnieniem wielu jednoczesnych zapytań. Planer zapytań może korzystać z jednego z trzech obsługiwanych typów optymalizacji: • czas (minimalizacja czasu przetwarzania), • koszt (minimalizacja kosztów przetwarzania), • oba cele (minimalizacja łącząca czas i koszt). Optymalizacja względem kosztu jest oparta o model finansowy wzorowany na rynku surowców, gdzie urządzenia są traktowane jako producenci a zapytania są interpretowane jako konsumenci zasobów. Koszt wykorzystania zasobów jest kontrolowany przez prawa popytu i podaży. Wyniki eksperymentalne są bardzo obiecujące. Uzyskano dobry poziom równoważenia obciążenia w połączeniu z lepszymi wynikami optymalizacji niż w innych pracach [20]. Co więcej, omawiane rozwiązanie oferuje mniejszą złożoność obliczeniową w porównaniu do innych metod wykorzystywanych w bazach danych ze wsparciem GPU. 2.5 Przykładowe zastosowania W pracach na temat systemu biomonitoringu opisane zostały niektóre zastosowania baz danych dla szeregów czasowych. Publikacja [19] stanowi rozszerzenie wyników badań wcześniej przedstawionych w [18]. Biomonitoring skażenia wody jest jednym z ważnych aspektów ochrony zdrowia i środowiska. Wiele istniejących systemów monitorowania bada wodę tylko w wąskim zakresie substancji i bez ciągłej kontroli pracy. Z tego powodu, systemy oparte o żywe organizmy budzą coraz większe zainteresowanie i zyskują coraz większą popularność. Niektóre gatunki małży są znanymi bioindykatorami i mogą być użyte przy tworzeniu biologicznych systemów wczesnego ostrzegania. Takie systemy używają długoterminowych obserwacji aktywności bioindykatora w celu monitorowania środowiska. W tych badaniach, analizowane są obserwacje zachowań małży z gatunku Dreissena polymorpha w celu wykrycia ewentualnych zagrożeń. Ponieważ obserwacje zachowań małży są wykonywane poprzez pomiar rozwarcia między muszlami w czasie, w naturalny sposób można wykorzystać system bazy danych dla szeregów czasowych. Opisane podejście umożliwia automatyczną ekstrakcję zachowań, rozróżnienie pomiędzy warunkami kontrolnymi i wywołującymi stres, a nawet rozróżnienie pomiędzy różnymi substancjami stresującymi. W tym celu wykorzystywane są różne techniki eksploracji i przetwarzania danych, takie jak 6 transformata falkowa, filtry, czy metody poszukiwania wzorców, a także ekstrakcja cech i klasyfikacja fragmentów szeregów czasowych. 2.6 Konkluzje W tej rozprawie doktorskiej przedstawione zostało zagadnienie optymalizacji zapytań w heterogenicznym środowisku CPU/GPU w kontekście baz danych dla szeregów czasowych. Pokazano, że poprzez użycie kart GPU jako koprocesora w bazie danych dla szeregów czasowych, można znacząco poprawić wydajność przetwarzania zapytań [15, 17]. Aby uzyskać wzrost wydajności należy jednak rozwiązać kilka istotnych kwestii związanych z przetwarzaniem na kartach GPU. Jednym z problemów jest czasochłonny transfer danych pomiędzy CPU i GPU, który poprzedza większość obliczeń GPU. W rozprawie rozważane jest wykorzystanie metod lekkiej kompresji w celu zminimalizowania czasu potrzebnego na transfer danych, dzięki czemu można poprawić wydajność przetwarzanie danych. Omawiane są algorytmy lekkiej kompresji, szczegóły ich wykonania oraz możliwe zastosowania w kontekście GPGPU [15–17]. Przedstawione są zarówno nowe implementacje jak i rozszerzenia niektórych istniejących algorytmów na platformie GPU. Ponadto przedstawiona jest koncepcja adaptacyjnego planera lekkiej kompresji danych [17]. Uzyskane współczynniki kompresji proponowanego rozwiązania, jak również wysoka przepustowość dekompresji na GPU, są atrakcyjnym rozwiązaniem dla baz danych ze wsparciem ze strony GPU. Kolejną rozważaną kwestią związaną z wykorzystaniem GPU jako koprocesora w środowisku bazy danych jest odpowiedni dobór zadań bazodanowych wykonywanych na GPU. Nie wszystkie zadania dobrze wpisują się w model obliczeń GPU. Może to być związane z rozmiarem lub typem zadania. W rozprawie omawiany jest model optymalizacji obliczeń w heterogenicznych środowiskach CPU/GPU [20]. Opisane podejście bazuje na modelu ekonomicznym, który naśladuje rynki towarowe i wykorzystuje optymalizację dwucelową, która łączy cele kosztu i czasu wykonania zapytania. Proponowana jest heurystyczna metoda poszukiwania optymalnych planów zapytań. Wstępne wyniki są bardzo obiecujące i pozwalają uzyskać zrównoważone obciążenie symulowanych urządzeń w połączeniu z lepszymi wynikami optymalizacji niż w wcześniejszych metodach [20]. Wreszcie omawiane są badania związane z monitorowaniem eksperymentu biologicznego. Jest to przykład zastosowań dla baz danych dla szeregów czasowych. W pracy analizowane są obserwacje zmiany rozwarcia między muszlami racicznicy zmiennej. Obserwacje te są oczywiście zbierane w postaci szeregów czasowych. Proponowany jest nowy algorytm oparty na transformacie falkowej i metodach jądrowych, który dokonuje ekstrakcji zachowań poprzez analizę szeregu czasowego obserwacji [18, 19]. Automatyczna ekstrakcja zdarzeń znacząco ułatwia dalsze badania nad zachowaniem małży z gatunku racicznica zmienna. Ponadto, przedstawione są wyniki wskazujące, że zastosowania tego algorytmu mogą być znacznie szersze. Algorytm może zostać wykorzystany w procesie automatycznej klasyfikacji zachowań małży w zależności od stanu otaczającego środowiska [19]. Jest to ważny etap na drodze ku stworzeniu zaawansowanego systemu 7 biomonitoringu środowiska w oparciu o ten gatunek małży. 2.7 Potencjalne kierunki kontynuacji badań W przyszłości planowany jest dalszy rozwój metod przedstawionych w tej rozprawie doktorskiej. W kontekście baz danych dla szeregów czasowych planowane jest rozszerzenie metod przetwarzania zapytań przy użyciu GPU, a w szczególności przetwarzanie zaawansowanych zapytań i eksploracji danych szeregów czasowych. Rozważana jest także adaptacja proponowanych metod na potrzeby systemów monitoringu przemysłowego typu SCADA. Planowane są również szersze badania na temat zastosowania algorytmów lekkiej kompresji w bardziej ogólnym kontekście obliczeń GPGPU. W szczególności interesująca jest możliwość wykorzystania tych metod w kontekście różnych architektur wspierających model obliczeń SIMD. Planowana jest również kontynuacja badań na temat dynamicznego planera kompresji, w szczególności badania nad przetwarzaniem częściowo zdekompresowanych danych oraz wsparcie dla innych struktur danych (na przykład dla grafów). Ponadto planowana jest szczegółowa ocena proponowanego modelu przetwarzania w heterogenicznych środowiskach CPU/GPU, a zwłaszcza badanie wpływu parametrów na zachowanie modelu oraz ocena modelu w kontekście wyzwań Hybrid Query opisanych w pracach [1–6]. Rozważane jest też rozszerzenie tego modelu poza tematykę koprocesorów. Wreszcie, planowane są dalsze badania nad metodami analizy zachowań związanych z małżami z gatunku racicznica zmienna, z celem opracowania zaawansowanego systemu monitoringu biologicznego wody. Literatura [1] Breß, S. and Saake, G. Why it is time for a HyPE: A hybrid query processing engine for efficient GPU coprocessing in DBMS. Proceedings of the VLDB Endowment, 6(12):1398–1403, 2013. [2] Breß, S., Beier, F., Rauhe, H., Schallehn, E., Sattler, K.-U., and Saake, G. Automatic selection of processing units for coprocessing in databases. In Advances in Databases and Information Systems, pages 57–70. Springer, 2012. [3] Breß, S., Mohammad, S., and Schallehn, E. Self-tuning distribution of DB-operations on hybrid CPU/GPU platforms. Grundlagen von Datenbanken, CEUR-WS, pages 89–94, 2012. [4] Breß, S., Geist, I., Schallehn, E., Mory, M., and Saake, G. A framework for cost based optimization of hybrid CPU/GPU query plans in database systems. Control and Cybernetics, pages 27–35, 2013. [5] Breß, S., Heimel, M., Siegmund, N., Bellatreche, L., and Saake, G. Exploring the design space of a GPU-aware database architecture. New Trends in Databases and Information Systems, pages 225–234, 2013. [6] Breß, S., Schallehn, E., and Geist, I. Towards optimization of hybrid CPU/GPU query plans in database systems. In New Trends in Databases and Information Systems, pages 27–35. Springer, 2013. [7] Cloudkick. 4 Months with Cassandra, a love story, March 2010. URL https://www.cloudkick. com/blog/2010/mar/02/4_months_with_cassandra/. Archived copy http://goo.gl/4rw3sW. 8 [8] Esling, P. and Agon, C. Time-series data mining. ACM Computing Surveys (CSUR), 45(1):12, 2012. [9] Fang, W., He, B., and Luo, Q. Database compression on graphics processors. Proceedings of the VLDB Endowment, 3(1-2):670–680, 2010. [10] Franklin, M. J., Jónsson, B. T., and Kossmann, D. Performance tradeoffs for client-server query processing. In ACM SIGMOD Record, volume 25, pages 149–160. ACM, 1996. [11] Garcia, V., Debreuve, E., Nielsen, F., and Barlaud, M. K-nearest neighbor search: Fast GPUbased implementations and application to high-dimensional feature matching. In Image Processing (ICIP), 2010 17th IEEE International Conference on, pages 3757–3760. IEEE, 2010. [12] Garcia, V., Debreuve, E., and Barlaud, M. Fast k nearest neighbor search using GPU. In Computer Vision and Pattern Recognition Workshops, 2008. CVPRW’08. IEEE Computer Society Conference on, pages 1–6. IEEE, 2008. [13] OpenTSDB. What’s OpenTSDB, 2010-2014. URL http://opentsdb.net/. [14] Poli, G., Levada, A., Mari, J., and Saito, J. Voice command recognition with dynamic time warping (dtw) using graphics processing units (gpu) with compute unified device architecture (cuda). In Computer Architecture and High Performance Computing, 2007. SBAC-PAD 2007. 19th International Symposium on, pages 19–25. IEEE, 2007. [15] Przymus, P. and Kaczmarski, K. Improving efficiency of data intensive applications on GPU using lightweight compression. In On the Move to Meaningful Internet Systems: OTM 2012 Workshops, Lecture Notes in Computer Science, volume 7567, pages 3–12. Springer Berlin Heidelberg, 2012. [16] Przymus, P. and Kaczmarski, K. Time series queries processing with GPU support. In New Trends in Databases and Information Systems. 17th East-European Conference on Advances in Databases and Information Systems September 1–4, 2013, Genoa, Italy, 2013. [17] Przymus, P. and Kaczmarski, K. Dynamic compression strategy for time series database using GPU. In New Trends in Databases and Information Systems. 17th East-European Conference on Advances in Databases and Information Systems September 1–4, 2013, Genoa, Italy, 2013. [18] Przymus, P., Rykaczewski, K., and Wiśniewski, R. Application of wavelets and kernel methods to detection and extraction of behaviours of freshwater mussels. Future Generation Information Technology, pages 43–54, 2011. [19] Przymus, P., Rykaczewski, K., and Wiśniewski, R. Zebra mussels’ behaviour detection, extraction and classification using wavelets and kernel methods. Future Generation Computer Systems, 33 (0):81–89, 2014. Special Section on Applications of Intelligent Data and Knowledge Processing Technologies. Guest Editor: Dominik Ślęzak. [20] Przymus, P., Kaczmarski, K., and Stencel, K. A bi-objective optimization framework for heterogeneous CPU/GPU query plans. In CS&P 2013 Concurrency, Specification and Programming. Proceedings of the 22nd International Workshop on Concurrency, Specification and Programming, September 25–27, 2013, Warsaw, Poland. [21] Sart, D., Mueen, A., Najjar, W., Keogh, E., and Niennattrakul, V. Accelerating dynamic time warping subsequence search with GPUs and FPGAs. In Data Mining (ICDM), 2010 IEEE 10th International Conference on, pages 1001–1006. IEEE, 2010. [22] Walkowiak, S., Wawruch, K., Nowotka, M., Ligowski, L., and Rudnicki, W. Exploring utilisation of GPU for database applications. Procedia Computer Science, 1(1):505–513, 2010. 9 [23] Wong, T. T. and Heng, P. A. Discrete wavelet transform on GPU. 2004. [24] Zukowski, M., Boncz, P., Nes, N., and Héman, S. MonetDB/X100–a DBMS in the CPU cache. IEEE Data Eng. Bull, 28(2):17–22, 2005. [25] Zukowski, M., Heman, S., Nes, N., and Boncz, P. Super-scalar RAM-CPU cache compression. In Data Engineering, 2006. ICDE’06. Proceedings of the 22nd International Conference on, pages 59–59. IEEE, 2006. 10