Aufgaben aus Übungen und Klausuren

Betrachten Sie folgendes Programmfragment zur sequentiellen Berechnung von Pi

   final long num_steps = 1000000;
   double x;
   double sum = 0.0;
   double step = 1.0/((double) num_steps);
   for (int i = 1; i < num_steps; i++) {
       x = (i+0.5)*step;
       sum += 4.0/(1.0+x*x);
   } 
   double pi = sum * step;
  1. Parallelisieren Sie das Programm, d.h. die for-Schleife, mit Hilfe von Java Threads. Achten Sie dabei auf die richtige Synchronisation der globalen Variablen. Die Anzahl der Threads wird durch die Variable numThreads vorgegeben.

  2. Parallelisieren Sie das Programm mit Hilfe von verteilten Java Prozessen und Kommunikation über TCP/IP. Sie brauchen keinen Code zum Starten der Prozesse anzugeben, d.h. Sie können davon ausgehen, dass Ihre Prozesse schon auf geeigneten Rechnern laufen.

  3. Die Thread-parallele Programmversion zur exakten Lösung des Traveling Salesman Problems verwendet globale und lokale Arbeitsstapel. Beschreiben Sie den Algorithmus und erläutern Sie die Vor-und Nachteile dieses Ansatzes.


© Universität Mannheim, Rechenzentrum, 2007.

Last modified: Tue Aug 19 16:57:10 CEST 2008