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

Podobne dokumenty
Wykorzystanie architektury Intel MIC w obliczeniach typu stencil

Wykład 5. Metoda eliminacji Gaussa

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

UKŁADY ALGEBRAICZNYCH RÓWNAŃ LINIOWYCH

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

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

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

Algorytmy numeryczne 1

Architektura komputerów

Układy równań liniowych. Krzysztof Patan

Nowoczesne technologie przetwarzania informacji

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

Metody numeryczne Wykład 4

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

Rozwiązywanie układów równań liniowych metody dokładne Materiały pomocnicze do ćwiczeń z metod numerycznych

i3: internet - infrastruktury - innowacje

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

Architektura mikroprocesorów TEO 2009/2010

5. Rozwiązywanie układów równań liniowych

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

Architektura komputerów

Analiza numeryczna Kurs INP002009W. Wykłady 6 i 7 Rozwiązywanie układów równań liniowych. Karol Tarnowski A-1 p.

Numeryczna algebra liniowa. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Numeryczna algebra liniowa

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

UKŁADY ALGEBRAICZNYCH RÓWNAŃ LINIOWYCH

Podstawy Informatyki Systemy sterowane przepływem argumentów

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

PlayStation3. Michał Zarychta

Zapoznanie z technikami i narzędziami programistycznymi służącymi do tworzenia programów współbieżnych i obsługi współbieżności przez system.

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

Układy równań liniowych i metody ich rozwiązywania

Wykład 6. Metoda eliminacji Gaussa: Eliminacja z wyborem częściowym Eliminacja z wyborem pełnym

III TUTORIAL Z METOD OBLICZENIOWYCH

Zaawansowane metody numeryczne

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

Implementacje algorytmów oddziałujących cząstek na architekturach masywnie równoległych

Wydajność obliczeń równoległych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Obliczenia naukowe Wykład nr 8

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

Modelowanie rynków finansowych z wykorzystaniem pakietu R

METODY NUMERYCZNE. wykład. konsultacje: wtorek 10:00-11:30 środa 10:00-11:30. dr inż. Grażyna Kałuża pokój

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

Klasyfikacje systemów komputerowych, modele złożoności algorytmów obliczeniowych

Rozwiązywanie układów równań liniowych

Kryptografia na procesorach wielordzeniowych

3. Macierze i Układy Równań Liniowych

2. Układy równań liniowych

Bibliografia: pl.wikipedia.org Historia i rodzaje procesorów w firmy Intel

Procesory. Schemat budowy procesora

Przegląd architektury PlayStation 3

Kolejny krok iteracji polega na tym, że przechodzimy do następnego wierzchołka, znajdującego się na jednej krawędzi z odnalezionym już punktem, w

Programowanie Współbieżne. Algorytmy

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

04 Układy równań i rozkłady macierzy - Ćwiczenia. Przykład 1 A =

Wykład 6. Mikrokontrolery z rdzeniem ARM

Budowa Mikrokomputera

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

Dydaktyka Informatyki budowa i zasady działania komputera

Wstęp do metod numerycznych Eliminacja Gaussa Równania macierzowe. P. F. Góra

System obliczeniowy laboratorium oraz. mnożenia macierzy

Architektura komputerów

Matematyka stosowana i metody numeryczne

Macierzowe algorytmy równoległe

1 Macierz odwrotna metoda operacji elementarnych

Wstęp do metod numerycznych Uwarunkowanie Eliminacja Gaussa. P. F. Góra

UKŁADY RÓWNAŃ LINIOWYCH - Metody dokładne

Egzamin z Metod Numerycznych ZSI, Egzamin, Gr. A

Metody uporządkowania

Budowa komputera Komputer computer computare

Architektura komputerów

Architektura komputerów

O MACIERZACH I UKŁADACH RÓWNAŃ

NUMERYCZNE METODY ROZWIĄZYWANIA ROWNAŃ LINIOWYCH. PRZYGOTOWAŁA: ANNA BANAŚ KoMBo, WILiŚ

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

