Niska cena Raspberry Pi sprawiła, że komputer ten jest wszechobecny. Znaleźć go można w wielu domach, często w wielu egzemplarzach. Dodatkowo, biorąc pod uwagę fakt, że nowsze wersje Raspberry Pi są bardziej wydajne i z pewnością część użytkowników zastąpi dotychczasowe minikomputery nowszymi, liczba „leżących odłogiem” Raspberry Pi z pewnością będzie szybko rosła.
Nieużywane Raspberry Pi można w całkiem łatwy sposób wykorzystać do stworzenia systemu o cechach superkomputera, a więc maszyny przetwarzającej dane równolegle i zdolnej do wykonywania programów napisanych dla superkomputerów. Sumaryczna moc obliczeniowa, tak jak w przypadku wszystkich nowoczesnych superkomputerów, zależeć będzie przede wszystkim od liczby modułów, a więc liczby rdzeni przetwarzających dane i ich zegarów taktujących. W przypadku Raspberry Pi wiele będzie zależało od zastosowanej generacji mikrokomputera.
Obliczanie wydajności
Raspberry Pi 1 zostało wyposażone w układ Broadcom BCM2835 z pojedynczym, 32-bitowym rdzeniem ARM1176JZF-S, taktowanym zegarem 700 MHz. Raspberry Pi 2 ma już układ Broadcom BCM2836, a więc cztery rdzenie Cortex-A7, taktowane zegarem 900 MHz. Najnowsze Raspberry Pi 3 poszło o krok dalej – zastosowany układ to 64-bitowy Broadcom BCM2837, z czterema rdzeniami Cortex-A53, taktowanymi zegarem 1,2 GHz. Można też wspomnieć o module Raspberry Pi Zero, z układem takim jak w Raspberry Pi 1, ale szybszym, bo taktowanym zegarem 1 GHz.
Moc obliczeniową komputera można przedstawiać na kilka sposobów. W przypadku typowych procesorów najczęściej porównanie opiera się na jednostce MIPS, tj. milionach wykonywanych instrukcji na sekundę (Mega Instructions Per Second).
Nie trzeba być specjalistą od architektury komputerów, by wiedzieć, że różne procesory w ramach jednej instrukcji są w stanie wykonać różne liczby operacji, a tym bardziej – przetworzyć różne ilości danych. Liczba wykonywanych operacji zależy od złożoności poleceń kodu maszynowego i w efekcie dostępności nietypowych instrukcji, a ilość przetwarzanych danych w ramach jednej operacji w istotnym stopniu zależy też od liczby bitów danych, przyjmowanych przez instrukcję i wielkości rejestrów. Naturalnie, komputery 64-bitowe będą pod tym względem w uproszczeniu, 2 razy bardziej wydajne niż jednostki 32-bitowe. W efekcie wydajność podawaną w MIPSach nierzadko wylicza się w oparciu o praktyczne testy.
Jednym z takich testów jest Dhrystone, który (ze względów historycznych) porównuje wydajność badanego komputera do minikomputera VAX 11/780 z 1977 roku, a którego wydajność w operacjach na liczbach całkowitych szacowana była na 1 MIPS.
Suche obliczenia mogłyby wskazywać, że 4 razy więcej rdzeni w Raspberry Pi 2 względem RPI 1 oraz o niecałe 30% szybsze taktowanie powinno skutkować trochę ponad 5-krotnym wzrostem wydajności. Natomiast 64-bitowa architektura i zegar 1,2 GHz powinny sprawić, że Raspberry Pi 3 będzie niemal 14 razy szybsze niż RPI 1. W praktyce jednak, w operacjach na liczbach całkowitych, testy wskazują jedynie ok. dwukrotny wzrost wydajności pomiędzy Raspberry Pi 1 a Raspberry Pi 2 i trochę ponad półtorakrotny pomiędzy Raspberry Pi 2 a Raspberry Pi 3. W efekcie Raspberry Pi 3 w testach takich obliczeń jest niecałe 3 razy szybsze niż Raspberry Pi 1, jeśli nie stosuje się podkręcania zegara. Raspberry Pi 1 uzyskuje około 850 DMIPS (Dhrystone MIPS), Raspberry Pi 2 ok 1540 DMIPS, a Raspberry Pi 3 – 2440 DMIPS. Dla porównania, procesory Intel Core i7 uzyskują od ok. 15000 do 35000 DMIPS, w zależności od modelu, taktowania, dodatkowych zestawów instrukcji wykorzystywanych w trakcie testu oraz kompilatora i systemu operacyjnego. Można by się więc spodziewać, że 30 połączonych ze sobą Raspberry Pi 1 (lub 10 Raspberry Pi 3) ma szansę konkurować z nowoczesnymi (nieserwerowymi) jednostkami Intela z najwyższej półki.
A w jaki sposób taki klaster Raspberry Pi można porównać do superkomputerów? Tu pojawia się inny problem – wydajność superkomputerów od lat liczona jest we FLOPSach, a więc w liczbie operacji zmiennoprzecinkowych, które maszyna jest w stanie wykonać w ciągu sekundy (Floating Point Operations Per Second). Co więcej, wydajność będzie różna, w zależności od tego, czy mowa o operacjach na liczbach pojedynczej czy podwójnej precyzji.
CPU pierwszego Raspberry Pi ma wydajność rzędu 40 MFLOPS dla liczb podwójnej precyzji i 60 MFLOPS dla liczb pojedynczej precyzji. CPU drugiego Raspberry Pi ma wydajność rzędu 120-150 MFLOPS dla liczb podwójnej precyzji (w zależności od testu) i ok. 155 MFLOPS dla pojedynczej precyzji. RPI 3 uzyskuje ok. 180 – 190 MFLOPS dla obu precyzji, ze względu na 64-bitowy rdzeń CPU.
Dla porównania – superkomputer Cray-1 z 1975 roku miał 160 MFLOPSów, a więc każde Raspberry Pi 3 w klastrze to tak jakby jeden dodatkowy Cray-1. To niewiele, jak na obecne czasy, ale jest jeszcze jeden aspekt: układy Broadcoma użyte w RPI także zawierają jednostki GPU.
Jednostka do obliczeń graficznych świetnie sprawdza się w operacjach zmiennoprzecinkowych. Ta zastosowana w Raspberry Pi 1 i 2 ma moc obliczeniową na poziomie 24 GFLOPS, a ta z Raspberry Pi 3 – 28,8 GFLOPS. Oznacza to, że użycie GPU w Raspberry Pi pozwala zwiększyć wydajność modułu tworzonego przez nas superkomputera 600-krotnie, a każdy Raspberry Pi 3 dodany do klastra będzie odpowiadać 180 superkomputerom Cray-1. Ba! W pojedynczym Raspberry Pi pierwszej generacji drzemie ponad dwukrotnie większa moc obliczeniowa niż w superkomputerze IBM Deep Blue, znanym z tego ze pokonał on Garriego Kasparowa w szachy. 100 starych już Raspberry Pi pierwszej generacji ma teoretycznie sumaryczną moc obliczeniową na poziomie 500. superkomputera w rankingu najlepszych komputerów na świecie w 2002 roku. A zaprezentowany w dalszej części sposób można równie dobrze wykorzystać w standardowych komputerach i z pomocą nowoczesnych kart graficznych uzyskać znacznie lepsze rezultaty.