PAR Class 3, Thurs 2019-01-17

1   parallel.ecse

Its accounts are completely separate from RCS; I just had you use the same userid for convenience. Changing your password on parallel does not affect your RCS password, and vv.

3   Student talks - 1st set

  1. Go to https://doodle.com/poll/viz67bb7xrw45yv3. Pick a topic by entering your name and rcsid (because sometimes students have similar names and sometimes students use different names from what's on the classlist). The topics are:
    1. Describe the fastest 2 computers on the top500 list. https://www.top500.org/lists/2018/11/
    2. Describe computers 3 and 4 on top500.
    3. Describe computers 5 and 6 on top500.
    4. Describe RPI's Blue Gene.
    5. Summarize python's parallel capabilities.
    6. Summarize Matlab's parallel capabilities.
    7. Summarize Mathematica's parallel capabilities.
    8. Summarize MPI.
    9. Describe an application where physics needs/uses parallel computing.
    10. Describe an application where astronomy needs/uses parallel computing.
    11. Describe an application where biology needs/uses parallel computing.
    12. Describe an application where astronomy needs/uses parallel computing.
    13. Give an application where machine learning needs/uses parallel computing.
    14. Give an application where computational fluid dynamics needs/uses parallel computing.
    15. Summarize OpenACC.
    16. Summarize pthreads.
    17. Other related topic of your choice. Tell me an I'll add it to the list.
  2. Note that any topic can be picked at most once.
  3. Two students may work together to present one talk.
  4. Prepare and give 5-10 minute talk next Thurs 1/24. A team would jointly give one 5-10 minute talk.

4   OpenMP

  1. We'll see some examples running on parallel, at /parallel-class/openmp/rpi

  2. We saw that running even a short OpenMP program could be unpredictable. The reason for that was a big lesson.

    There are no guarantees about the scheduling of the various threads. There are no guarantees about fairness of resource allocation between the threads. Perhaps thread 0 finishes before thread 1 starts. Perhaps thread 1 finishes before thread 2 starts. Perhaps thread 0 executes 3 machine instructions, then thread 1 executes 1 instruction, then thread 0 executes 100 more, etc. Each time the process runs, something different may happen. One thing may happen almost all the time, to trick you.

5   Compiling and running

  1. c++ compilers: g++-8 etc., clang-7 etc.. I'm updating them.
  2. Measuring program times when many people are on the machine:
    1. This is a problem.
    2. One partial solution is to use batch to queue your job to run when the system is unloaded.