Raport Hurtownie Danych

Podobne dokumenty
Algorytmy Apriori i Partition C++, Linux

CUDA Median Filter filtr medianowy wykorzystujący bibliotekę CUDA sprawozdanie z projektu

Dokumentacja aplikacji Szachy online

i3: internet - infrastruktury - innowacje

Porównanie wydajności CUDA i OpenCL na przykładzie równoległego algorytmu wyznaczania wartości funkcji celu dla problemu gniazdowego

która metoda jest najlepsza

Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie. dr inż. Adam Piórkowski. Jakub Osiadacz Marcin Wróbel

MESco. Testy skalowalności obliczeń mechanicznych w oparciu o licencje HPC oraz kartę GPU nvidia Tesla c2075. Stanisław Wowra

Moc płynąca z kart graficznych

Sprawozdanie z laboratorium: Hurtownie Danych. Algorytm generowania reguł asocjacyjnych. FP-Growth. 9 czerwca 2011

Przykładowe sprawozdanie. Jan Pustelnik

Laboratorium Chmur obliczeniowych. Paweł Świątek, Łukasz Falas, Patryk Schauer, Radosław Adamkiewicz

KRYPTOGRAFIA I OCHRONA DANYCH PROJEKT

Metody eksploracji danych w odkrywaniu wiedzy (MED) projekt, dokumentacja końcowa

INŻYNIERIA OPROGRAMOWANIA

Test dysku Intel SSD DC S GB. Wpisany przez Mateusz Ponikowski Wtorek, 22 Październik :22

Nowinki technologiczne procesorów

Programowanie procesorów graficznych GPGPU

SYSTEMY CZASU RZECZYWISTEGO STEROWNIK WIND. Dokumentacja projektu. Danilo Lakovic. Joanna Duda. Piotr Leżoń. Mateusz Pytel

Tworzenie programów równoległych cd. Krzysztof Banaś Obliczenia równoległe 1

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

REFERAT PRACY DYPLOMOWEJ

Programowanie z wykorzystaniem technologii CUDA i OpenCL Wykład 1

XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery

Fundusze Europejskie dla rozwoju innowacyjnej gospodarki Dotacje na innowacje Inwestujemy w Waszą przyszłość Bydgoszcz, r.

Fundusze Europejskie dla rozwoju innowacyjnej gospodarki Dotacje na innowacje Inwestujemy w Waszą przyszłość Bydgoszcz, r.

AKADEMIA GÓRNICZO-HUTNICZA im. Stanisława Staszica w Krakowie. Wydział Geologii, Geofizyki i Ochrony Środowiska. Bazy danych 2

Podręcznik użytkownika PCI-x Karta przechwytująca 4xHDMI

Programowanie aplikacji na iphone. Wstęp do platformy ios. Łukasz Zieliński

AMD Ryzen recenzja procesora. Wpisany przez Mateusz Ponikowski Piątek, 11 Październik :47

Dariusz Brzeziński. Politechnika Poznańska, Instytut Informatyki

PROGRAMOWANIE WSPÓŁCZESNYCH ARCHITEKTUR KOMPUTEROWYCH DR INŻ. KRZYSZTOF ROJEK

Zagadnienia egzaminacyjne ELEKTRONIKA I TELEKOMUNIKACJA studia rozpoczynające się przed r.

Zarządzanie pamięcią operacyjną

RDZEŃ x86 x86 rodzina architektur (modeli programowych) procesorów firmy Intel, należących do kategorii CISC, stosowana w komputerach PC,

Cyfronet w CTA. Andrzej Oziębło DKDM

Opracowanie systemu monitorowania zmian cen na rynku nieruchomości

Linux -- u mnie działa!

Strojenie systemu Linux pod k¹tem serwera bazy danych Oracle 9i

Międzyplatformowy interfejs systemu FOLANessus wykonany przy użyciu biblioteki Qt4

Nowinki technologiczne procesorów

Nazwa Wydziału Nazwa jednostki prowadzącej moduł Nazwa modułu kształcenia Kod modułu Język kształcenia Efekty kształcenia dla modułu kształcenia