PRZETWARZANIE RÓWNOLEGŁE I ROZPROSZONE. Mnożenie macierzy kwadratowych metodą klasyczną oraz blokową z wykorzystaniem OpenMP.

Macierze. Rozdział Działania na macierzach

Architektura komputerów

a 11 a a 1n a 21 a a 2n... a m1 a m2... a mn x 1 x 2... x m ...

10/14/2013 Przetwarzanie równoległe - wstęp 1. Zakres przedmiotu

Przygotowanie kilku wersji kodu zgodnie z wymogami wersji zadania,

Algorytmy dla maszyny PRAM

D. Miszczyńska, M.Miszczyński KBO UŁ 1 GRY KONFLIKTOWE GRY 2-OSOBOWE O SUMIE WYPŁAT ZERO

Literatura. 11/16/2016 Przetwarzanie równoległe - wstęp 1

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

Skalowalność obliczeń równoległych. Krzysztof Banaś Obliczenia Wysokiej Wydajności 1

Metody optymalizacji soft-procesorów NIOS

Architektura komputerów

16. Taksonomia Flynn'a.

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

1 Układy równań liniowych

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

Metoda eliminacji Gaussa. Autorzy: Michał Góra

Treść wykładu. Układy równań i ich macierze. Rząd macierzy. Twierdzenie Kroneckera-Capellego.

Zaawansowane metody numeryczne

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

Urządzenia zewnętrzne

Mikroprocesory rodziny INTEL 80x86

Sprawdzian test egzaminacyjny 2 GRUPA I

Wstęp do informatyki. System komputerowy. Magistrala systemowa. Architektura komputera. Cezary Bolek

Transkrypt:

Obliczenia równoległe na klastrze opartym na procesorze CELL/B.E. Łukasz Szustak Wydział Inżynierii Mechanicznej i Informatyki Kierunek informatyka, Rok V szustak.lukasz@gmail.com Streszczenie W artykule zostanie przedstawiona realizacja równoległa algorytmów na klastrze opartym na procesorze CELL Broadband Engine. Procesor CELL/B.E. powstał we współpracy firm IBM, Sony oraz Toshiba, składa się on z dziewięciu rdzeni. Jednym z pierwszych produktów w który, został wyposażony ten procesor jest konsola do gier SONY PlayStation3. Algorytmy implementowane będą na klastrze zbudowanym z czterech konsol SONY PS3. Jego atutem jest duża moc obliczeniowa na poszczególnych węzłach. Pewne ograniczenie stanowi sieć łącząca węzły klastra. Programowanie na procesorze CELL/B.E. wymusza na programiście znajomość jego architektury. W niniejszej pracy można odnaleźć przykłady omówienia algorytmów; realizację komunikacji między węzłami oraz na poszczególnych węzłach; sposoby wykorzystania architektury procesorów CELL/B.E. do obliczeń zmiennoprzecinkowych oraz wady i zalety jakie niesie programowanie na takim klastrze. 1. Wstęp W ostatnich latach postęp technologiczny procesorów został skierowany na projektowanie i budowanie procesorów wielordzeniowych. Ciekawym rozwiązaniem technologicznym opracowany przez firmy Sony, Toshiba i IBM jest jednoukładowy superkomputer CELL Broadband Engine. Procesor CELL/B.E. to hybryda składającą się z dziewięciu rdzeni. Osiem z nich to wektorowe układy SPE (Synergistic Processing Element), a jeden to uproszczony układ PowerPC firmy IBM, którego zadaniem jest zarządzanie pozostałymi modułami [2]. Zastosowanie tego procesora można znaleźć w produktach takich jak konsola do gier SONY PlayStation3, czy też w klastrze kasetowym Blade firmy IBM. Zadaniem programisty jest niespotykana dotąd odpowiedzialność za jak najlepsze wykorzystanie jednostek wykonawczych. Programista sam decyduje na których danych konkretny rdzeń wykonuje operacje - to on wybiera w jaki sposób dane mają zostać pobrane, wysłane do pamięci poszczególnych jednostek wykonawczych co wymusza na nim znajomość zasad komunikacji. 1

