Wysokowydajna implementacja kodów nadmiarowych typu "erasure codes" z wykorzystaniem architektur wielordzeniowych

Podobne dokumenty
i3: internet - infrastruktury - innowacje

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

Programowanie procesorów graficznych GPGPU

Wydajność systemów a organizacja pamięci, czyli dlaczego jednak nie jest aż tak źle. Krzysztof Banaś, Obliczenia wysokiej wydajności.

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Budowa i użytkowanie klastrów w opaciu o układy Cell BE oraz GPU

Programowanie aplikacji równoległych i rozproszonych

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

Wykorzystanie architektury Intel MIC w obliczeniach typu stencil

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

Kody Tunstalla. Kodowanie arytmetyczne

Obliczenia równoległe na klastrze opartym na procesorze CELL/B.E.

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

Architektury komputerów Architektury i wydajność. Tomasz Dziubich

Cele RAID. RAID z ang. Redundant Array of Independent Disks, Nadmiarowa macierz niezależnych dysków.

Sprzęt komputerowy 2. Autor prezentacji: 1 prof. dr hab. Maria Hilczer

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1

Programowanie procesorów graficznych NVIDIA (rdzenie CUDA) Wykład nr 1

Programowanie procesorów graficznych GPGPU. Krzysztof Banaś Obliczenia równoległe 1

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

Wydajność systemów a organizacja pamięci. Krzysztof Banaś, Obliczenia wysokiej wydajności. 1

Wprowadzenie do informatyki i użytkowania komputerów. Kodowanie informacji System komputerowy

Architektura komputerów

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

Kodowanie i kompresja Tomasz Jurdziński Studia Wieczorowe Wykład Kody liniowe - kodowanie w oparciu o macierz parzystości

Programowanie z wykorzystaniem technologii CUDA i OpenCL Wykład 1

System obliczeniowy laboratorium oraz. mnożenia macierzy

W11 Kody nadmiarowe, zastosowania w transmisji danych

Macierze RAID MARCEL GAŃCZARCZYK 2TI 1

Budowa komputera. Magistrala. Procesor Pamięć Układy I/O

Tesla. Architektura Fermi

Programowanie procesorów graficznych GPGPU. Krzysztof Banaś Obliczenia równoległe 1

Architektura Systemów Komputerowych. Rozwój architektury komputerów klasy PC

Wydajność programów sekwencyjnych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

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

Implementacja sieci neuronowych na karcie graficznej. Waldemar Pawlaszek

Praca dyplomowa magisterska

Detekcja i korekcja błędów w transmisji cyfrowej

Architektura komputerów

Budowa komputera Komputer computer computare

Wykład 6. Mikrokontrolery z rdzeniem ARM

Automatyzacja procesu tworzenia sprzętowego narzędzia służącego do rozwiązywania zagadnienia logarytmu dyskretnego na krzywych eliptycznych

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

Teoria informacji i kodowania Ćwiczenia Sem. zimowy 2016/2017

RAID 1. str w przypadku różnych szybkości cała macierz będzie pracowała z maksymalną prędkością najwolniejszego dysku

Pamięci masowe. ATA (Advanced Technology Attachments)

Libra.cs.put.poznan.pl/mailman/listinfo/skisrkolo.

Architektura komputerów Reprezentacja liczb. Kodowanie rozkazów.

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

Teoretyczne Podstawy Informatyki

Detekcja i korekcja błędów w transmisji cyfrowej

Podstawy Informatyki Systemy sterowane przepływem argumentów

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

Metody optymalizacji soft-procesorów NIOS

Wykład 4 Temat: Algorytm symetryczny Twofish: cele projektowane, budowa bloków, opis algorytmu, wydajność algorytmu.

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 9,

PROBLEMATYKA BEZPIECZEŃSTWA SIECI RADIOWYCH Algorytm szyfrowania AES. Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Układ sterowania, magistrale i organizacja pamięci. Dariusz Chaberski

Systemy bezpieczne i FTC (Niezawodne Systemy Cyfrowe)

Komputer IBM PC niezależnie od modelu składa się z: Jednostki centralnej czyli właściwego komputera Monitora Klawiatury

Architektura komputerów

Zygmunt Kubiak Instytut Informatyki Politechnika Poznańska

Równoległy algorytm wyznaczania bloków dla cyklicznego problemu przepływowego z przezbrojeniami

Dr inż. hab. Siergiej Fialko, IF-PK,

Odwzorowanie procedur całkowania numerycznego w metodzie elementów skończonych na architektury procesorów masowo wielordzeniowych

Programowanie procesorów graficznych GPGPU

Wybrane bloki i magistrale komputerów osobistych (PC) Opracował: Grzegorz Cygan 2010 r. CEZ Stalowa Wola

