CMSC 714 Midterm (similar to prior 714 exams, but more questions) (1) This exam is closed book, closed notes, and closed neighbor. (2) You have 75 minutes to complete this exam. If you finish early, you may turn in your exam at the front of the room and leave. However if you finish during the last ten minutes of the exam please remain seated until the end of the exam so you don't disturb others. (3) Partial credit will be given for most questions assuming I can figure out what you were trying to do. (4) Please write neatly. Print your answers if your handwriting is hard to read. If you write something, and wish to cross it out, simply put an X through it. 1. Define and explain the following terms: A. Vector Processor B. Causal Ordering C. Reduction Operation D. Space Sharing 2. Several of the parallel computers we looked at this semester provided globally shared memory but lacked cache coherence. A. Name one of those systems. B. What are the implications of having such an architecture on the programmer and programming model (for example which of the models we looked at would be well suited for this type of machine)? 3. The Valgrind and Dyninst systems each are designed to modify compiled programs. Compare and contrast how the tools work and their various features. 4. Some proponents of shared memory programming models claim the major advantage of shared memory over message passing is that don't have to worry about where your data is located since all memory is shared. Explain why this assumption is naive if performance matters. 5. Some data race detection systems, such as Eraser, use a lockset algorithm to find synchronization problems. A. Will the system find all races in a program (explain your answer)? B. Describe two examples of cases where a program can be free of data races but still violate the locking discipline checked by such systems.