sZimmermann
Posts: 3
Joined: Mon Feb 18, 2013 9:09 am

Benchmark Cluster

Thu Feb 21, 2013 6:48 am

Hallo Zusammen,

Weiss jemand wie man mit einem Raspberry Pi Cluster eine schwierigere Berechnung durchführen kann als die Berechnung der Zahl Pi?
Diese ist bei dieser Anleitung: http://www.southampton.ac.uk/~sjc/raspbe...ampton.htm standartmässig enthalten.
Ich frage weil ich die Leistung von mehreren Raspberrys berechnen will und schauen wie schnell einer alleine ist und wie schnell mehrere zusammen.

Danke schonmal
sZ

User avatar
Hiswif
Posts: 664
Joined: Sat Oct 13, 2012 11:54 am
Contact: Website

Re: Benchmark Cluster

Thu Feb 21, 2013 6:01 pm

Hmm. Du könntest es mit hash werten versuchen. Kann dir den Algorithmus zur paralellisierung aber leider nicht sagen. Das findest du aber garantiert bei Google.
http://technikegge.blogspot.de

Homwer
Posts: 82
Joined: Wed Jun 27, 2012 12:40 am

Re: Benchmark Cluster

Thu Feb 21, 2013 7:52 pm

http://www.raspberrypi-spy.co.uk/2012/0 ... pberry-pi/

Da findest du ein Script um primezahlen zu berechnen - kannst selbst eingeben wie viele - hat mir sehr geholfen um die Leistung meiner Kühlkörper zu testen :-)

sZimmermann
Posts: 3
Joined: Mon Feb 18, 2013 9:09 am

Re: Benchmark Cluster

Tue Feb 26, 2013 9:11 am

Ich danke euch für die Antworten.
Leider hilft uns dieser Benchmark nicht direkt weiter, da er nur auf einem einzelnen Raspberry pi durchgeführt wird.
Jedoch möchte ich die Berechnung auf 3 pi's aufteilen und durchführen.

Gruss sZimmermann

Autchirion
Posts: 9
Joined: Thu Mar 14, 2013 12:27 pm

Re: Benchmark Cluster

Wed Mar 20, 2013 5:32 pm

Hallo,

ich habe mich jetzt auch etwas damit beschäftigt und habe mal folgenden kleinen Code-Schnipsel geschrieben:

Code: Select all

#include <stdio.h>
#include </usr/include/math.h>

int main (int argc, char *argv[])
{
        unsigned long long end=100000000; //maximum: 18 446744 073 709 551 615
        double vz=-1;
        long double pi=0;
        unsigned long long i=0;
        double a=-1;
        int fortschritt=0;
        for (i=0; i<end; i++)
        {
                vz=pow(a,(double)i);
                pi+=(long double)vz/((long double)(2*i+1));
                if(i%(end/100)==0 && i!=0)
                {
                        fortschritt=i*100/end;
                        printf("Fortschritt: %i Prozent\n",fortschritt);
                }
        }
        pi=pi*4;

        printf("pi: %.80f \n",pi);
        return(0);
}
Die Berechnung läuft nach Leibniz (1682, alt, aber einfach ;-) ). Um die Rechenzeit zu erhöhen, musst du end einfach erhöhen, Mein Pi (Model B, 950MHz, Kühlkörper und es ist sehr kalt) braucht man für den code wie ich ihn gepostet habe 200 Sekunden. Um so höher du die Variable "end" setzt, um so länger dauert es.

Ich weiß nicht ob du weißt wie man C Code compiliert, darum der Hinweis:

Code: Select all

nano PiCalc.c
öffnet dir nano, da kopierst du den Code einfach rein, dann drückst du "strg"+"x", drückst "j" und dann Enter.
anschließend kannst du mit dem Befehl:

Code: Select all

 gcc -o PiCalc PiCalc.c -lm
compilieren, damit du es mit:

Code: Select all

./PiCalc
ausführen kannst, wenn du es nur auf einem PI ausführen willst.

Weiter bin ich leider noch nicht, wie ich das jetzt zu mpiexex, bzw. eben mpich bekomme weiß ich noch nicht, vlt. bist du da besser und kannst mir da nen Tipp geben wie ich dem Befehle übergebe... :D

[EDIT]
sodele, habe es selbst rausgefunden, nachdem du die .c Datei erstellt hast compilierst du den code mit:

Code: Select all

mpicc -o PiCalcMPI PiCalc.c -lm
anschließend erstellst du deine machinefile und führst deinen Code mit dem Befehl hier aus:

Code: Select all

mpiexec -f machinefile -n 2 ~/test/PiCalcMPI
ich hatte zuerst versucht das direkt über

Code: Select all

mpiexec -f machinefile -n 2 PiCalcMPI
durchzuführen, das hat aber nicht geklappt wenn ich in dem Verzeichniss war, also ganz einfach die Pfadangabe mit dazu (musst du halt für dich anpassen) und ab geht die wilde Fahrt! Es wird dann übrigens keine Ausgaben geben, bis er komplett fertig ist, wie das geht habe ich leider nicht rausgefunden, printf() Ausgaben werden von mpich leider alle gesammelt.
[/EDIT]

Return to “Deutsch”