Techniki multimedialne

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Organizacja pamięci w procesorach graficznych

Obliczenia Wysokiej Wydajności

Mikroprocesory rodziny INTEL 80x86

Architektura systemów komputerowych. Przetwarzanie potokowe I

Programowanie współbieżne Wykład 2. Iwona Kochańska

OPIS PRZEDMIOTU ZAMÓWIENIA SPECYFIKACJA SPRZĘTU KOMPUTEROWEGO

Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010

Algorytmy równoległe: ocena efektywności prostych algorytmów dla systemów wielokomputerowych

Zagadnienia związane z systemem IO

MIKROKONTROLERY I MIKROPROCESORY

Kodowanie informacji

CUDA. obliczenia na kartach graficznych. Łukasz Ligowski. 11 luty Łukasz Ligowski () CUDA 11 luty / 36

Programowanie Współbieżne

Kodowanie i kompresja Streszczenie Studia dzienne Wykład 6

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

Przetwarzanie Równoległe i Rozproszone

Logiczny model komputera i działanie procesora. Część 1.

Programowanie kart graficznych

Wprowadzenie do architektury komputerów systemy liczbowe, operacje arytmetyczne i logiczne

Architektura komputerów

Architektura mikroprocesorów TEO 2009/2010

Programowanie kart graficznych

Architektura komputerów. Układy wejścia-wyjścia komputera

Zrównoleglenie i przetwarzanie potokowe

Podstawy Informatyki: Kody. Korekcja błędów.

Budowa pamięci RAM Parametry: tcl, trcd, trp, tras, tcr występują w specyfikacjach poszczególnych pamięci DRAM. Czym mniejsze są wartości tych

Algorytmy i struktury danych

Zastosowanie technologii nvidia CUDA do zrównoleglenia algorytmu genetycznego dla problemu komiwojażera

Dane, informacja, programy. Kodowanie danych, kompresja stratna i bezstratna

Transkrypt:

Wysokowydajna implementacja kodów nadmiarowych typu "erasure codes" z wykorzystaniem architektur wielordzeniowych Ł. Kuczyński, M. Woźniak, R. Wyrzykowski Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska {roman, lkucz, marcell}@icis.pcz.pl

Plan prezentacji 1) Zastosowanie kodów nadmiarowych typu EC 2) Kody Reeda-Solomona (RS) 3) Odwzorowanie algorytmu implementującego kody Reeda-Solomona na procesory graficzne GPU 4) Modyfikacja Cauchy kodów Reeda-Solomona 5) Realizacja kodów Cauchy Reeda-Solomona na procesorach graficznych 6) Wykorzystanie procesora Cell/B.E. do realizacji kodów Reeda-Solomona oraz Cauchy Reeda-Solomona.

Zastosowanie kodów EC (1) Klasyczne podejście do budowy systemów zarządzania danymi odpornych na awarie bazuje na replikacji danych pomiędzy kilkoma serwerami. Kody korekcyjne typu EC (Erasure Codes) umożliwiają poprawę niezawodności rozproszonych systemów składowania danych dzięki rozbiciu danych na fragmenty, zakodowaniu ich w sposób nadmiarowy, a następnie rozdystrybuowaniu otrzymanych fragmentów pomiędzy różnymi serwerami. F 3

Zastosowanie kodów EC (2) Każdy przechowywany plik zostaje podzielony na n fragmentów o długości B bajtów. D0, D1,..., Dn-1 W procesie kodowania wyznaczane zostają m sum kontrolnych (długości B bajtów). C0, C1,..., Cm-1 Dane można odzyskać po awarii dowolnych m węzłów. B = F / n F B bajtów B bajtów B bajtów B bajtów n B bajtów B bajtów B bajtów B bajtów m 4

Zastosowanie kodów EC (3) Kody Reeda-Solomona wykorzystywana arytmetyka ciała Galois GF(2w) gdzie 2w n+m Kody LDPC (Low-Density Parity-Check) np. kody Tornado (DFC Digital Fountain Codes) Kody Cauchy Reeda-Solomona sprowadzenie operacji wykonywanych w arytmetyce ciała Galois GF(2w) do operacji typu XOR lub AND wykonywanych bit po bicie. 5

Kody Reeda-Solomona KODOWANIE wyznaczanie sum kontrolnych cm: n słów z danymi mnożonych jest przez specjalnie dobraną macierz F(n+m)xn gdzie: Macierz F oparta na macierzy Vandermonde'a DEKODOWANIE odtworzenie niedostępnych elementów wektora dn gdzie Φ oznacza macierz F z usuniętymi wierszami odpowiadającymi brakującym węzłom 6

