introduction to parallel software
task and data parallelism