PAR Class 2, Thu 2021-01-28
Table of contents
1 Webex, classes, etc
I'll continue to use Webex Meet for awhile because it lets me show the chat window simultaneously.
In Webex (formerly called Webex Teams), I have a space for people to talk.
Mediasite has recordings of classes.
My blog has transcripts and chats. See the Files tab.
2 LLNL parallel tutorial
We'll quickly finish it, starting at Parallel Programming Models. https://computing.llnl.gov/tutorials/parallel_comp/
3 Material
-
Think about these questions.
Why have machine cycle speeds stopped increasing?
What architectures do the top 3 machines on the Top 500 list use?
Which one of the following 4 choices are most GPUs: SISD, SIMD, MISD, MIMD.
Which one of the following 4 choices are most current multicore CPUs: SISD, SIMD, MISD, MIMD.
Per Amdahl's law, if a program is 10% sequential and 90% parallelizable, what is the max speed up that can be obtained with an infinite number of parallel processors?
4 Recently obsoleted parallel tech
Intel Xeon Phi
IBM BlueGene
5 My research
I do parallel geometry algorithms on large problems for CAD and GIS. See my home page. If this is interesting, talk to me. Maybe you can do something that leads to a jointly-authored paper.
6 parallel.ecse
I've set up account for you.
Your user name is your rcsid.
I'll mention your initial password. Change it.
Play with them. I recomend connecting with ssh.
From outside RPI, you need to use the vpn.
Its accounts are completely separate from RCS; I will use the same userid for convenience. Changing your password on parallel does not affect your RCS password, and vv.
7 OpenMP
https://www.openmp.org/ Browse it.
We'll see some examples running on parallel, at /parclass2021/files/openmp/rpi
-
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.