Introducing A-Cell for Scalable and Portable SIMD Programming

A-Cell is a high-level abstraction of fine-grained parallelism specifically designed to be applicable to all range of parallel devices from super computers based on CPUs or GPUs, to network of embedded devices. To achieve this, A-Cell adopts a programming model called "connectionist computing" and with that takes a leap step away from Turing programming model. Also, in contrast with most common solutions like PGAS that are holistic, the philosophy of A-Cell is reductionist. An ACell encapsulates a fine-grained task with its related variables. A source-to-source compiler translates the program to a set of programs that are compilable to the target devices. Execution of the task is through massive instantiation of an A-Cell prototype. The runtime system takes the responsibility of distributing A-Cell instances between all available nodes, cores or multiprocessors (MPs). The runtime system also assures synchronization and consistency between A-Cell instances. This paper introduces the theoretical aspect of A-Cell, its semantics and its design logic, and reports the progress made for its materialization, including the A-Cell simulator, C/C++ runtime system, and precompiler.