Parallel Systems - Practica

main page (theory)   -   project
  Until 2016, the practicum was part of the course. Now, we discuss some of the exercises during the theory.

  Documentation: parallel.vub.ac.be


  Utility classes (check main method for usage) DOWNLOAD v1.1 jar-file  DOWNLOAD v1 jar-file  DOWNLOAD  code   DOWNLOAD  our default libraries (install at least mpj.jar)

  Room 4k228 computer specifications


    • CPU Speed: 2.66 GHz
    • 64 bit processor
    • Level 2 cache: 2 x 4 MB (each L2 cache is shared between 2 cores)
    • Level 1 instruction cache: 4 x 32 KB
    • Level 1 data cache: 4 x 32 KB
    • Architecture
  • RAM: 4 GB
  • Graphics Card: NVIDIA GeForce 9400GT
    • has 16 'cores' and supports CUDA for general purpose computing...

  Exercises

Tips:
DOWNLOAD   Exercises 1-10

Memory Access Overhead (NOT THIS YEAR)
       1.   Test the cache miss penalty with the array traveling program ArrayWalking.   Solution
Multi-threading

      2.   Test if latency hiding can be obtained with file reading from system and from url in a separate thread (FileReading.java).   Solution      3.   Implement a multithreaded fibonacci algorithm (Fibonacci.java).   Solution!      4.   Implement a multithreaded matrix multiplication.    Solution
      5.   Test the the performance of various Count3s implementations.     Solution

        6.   Check Invariance-breaking with volatile (Slide 55). Solution        7.   Break the 'monitorness' of an object so that two synchronized methods (here: f1 and f2) can be accessed simultaneously. Solution
       8.   Implement a Barrier (PPP page 193) and call the barrier in the previous exercise after each iteration. Solution
Christophe De Troyer's November 2014 solution takes care of these issues!
        9.   Implement a multithreaded solution for the following matrix update algorithm. See figure and Wavefront.java.     Solution         10. Implement a multithreaded solution for this iterative algorithm. Start from BarrierWithReduction.java. Solution
        11.   An application of the double condition problem (cf PPP p. 173) with a deadlock: ApplesOrangesWithDeadlock.java. Make it deadlock-free.             12.   Computing the surface of the Mandelbrot set Mandelbrot.txt.     
        OPTIONAL: Implement an efficient and deadlock-free solution for the Dining Philosophers problem.

Message-passing
           DOWNLOAD  Exercises code 13-18  -  FastMPJ Download   -  MPJExpress Quick Start (Installation and user guide, Environment variables for FastMPJ , etc)  -   MPJ Express API doc  -  Quick reference 1 and page 2

      13.   Implement a message-passing CountingPrimes algorithm (start from Counting Primes and  ).     MPITest Solution    Solution with Collective Communication (by Sarah ElShal)       14.   Study the default send & receive protocol (DefaultProtocol.java) which can result in a deadlock situation.

      15.   Implement a message-passing version of the BarrierWithReduction algorithm (exercise 10). Solution

      16.   Implement a message-passing version of the matrix update algorithm using the wavefront approach (exercise 9).    Complete solution
 
      17.   Java provides automatic object serialization.       18. NOT THIS YEAR. Test the communication performance of point-to-point communication.

GPU computing
  
        go here


Performance Analysis (NOT THIS YEAR)
  
      23.   Design and do a performance analysis of a parallel pipeline algorithm.
Data[] data = getData();
Process[] processes = createProcesses();
for(Data d: data)
    for(Process p: processes)
       p.process(d);


Generic Parallel Solutions (NOT THIS YEAR)

       19.   Design a two-fold generic parallel solution for data-parallel farming algorithms (assume independent data parallelism).     Interface Definition  Ruben's implementation
       20.   Transform the CountingPrimes program into a generic parallel solution that can be applied for a larger class of problems, without increasing the complexity of the solution.       21.   Implement a message-passing generic framework for reduction operations.       22.   Design a two-fold generic parallel solution for genetic algorithms.       23.   Design a two-fold generic parallel solution for algorithms that can be pipelined.
Data[] data = getData();
Process[] processes = createProcesses();
for(Data d: data)
    for(Process p: processes)
       p.process(d);




- Back to the top -