Algorytm wektoryzacji obliczeń c := [0,0,...,0] dla i=0,1,...,m-1 wykonaj { dla j=0,1,...,n-1 wykonaj { ci := ci f*i,j dj } } ci i-ty wektor sum kontrolnych o rozmiarze B bajtów dj j-ty wektor z danymi o rozmiarze B bajtów Operacja oznacza operację mnożenia dwóch wektorów (element po elemencie) realizowaną w arytmetyce ciała Galois (2w). Operacja oznacza sumowanie wektorów, również wykonywane element po elemencie, przy czym suma dwóch elementów wyznaczana jest jako wynik operacji XOR wykonywanej bit po bicie. 7

w Mnożenie w arytmetyce ciała Galois GF(2 ) W badaniach przyjęto wartość w = 8 8 2 n+m można obsłużyć w sumie do 256 węzłów danych i sum kontrolnych operacja mnożenia w arytmetyce ciała Galois GF(28) realizowana w sposób tablicowy: c=f*d => c = gfilog( gflog( f ) + gflog( d ) ) - gdzie gflog i gfilog oznacza odpowiednio logarytm i antylogarytm, zdefiniowany dla ciała Galois GF(28) - do reprezentacji dowolnego elementu ciała Galois GF(28) wystarczy słowo długości jednego bajta. 8

Architektura GT200 - Tesla C1060 GPU: NVIDIA Tesla C1060 30 multiprocesorów 240 rdzeni 4GB pamięci GDDR3 Compute Capability 1.3 CPU: AMD Phenom II X4 955 3.2 GHz 2048 KB cache L2 9

Struktura pamięci GPU 10

Odwzorowanie algorytmu implementującego kody Reeda-Solomona na procesory graficzne GPU c := [0,0,...,0] dla j=0,1,...,n-1 wykonaj { GPU kernel dtmp = gflog(dj) dla i=0,1,...,m-1 wykonaj { ci ^= gfilog( dtmp + gflog( fi,j ) ) } ci i-ty wektor sum kontrolnych o rozmiarze B bajtów dj j-ty wektor z danymi o rozmiarze B bajtów przyjmując przetwarzanie 1bajt/wątek należy uruchomić B wątków Bmax = 65535 * 512 = 33 553 920 } pojedynczy wątek GPU wykona: ci,thrid ^= gfilog( gflog( dj,thrid ) + gflog( fi,j )) gflog i gfilog - tablice logarytmów i antylogarytmów zdefiniowane dla GF(28) przechowywane w pamięci teksture memory lub constant memory 11

Odwzorowanie algorytmu implementującego kody Reeda-Solomona na procesory graficzne GPU Uzyskane wyniki Rozmiar Liczba pliku bloków [MB] 0,09 0,19 0,38 0,75 1,5 3 6 12 24 48 96 192 24 48 96 192 384 768 1536 3072 6144 12288 24576 49152 CPU+GPU CPU 0,392 0,584 0,819 0,949 1,297 1,428 1,387 1,324 1,365 1,366 1,366 1,368 0,122 0,121 0,121 0,121 0,120 0,120 0,118 0,116 0,114 0,109 0,107 0,107 Uzyskane przepustowości dla CPU oraz przy użyciu GPU jako akceleratora w zależności od rozmiaru przetwarzanych plików przepustowość 1,6 CPU+GPU 1,4 1,2 1 0,8 0,6 0,4 CPU 0,2 0 0,01 0,1 1 10 100 1000 rozmiar przetwarzanego pliku [MB] 12

Kody Cauchy Reeda-Solomona Zamiast macierzy Vandermonde'a wykorzystywana jest jedna z macierzy Cauchy o rozmiarze m x n Elementy ciała Galois GF(2w) zastąpione specjalnie dobranymi projekcjami, co pozwala na sprowadzenie operacji mnożenia w GF(2w) do operacji XOR lub AND wykonywanych bit po bicie. dowolny element ciała Galois GF(2w) reprezentowany przez binarną macierz o rozmiarze w x w bitów GF(23), n = 5, m=2 13

Implementacja algorytmu kodowania Cauchy Reeda-Solomona f binarna macierz Cauchy przechowywana w pamięci Constant lub Texture c wektor sum kontrolnych Global Memory d wektor z danymi wejściowymi - Global Memory - operacja XOR 14

