FINAL LECTURE Reports: Intro Serial Problem Concurrent Architecture Performance Results Lessons Learned Conclusion What was this class about, really? - something introductory that I missed - not everyone is convinced that concurrency and parallelism are things that we're all going to be doing - Intel sells sand, it's really cool sand, and they're really good at making it with low error rates At Intel, Job 1 is sell processors. Job 1A is to encourage the development of software that requires new processors. Microsoft makes money through NEW COMPUTER SALES (no one upgrades). Moore's law is kaput, and concurrency seems to be the only way to get performance through the roof again (unless some new physical technology catches on). We looked at the nature of decomposition: 1) task parallelism (servers, deferring work, prefetching, speculation) - Challenge: eliminate dependencies - Pthreads, OpenMP, AME 2) data parallelism (big numbers, large structures) - TBB, OpenMP (goes both ways) Dependency management boils down to constraints on the possible execution paths of the program. 2 Flavors: 1) Conservative (prevention) - Mutexes & CVs - Atomic ops 2) Optimistic - Cache/verify -- handcoded, lock free, need to worry about memory model - Transactional memory Programming Model X Composibility X Cache and verify is hard X Transactional memory is hard