All new computers have multicore processors. To exploit this hardware parallelism for improvedperformance, the predominant approach today is multithreading using shared variables and locks. Thisapproach has potential data races that can create a nondeterministic program. This paper presents apromising new approach to parallel programming that is both lock-free and deterministic. The standardforall primitive for parallel execution of for-loop iterations is extended into a more highly structuredprimitive called a Parallel Operation (POP). Each parallel process created by a POP may read sharedvariables (or shared collections) freely. Shared collections modified by a POP must be selected from aspecial set of predefined Parallel Access Collections (PAC). Each PAC has several Write Modes thatgovern parallel updates in a deterministic way. This paper presents an overview of a Prototype Librarythat implements this POP-PAC approach for the C++ language, including performance results for twobenchmark parallel programs.
展开▼