Java - wprowadzenie. Programowanie Obiektowe Mateusz Cicheński

Wykrywanie twarzy na zdjęciach przy pomocy kaskad

Larrabee GPGPU. Zastosowanie, wydajność i porównanie z innymi układami

Komputer VIPER i x4,2ghz 8GB GTX 1050TI 4GB 1TB USB 3.0

Procesory wielordzeniowe (multiprocessor on a chip) Krzysztof Banaś, Obliczenia wysokiej wydajności.

Cyfrowy rejestrator parametrów lotu dla bezzałogowych statków powietrznych. Autor: Tomasz Gluziński

Zaawansowane programowanie w języku C++

INŻYNIERIA OPROGRAMOWANIA

Architektura komputerów

Klaster obliczeniowy

Dla człowieka naturalnym sposobem liczenia jest korzystanie z systemu dziesiętnego, dla komputera natomiast korzystanie z zapisu dwójkowego

Historia modeli programowania

Wersje desktopowe (Kaby Lake-S)

Technika mikroprocesorowa. Systemy operacyjne czasu rzeczywistego

Programowanie równoległe i rozproszone. Praca zbiorowa pod redakcją Andrzeja Karbowskiego i Ewy Niewiadomskiej-Szynkiewicz

ViLab- program służący do prowadzenia obliczeń charakterystyki energetycznej i sporządzania świadectw charakterystyki energetycznej

Wymagania systemowe Dla przedsiębiorstw i średnich firm

Skrócony przewodnik OPROGRAMOWANIE PC. MultiCon Emulator

Nowinkach technologicznych procesorów

Programowanie Komponentowe WebAPI

Tomasz Greszata - Koszalin

Informacje i materiały dotyczące wykładu będą publikowane na stronie internetowej wykładowcy, m.in. prezentacje z wykładów

U M L. System operacyjny Linux zagnieżdżony w zewnętrznym systemie operacyjnym (Linux)

Nowe mechanizmy w wersji 3 Java Card. Mateusz LESZEK (138775)

Rozbudowa dwóch posiadanych serwerów blade HP BL860c i2 do BL870c i2

Podstawy programowania. Wprowadzenie

Instalacja SQL Server Konfiguracja SQL Server Logowanie - opcje SQL Server Management Studio. Microsoft Access Oracle Sybase DB2 MySQL

Parametry techniczne. Testy

Czym jest Java? Rozumiana jako środowisko do uruchamiania programów Platforma software owa

Referat pracy dyplomowej

Specyfikacja Wymagań Oprogramowania

REFERAT PRACY DYPLOMOWEJ Temat pracy: SUDOKU - Algorytmy tworzenia i rozwiązywania

Wykorzystanie architektury Intel MIC w obliczeniach typu stencil

Instalacja aplikacji

Michał Olejnik. 22 grudnia 2009

PRACA INŻYNIERSKA IMPLEMENTACJA MOBILNEGO KLIENTA BANKU ZABEZPIECZONEGO TOKENEM

Tematy dyplomów inżynierskich 2009 Katedra Inżynierii Oprogramowania

Sortowanie przez scalanie

Autor: Bączkowski Karol Promotor: dr inż. Paweł FIGAT

JCuda Czy Java i CUDA mogą się polubić? Konrad Szałkowski

WZÓR UMOWY. Zawarta w Białymstoku, w dniu.. pomiędzy:

REFERAT PRACY DYPLOMOWEJ

Instrukcja instalacji oprogramowania SimPlant Planner v.11

Zmiana specyfikacji istotnych warunków zamówienia

AKADEMIA GÓRNICZO-HUTNICZA IM. STANISŁAWA STASZICA W KRAKOWIE. QuIDE Quantum IDE PODRĘCZNIK UŻYTKOWNIKA

Spis treści. I. Skuteczne. Od autora... Obliczenia inżynierskie i naukowe... Ostrzeżenia...XVII

1 Moduł Modbus ASCII/RTU 3

Niniejszy załącznik składa się z 5 ponumerowanych stron

