Automatic Parallel Computing (APC) is a comprehensive runtime for parallel computing. It is intended for servers aiming for low-latency, high-throughput, and transactional consistency as well as for High Performance Computing. APC is found on Automatic Transactional Memory with the object of defining a method of automatically parallel programs. APC is a novel computational model that facilitates utilizing the increasing number of core/processors. As a whole, APC brings performance, productivity, and portability.
Given the increasing number of the processing elements, high-performance implies highly parallel computing which is composed of tasks executed in parallel. Automatic Parallel Computing not only provides a task scheduler that hides all low-level details of efficient threading but also, using an innovative memory query API, automatically detects intersections of task's side-effects and tasks are executed lock-free and without thread context switches.
Productivity comes with reducing the complexity of programming. However, highly parallel computing on multiple processing elements does not make it simpler. Automatic Transactional Memory introduces query-oriented programming for writing highly parallel programs with intrinsic parallelism. Query-oriented programming not only increases programming productivity but also reduces costs of program maintenance and enhancements.
Software and hardware evolve on different life-cycles. Hardware engineers continue innovating to make hardware smaller, faster and more energy efficient. Business applications, on the other hand, align with their businesses. Software portability increases business value of a program as long-term investment. APC decouples application logic of a program from system logic for an underlying computing platform; thus, the two can vary independently.