2. Procesory CELL/B.E. 2.1. Architektura procesorów CELL/B.E. Pierwsza generacja procesorów CELL/B.E. (Rys. 1) składała się z następujących podstawowych elementów: jednego rdzenia Power Processor Element (PPE); ośmiu rdzeni Synergistic Processor Element (SPE); Element Interconnect Bus (EIB). PPE jest dwuwątkowym, 64-bitowym rdzeniem procesora bazującego na architekturze IBM PowerPC. Rys. 1 Organizacja architektury procesora CELL/B.E. [2] PPE ma własne 64 KB pamięci podręcznej pierwszego poziomu i 512 KB cache'u L2. Jego zadaniem jest także pomoc w zarządzaniu pozostałymi rdzeniami SPU. Każdy SPE (Synergistic Processing Element) jest oddzielnym procesorem wektorowym, składającym się z sześciu jednostek wykonawczych. SPE mają 128 rejestrów ogólnego przeznaczenie o długości 128-bitów. Potrafią przetworzyć jednocześnie dwie instrukcje. Mogą też pracować na operandach stałoprzecinkowych. Wszystkie SPE wyposażone zostały w 256 kilobajtów pamięci lokalnej [3], a w rdzeniu każdego procesora wektorowego umieszczono kontroler DMA. Odpowiada on za transfer danych pomiędzy pamięcią systemową a lokalnymi zasobami SPE. Wszystkie osiem układów wektorowych i jedne rdzeń PPE połączono ze sobą w sieć za pomocą interfejsu o dużej przepustowości danych EIB. 2.2. Komunikacja SPE nie mają bezpośredniego dostępu do pamięci głównej (Main Storage). Architektura procesora narzuca pewne ograniczenia odnośnie przesyłania danych [1]: kanałami DMA można dokonywać transferu danych pomiędzy Local Storage a Local Storage innego SPE, oraz Local Storage a Main Storage i odwrotnie; jednorazowo jednym kanałem można przesłać dane o rozmiarze 1, 2, 4, 8 i 16 bajtów lub wielokrotność 16 bajtów aż do 16KB. 2

2.3. Operacje wektorowe Wszystkie rdzenie procesora CELL/B.E. wyposażone są w zestawy instrukcji typu Single Instruction Multiple Data (SIMD), czyli wykonywanie kilku operacji zmiennoprzecinkowych jednocześnie. Większość instrukcji SIMD może obsługiwać którąś z reprezentacji danych 128-bitowych, dwie 64-bitowe podwójnej precyzji, cztery-32 bitowe pojedynczej precyzji lub szesnaście 8-bitowych danych typu char. Operandy 128-bitowe przechowywane są w wbudowanym w rdzeniu rejestrze. Instrukcje SIMD mogą przyjąć [2] do trzech 128-bitowych operandów i w rezultacie zwrócić jeden. 3. Opis wybranych algorytmów Opracowano wiele metod numerycznych mających na celu rozwiązywania układów równań. W niniejszej pracy zostaną omówione dwie metody: metoda eliminacji Gaussa oraz rozkład Choleskiego dla macierzy symetrycznej dodatnio określonej. Mamy dany układ n równań liniowych z n niewiadomymi a 11 x 1 + a 12 x 2 +... + a 1n x n = b 1 (1) a 21 x 1 + a 22 x 2 +... + a 2n xn = b 2... +... +... +... =... a n1 x 1 + a n2 x 2 +... + a nn x n = b n. 3.1. Metoda eliminacji Gaussa Metoda ta polega na eliminowaniu poszczególnych zmiennych i równań. Weźmy układ równań (1), który poprzez eliminowanie poszczególnych zmiennych i równań sprowadza się do postaci trójkątnej a 11 x 1 +a 12 x 2 +... + a 1n x n = b 1 (2) a 22 x 2 +... + a 2n x n = b 2 + = a nn x n = b n. Eliminujemy x 1 z równań od 2 do n (3). Procedurę powtarzamy z macierzą A (1) o rozmiarach (n-1)x(n-1) i wektorem b (1) o rozmiarze n-1, eliminując z nich drugą zmienną i otrzymując macierz A (2) o rozmiarach (n-2)x(n-2) i wektor b (2) o rozmiarze n-2 (3). W ten sam sposób postępujemy z kolejnymi macierzami A (2), A (3),..., A (n-1) oraz wektorami b (2), b (3),..., b (n-1). a (0) 11 x 1 + a (0) 12 x 2 +... + a (0) 1n x n = b (0) 1 (3) a (1) 22 x 2 +... + a (1) 2n x n = b (1) 2... + + = a (1) n2 x 2 +... + a (1) nn x n = b (1) n gdzie: a (1) ik= a (0) ik a (0) 1k (a (0) i1 / a (0) 11) i>1, k>1, b (1) i = b (0) i b (0) 1 (a (0) i1 / a (0) 11) i>1. Układ z macierzą trójkątną (2) można następnie łatwo rozwiązać zaczynając od obliczenia wartości x n z n-tego równania, następnie wstawić xn do równania n-1 i 3

