application checkpointing application programming interface asymmetric multiprocessing bit-level parallelism cache coherency cache only memory architecture central processing unit computer hardware computer network computer programming computing cost efficiency data parallelism dave marshall distributed computing distributed memory distributed shared memory embarrassingly parallel explicit parallelism global variable grand challenge problem grid computing high-performance computing hyper-threading implicit parallelism instruction level parallelism intel threading building blocks inter-process communication karp-flatt metric mimd misd massive parallel processing memory coherence message passing interface microsoft windows multiprocessing named pipe non-uniform memory access openmp posix posix threads parallel random access machine parallel computing parallel programming model parallel slowdown simd sisd shared memory architecture simultaneous multithreading software lockout speedup super-threading supercomputer superscalar symmetric multiprocessing task parallelism thread unified parallel c unix vector processor virtual memory x window system