Implementacja algorytmu kodowania Cauchy Reeda-Solomona Uzyskane wyniki (1) n=4, m=4, w=3 Rozmiar Liczba pliku bloków [MB] Macierz Cauchy gęsta Macierz Cauchy rzadka Przepustowość Przepustowość Kernel CPU+GPU CPU Kernel CPU+GPU CPU 0,09 4 0,166 0,132 0,114 0,164 0,131 0,116 0,19 8 0,321 0,253 0,312 0,247 0,38 16 0,585 0,423 0,048 0,589 0,423 0,048 0,75 32 0,841 0,615 0,048 0,819 0,605 0,049 1,5 64 1,129 0,890 0,048 1,133 0,909 0,048 3 128 1,455 1,254 0,046 1,456 1,239 6 256 1,500 1,380 1,497 1,373 12 512 2,039 1,913 2,060 1,933 24 1024 2,088 2,017 0,046 2,096 2,024 0,048 48 2048 2,133 2,092 2,129 2,088 0,046 96 4096 2,145 2,120 2,140 2,117 192 8192 2,148 2,133 0,044 2,147 2,131 0,046 384 16384 2,149 2,134 2,149 2,131 0,048 15

Implementacja algorytmu kodowania Cauchy Reeda-Solomona Uzyskane wyniki (2) n=8, m=4, w=4 Rozmiar Liczba pliku bloków [MB] Macierz Cauchy gęsta Macierz Cauchy rzadka Przepustowość Przepustowość Kernel CPU+GPU CPU Kernel CPU+GPU CPU 0,06 2 0,040 0,042 0,039 0,042 0,13 4 0,090 0,077 0,036 0,096 0,080 0,036 0,25 8 0,178 0,150 0,022 0,178 0,146 0,022 0,5 16 0,314 0,256 0,012 0,314 0,257 0,016 1 32 0,442 0,369 0,007 0,440 0,367 0,006 2 64 0,577 0,509 0,006 0,577 0,504 0,006 4 128 0,738 0,674 0,739 0,671 8 256 0,754 0,716 0,751 0,711 16 512 1,124 1,078 1,119 1,073 32 1024 1,131 1,105 1,143 1,116 64 2048 1,162 1,147 1,159 1,144 128 256 4096 8192 1,171 1,173 1,165 1,168 1,171 1,171 1,163 1,166 0,011 16

Architektura Cell/B.E. Architektura 1 procesor ogólnego przeznaczenia (PPE) 8 jednostek wektorowych (SPE) Wydajna magistrala komunikacyjna (EIB) Kontrolery DMA Kontroler dostępu do pamięci Kontroler wejścia wyjścia Wydajność Obliczenia zmiennoprzecinkowe pojedynczej precyzji: 204,8 GFLOPS Obliczenia na liczbach o podwójnej precyzji: 14,6 GFLOPS Przepustowość magistrali EIB: 204.8 GB/s 17

Odwzorowanie algorytmu kodowania Reeda-Solomona na architekturę Cell/B.E. Opracowana implementacja wykorzystuje wszystkie dostępne poziomy zrównoleglania oferowane przez procesor Cell: - dane rozdzielone pomiędzy 8 SPE - wektoryzacja obliczeń w obrębie pojedynczego SPE - pełniejsze wykorzystanie obu potoków 18

Odwzorowanie algorytmu kodowania Reeda-Solomona na architekturę Cell/B.E. Opcja kompilatora Wariant 1 Wariant 2 10 bloków 1 blok 10 bloków 1 blok Wariant 3 10 bloków 1 blok O1 223 2118 201 2078 214 2211 O2 215 1990 198 1710 215 1770 O3 215 1990 198 1710 215 1770 n=4, m=4 Tabela przedstawia liczbę cykli zegarowych (Lc) koniecznych do przetworzenia na pojedynczym rdzeniu SPE jednego (LB=1) oraz dziesięciu (LB=10) bloków danych o rozmiarach n x 16 B. Dla ośmiu rdzeni SPE maksymalna przepustowość wynosi: b8rs = (8 3.2 LB n 16)/LC = 9.58 Implementacja kodów Cauchy Reeda-Solomona pozwala na osiągnięcie maksymalnej przepustowości: CRS b8 = (8 3.2 LB n w 16)/LC Po podstawieniu zmierzonych wartości Lc otrzymano: b8,dcrs = 13.65 Otrzymane wyniki odpowiadają maksymalnej możliwej do uzyskania przepustowości, bez uwzględnienia strat wynikających z transferu danych do pamięci głównej. 19

Podsumowanie Uzyskane w trakcie badań wyniki potwierdziły możliwość praktycznego, efektywnego zastosowania procesorów graficznych oraz układów Cell/B.E. w systemach, gdzie do zwiększenia bezpieczeństwa danych wykorzystywane są kody nadmiarowe typu erasure codes. Wysoka wartość uzyskanych przepustowości przetwarzania oznacza, że w rzeczywistych warunkach przestaje ona ograniczać wydajność funkcjonowania systemu zarządzania danymi. Takim ogranicznikiem staje się wówczas np. przepustowość samej sieci rozległej WAN lub magistrali zewnętrznej procesora. 20

Dziękuję za uwagę. 21