wyliczyć z niego x n-1, następnie wstawić x n oraz x n-1 do równania n-2 i wyliczyć x n-2 aż do dotarcia do równania pierwszego i wyznaczenia x 1. Metoda w swojej normalnej postaci jest skuteczna prawie zawsze, gdy elementy na głównej przekątnej macierzy współczynników są różne od zera. W takich przypadkach można zastosować modyfikacje z wyborem elementu głównego w kolumnie. 3.2. Metoda Choleskiego rozkładu LL T Rozkład Choleskiego stosowany jest dla macierzy: symetryczych (a ij = a ji ), oraz dodatnio określonych (dla każdego x 0, x T Ax >0). Po spełnieniu powyższych warunków istnieje macierz dolno trójkątna L taka, ze LL T = A. W rozkładzie Choleskiego, macierz A poddana jest faktoryzacj, wskutek czego uzyskuję się dwie macierze trójkątne L i L T, (4). Poszczególne wartości macierzy L i L T (4) wyznaczamy ze wzorów (5). dla i>j, (5). 4. Realizacja wybranych algorytmów 4.1. Algorytm eliminacji Gaussa Realizacja sekwencyjnego algorytmu eliminacji Gaussa przedstawia rysunek 2. for( s=0; s<n; ++s) { tmp = tab[i][s] / tab[s][s]; for ( i=s+1; i<n; ++i) { for ( j=s; j<=n; ++j) A[i][j] = A[i][j] - tmp * A[s][j]; } } Rys. 2 Sekwencyjny algorytm eliminacji Gaussa 4