Projektowanie, tworzenie aplikacji mobilnych na platformie Android

Metody optymalizacji soft-procesorów NIOS

Wtyczka Crop3D. Wstęp. Implementacja. Sprawozdanie z realizacji projektu Bartłomiej Trzewiczek Kraków,

Raport dotyczący przeprowadzonych zmian w aplikacji

Rozwiązanie Compuware dynatrace

SZCZEGÓŁOWY OPIS PRZEDMIOTU ZAMÓWIENIA CZĘŚĆ I

CUDA część 1. platforma GPGPU w obliczeniach naukowych. Maciej Matyka

Opis przedmiotu zamówienia / Formularz Oferty Technicznej (dokument należy złożyć wraz z ofertą)

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego. Opis oferowanego przedmiotu zamówienia

Transkrypt:

Raport Hurtownie Danych Algorytm Apriori na indeksie bitmapowym oraz OpenCL Mikołaj Dobski, Mateusz Jarus, Piotr Jessa, Jarosław Szymczak Cel projektu: Implementacja algorytmu Apriori oraz jego optymalizacja. Środowisko: Oprogramowanie: Oracle Java 1.60_24 x86_64 Maven 3.03 Sprzęt: jocl 0.1.6 OpenCL bindings for Java weka 3.7.3 Intel Core i7-2630qm (4x2,6GHz (8x with HT)) nvidia GT550M (96 CUDA cores) 16GB RAM 1333MHz Źródła: https://github.com/dzess/dmarf Realizacja: Platforma testowa: Utworzono środowisko umożliwiające testowanie poprawności oraz wydajności dowolnych algorytmów zgodnych ze zdefiniowanym przez nas interfejsem. Poprawnośd działania algorytmu sprawdzana jest poprzez uruchomienie referencyjnej implementacji z biblioteki weka na wybranym do testowania zbiorze danych. Porównywane są w ten sposób utworzone przez wekę oraz testowany algorytm zbiory reguł asocjacyjnych ich ilośd, poprawnośd oraz cechy każdej z nich. Wydajnośd mierzona jest poprzez standardowe mechanizmy pomiaru czasu i pamięci maszyny wirtualnej Java. Platforma umożliwia wykorzystywanie w testach plików w formacie zgodnym z tym udostępnionym na fimi.ua.ac.be Dane te są automatycznie konwertowane do postaci zrozumiałem przez wekę. Algorytm oraz implementacje: Zdecydowano się zaimplementowad wpierw algorytm apriori w postaci naiwnej bez żadnych optymalizacji. Wykorzystuje ona dynamiczne struktury języka Java. Transakcje przechowuje w pamięci jako listy integerów. Algorytm ten działa jednowątkowo.

