major concern for Windows developers
-need help paralleliz ing applications
-performance suffers with new features
multicore processors are here
-performance burden shifted to software.
-enables new users experiences
Parallel Computing platform team
-help is on the way: visual studio 2010.
parallel application development
the basic: parallelism is about performance
1. understand your goals
2. measure existing performance
3.performance tuning, start with sequential version
4. identify opportunities for parallelism, hide latency, speed up cpu bound phases.
Testing: use realistic benchmark.
-parallelize only if necessary, but PLAN for it.
-I/O, memory latency and algorithmic optimizations, often sufficient to meet goals.
-only parallelize if you need to, because parallelization introduces bugs and complexity.
-ray tracer program
-locality is where the bottleneck lies. The order of nested loops can have huge impact.
-cache miss issue.
-step by step fixing each performance bottleneck by going through
critical section, cache miss, file buffer, thread block, using concurrency analysis tools.
Visual studio profiling tools
-Managed memory usage analysis
1.Compare actual performance against goals
2.Divide and conquer
-identify scenario phases
-tackle biggest contributors first
opportunities for parallelism
1. identify opportunities for parallelism
-speed-up CPU-bound phases
-overlap/hide delays fro m user experience
2. visual studio 2010 concurrence analysis tool.
1.cpu utilization analysis
2.Thread blocking analysis
3.core execution analysis
-sometimes performance issues only appear in Release version( debug version would run fine).
Task parallel library
-parallel language integrated query.
-parallel, for, parallel foreach
parallel pattern library
-parallel task invocations
remaining developer tasks
1.ensure that parallel tasks can execute concurrently