W niniejszej pracy równoległy algorytm eliminacji Gaussa dzieli się na dwa poziomy: zrównoleglenie na poziomie klastra zadaniem tego poziomu jest zapewnienie komunikacji odpowiednich danych na poszczególnych węzłach. Jest on realizowany na rdzeniach PPE. zrównoleglenie na poziomie węzła klastra zadaniem tego poziomu jest realizacja obliczeń na dostarczonych danych. Jest on realizowany na rdzeniach SPE. Nie można zrównoleglić pierwszej pętli, ponieważ wyniki kolejnych iteracji zależą od poprzednich, natomiast można zrównoleglić drugą pętlę. Dane na których dokonują się obliczenia z drugiej i trzeciej pętli można podzielić na odpowiednie paczki danych i rozesłać je na poszczególne węzły klastra, nazstępnie dokonać równolegle obliczeń. Należy pamiętać, że wartości danych oraz rozmiar paczek zależny jest od iteracji pierwszej pętli. Ogólna idea zrównoleglenia algorytmu na klastrze opartym o architekturę procesorów CELL/B.E.: 1. rozsyłanie wiersza wiodącego macierzy A na wszystkie węzły klastra (pierwszy poziom), 2. rozsyłanie odpowiednio podzieloną macierz A na pozostałe węzły klastra (pierwszy poziom), 3. równoległe wykonanie obliczeń, wykorzystując architekturę procesorów CELL/B.E., 4. pobranie wyników z pozostałych węzłów (pierwszy poziom). Czynność ta jest powtarzana aż do momentu gdy macierz A osiągnie rozmiar n=1. Dużym ograniczeniem stanowi sieć łącząca węzły, aby uzyskać większą wydajność algorytmu, została zminimalizowana komunikacja między węzłami klastra na ile pozwolił na to algorytm. Równomierny podział obliczeń nie przyniósł oczekiwanych rezultatów, z tego powodu większą część obliczeń wykonuje się na pierwszym węźle. Taki podział pozwolił na zmniejszenie komunikacji między węzłami oraz skrócenie czasu wykonywania algorytmu. 4.2. Algorytm rozkładu Choleskiego Dla równoległej realizacji algorytmu należy skorzystać z blokowej metody rozkładu Choleskiego (Rys. 3). Metoda Blokowa LL T daje możliwość zastosowania procedur z III poziomu biblioteki BLAS. W punkcie pierwszym (6) macierz trójkątną L wyznaczam przy pomocy algorytmu rozkładu Choleskiego. W punkcie drugim i trzecim (6) można wyznaczyć odpowiednie fragmenty macierzy wykorzystując procedury biblioteki BLAS III poziomu. Czynności te powtarzam dla bloku wyznaczonej macierzy M''. 1. A=L*L T, (6) 2. W T = L T * W'' T + 0* I => L * W'' T =W T => W'' T, 3. M = W'' * W'' T + M*I => M'' = M - W'' * W'' T. 5

A W W T L LT = X M W'' M'' W W'' T I Rys. 3 Blokowa matota rozkładu Choleskiego 5. Badanie wydajności W niniejszej pracy, realizacje wybranych algorytmów zostały zaimplementowane na klastrze, zbudowanym z czterech konsol do gier SONY PlayStation3. Na każdym węźle zainstalowany jest system operacyjny Fedora Core 6. Cały układ taktowany jest zegarem 3,2 GHz. Każdy węzeł ma 256 MB XDR DRAM pamięci systemowej. Komunikację między węzłami zapewnia sieć Ethernet 100BASE-TX[6], a na węzłach wymiana danych odbywa się przy pomocy EIB (Rys. 4). SPE0 SPE1 SPE2 SPE3 SPE4 SPE5 SPE0 SPE1 PS3B - PPE SPE0 SPE1 SPE2 SPE3 PS3A - PPE PS3D - PPE SPE2 SPE3 SPE4 SPE5 PS3C - PPE SPE4 SPE5 SPE0 SPE1 SPE2 SPE3 SPE4 SPE5 Ethernet 100BASE-TX EIB 2 x 25.6 GB/s Rys. 4 Schemat komunikacji klastra 6