Druga implementacja algorytmu bazuje na indeksach bitmapowych opisanych między innymi w projekcie gpuminer (http://code.google.com/p/gpuminer/). Powyższy rysunek obrazuje jak kolejne atrybuty istniejące w danej transakcji odpowiadają bitom zapalonym w dwubajtowych klastrach przechowywanych jako pojedyncze chary. Dzięki zastosowaniu takiej reprezentacji sprawdzanie wsparcia zbiorów kandydujących jest szalenie szybkie jednorazowo sprawdzamy 16 atrybutów. Optymalizacja ta działa jednak dobrze tylko dla zbiorów gęstych np. pumsb_star. Zdecydowanie źle zachowuje się rzadki zbiór kosarak, który posiada ponad 40.000 atrybutów, przez co jego bitmapa jest ogromna (około 7GB) oraz prawie pusta. Przykład przedstawia kolejny rysunek:

W algorytmie korzystającym z reprezentacji binarnej zoptymalizowany został również element generowania kandydatów na zbiory częste poprzez wprowadzenie tzw. wędrującej jedynki. a1 a2 a3 a4 a5 a6 a7 a8 a9 a10 A 1 0 1 1 0 0 0 0 0 0 v1 0 0 0 0 1 0 0 0 0 0 v2 0 0 0 0 0 1 0 0 0 0 vi 0...... 1... Jak widad dla zbioru częstego posiadającego atrybuty a1, a3, a4, a5 wystarczy teraz zapalad pojedyncze bity odpowiadające kolejnym atrybutom, dzięki czemu generowanie kandydatów również może się odbywad z wykorzystaniem reprezentacji binarnej. Dla zbiorów gęstych algorytm korzystający z reprezentacji binarnej okazał się wielokrotnie szybszy od naiwnej implementacji. Opisywana powyżej implementacja na reprezentacji binarnej była jednak tylko podstawą do implementacji wykorzystującej mechanizm weryfikacji kandydatów na zbiory częste w technologii OpenCL. Dzięki niej pisząc jeden kod uzyskaliśmy uniwersalną, maksymalnie wielowątkową (nota bene niekorzystającą z wątków systemowych, lecz bezpośrednio sprzętowo-sterownikowych) realizację tego mechanizmu uruchamialną na CPU oraz na GPU. Poniższy obrazek prezentuje ideę: Uruchamiając kod z wykorzystaniem OpenCL na CPU uzyskaliśmy przyspieszenie 4x (4 sprzętowe core y) oraz niewiele większe na GPU. Należy jednak wziąd pod uwagę, że kod w OpenCL w chwili pisania raportu winien byd raczej traktowany, jako działający eksperyment i wymaga jeszcze sporych optymalizacji i refaktoryzacji. Równie ważne jest, że wykorzystany w testach procesor jest jedną z najwydajniejszych jednostek mobilnych dostępnych na rynku, natomiast karta graficzna jest z

Time [s] kategorii mid-range i ma marginesową wydajnośd w porównaniu z profesjonalnymi jednostkami obliczeniowymi Tesla firmy nvidia. Wyniki eksperymentu algorytmów z reprezentacją binarną: Opisy implementacji: BinST_1 - opisywana implementacja jednowątkowa tylko w Java. GPU_4 - implementacja wykorzystująca OpenCL na GPU CPU_4 - implementacja wykorzystująca OpenCL na CPU Liczba za opisem oznacza wyrównanie do najbliżej ilości klastrów (charów 16bitowych) atrybutów podzielnych przez nią. Wyrównanie wynika z faktu, iż w OpenCL dokonaliśmy dodatkowej optymalizacji: nie porównujemy 16 a 64 bity na raz. Zbiór mushroom: 4 3,5 3 2,5 2 1,5 1 0,5 0 30% 40% 50% 60% BinST_1 0,796 0,172 0,047 0,031 GPU_4 3,654 0,894 0,265 0,094 CPU_4 1,084 0,265 0,093 0,046 Wydajnośd na tak małym zbiorze danych (kilkaset kilobajtów) jest nieosiągalna. Więcej czasu trwała inicjalizacja oraz synchronizacja całego środowiska OpenCL niż realizacja w Javie.

Time [s] Time [s] Zbiór accidents: 120 100 80 60 40 20 0 60% 70% 80% 90% BinST_1 72,89 19,29 5,3 0,826 GPU_4 104,84 50,56 14,4 2,683 CPU_4 23,93 6,583 2,04 0,531 Zbiór ten jest nadal za mały do wykorzystania potencjału obliczeniowego GPU (posiada niecałe 500 atrybutów). Wydajnośd bieżącej implementacji niestety silnie zależy od ilości atrybutów. Widad jednakże, że wykonanie na CPU dało już prawie 4x przyspieszenie zgodnie z oczekiwaniem. Zbiór pumsb_star: 70 60 50 40 30 20 10 0 50% 60% 70% BinST_1 64,67 14,78 3,42 GPU_4 38,67 8,79 3,3 CPU_4 12,23 2,8 0,639 Na tym zbiorze, który posiada około 8000 atrybutów widzimy, jak kod OpenCL na CPU uzyskał ponad 5x przyspieszenie. Kod na GPU był już szybszy od wykonania w Javie.

Uwagi: W raporcie zostały wykorzystane materiały dostępne w: Projekcie gpuminer Dokumentacji nvidii do OpenCL/CUDA