5.1. Badanie wydajności algorytmu eliminacji Gaussa Czas sekwencyjnej realizacji algorytmu dla macierzy 2048x2048 na jednym rdzeniu PPE wyniósł 51.60313 s. Wykorzystanie procedur z drugiego poziomu biblioteki BLAS zwiększyło jego wydajność. Największym wzrostem wydajności okazała się równoległa implementacja algorytmu na jednym węźle klastra pomiar czasu 3.87848 s. W porównaniu z jej sekwencyjną wersją realizowaną na jednym rdzeniu PPE przyśpieszenie wyniosło S(6) = 13.7. Przyśpieszenie takie jest efektem wykorzystania operacji wektorowych (SIMD) oraz zastosowaniem double buffering [5] podczas pobierania danych na poszczególnych SPE. Mimo różnych prób realizacji algorytmu, czas wykonywania algorytmu na jednym węźle klastra był krótszy niż na kilku węzłach. Głównym powodem tego, jest wymóg dużej komunikacji i synchronizacji algorytmu. A przyczyną jest bardzo wolna sieć, pomiędzy poszczególnymi węzłami klastra w porównaniu z szybka magistralą EIB (Rys. 2). Tabela 1 Pomiar czasu dla algorytmu eliminacji Gaussa PPE PPE BLAS II poziom PPE + 6 SPE PPE + 6 SPE SIMD rozmiar: 2048x2048 pojedynczej precyzji 51.60313 [s] 39.17447 [s] 5.93999 [s] 3.87848 [s] 2 x ( PPE + 6 SPE) SIMD 4.15534[s] 5.2. Badanie wydajności algorytmu rozkładu Choleskiego Tabela 2 przedstawia pomiar czasu implementacji algorytmu w różnych konfiguracjach jednostek wykonawczych. Wynika z niej, że najlepszą konfiguracją jest ta, która łącznie składa się z 4-PPE i 24-SPE - pomiar czasu 1.73396 s. Porównując z realizacją na 4- PPE i 4-SPE, przyśpieszenie wynosi 1.16. Rozpatrując pozostałe konfiguracje, opierając się na pomiarach czasowych można zauważyć, że przyśpieszenie maleje dla konfiguracji z mniejszą ilością jednostek SPE. Dużą część czasu, poszczególnych implementacji zajmuje synchronizacja oraz przesyłanie danych. Dla konfiguracji z 4- PPE i 12-SPE czas przesyłania danych między węzłami, bez wykonywania obliczeń wynosi 0.80949 s. Tabela 2 Pomiar czasu dla algorytmu rozkładu Choleskiego rozmiar: 1024x1024 pojedynczej precyzji przyśpieszenie 4 x (PPE + 1 SPE) 2.01575 [s] - 4 x (PPE + 6 SPE) 1.73396 [s] 1.16 4 x (PPE + 3 SPE) 1.79193 [s] 1.12 3 x (PPE + 6 SPE) + (PPE + 1 SPE) 2 x (PPE + 6 SPE) + 2 x (PPE +1 SPE) 1.88609 [s] 1.06 1.91282 [s] 1.05 7

6. Podsumowanie W artykule zostały przedstawione realizacje wybranych algorytmów, zaimplementowane na klastrze zbudowanym z konsol do gry SONY PlayStation3. Na podstawie badań, można zauważyć że wykorzystanie procedur z biblioteki BLAS, skraca czas wykonywania algorytmów. Zastosowanie operacji wektorowych (SIMD) zwiększa wydajność algorytmów. Najlepszym rozwiązaniem realizacji algorytmu Gaussa, okazała się implementacja na jednym węźle. Zastosowanie większej ilości węzłów nie przyniosło oczekiwanych rezultatów. Powodem tego jest duża ilość komunikacji i synchronizacji algorytmu. A przyczyną jest wolna sieć między węzłami w porównaniu z bardzo szybkim i wydajnym interfejsem EIB. Algorytm rozkładu Choleskiego, został zaimplementowany w kilku konfiguracjach przy użyciu różnej ilości jednostek obliczeniowych SPE. Ze względu na wolną sieć między węzłami, większa część obliczeń wykonywana jest na jednym węźle, co w rezultacie przyczyniło się do lepszej wydajności. Z przeprowadzonych badań dla tego algorytmu wynika że im większa ilość jednostek obliczeniowych SPE tym przyśpieszenie wzrasta. 7. Literatura [1] A. Buttari, P. Luszczek, J.Kurzak, J. Dongarra, G Bosilca, A Rough Guide to Scientific Computing On the PlayStation 3 University of Tennessee 05/2007 [2] A. E. Eichenberger, Using advanced compiler technology to exploit the performance of the Cell Broadband Enginee architecture, IBM System Journal, vol 45, NO 1, 2006 [3] K. Wierzbicki, Intel i AMD na CELLowniku! CHIP 05/2005 str. 46-48 [4] IBM, Cell Broadband Engine Programming Handbook, Version 1.0, 04/2006 [5] IBM, Programming the Cell Broadband Engine Examples and Best Practices, 12/2007 [6] http://pl.playstation.com/ps3/support/specyfikacja-techniczna-ps3.html 8