Abstract
Linear-C is a data-parallel extension to C. It extends C by treating arrays (or more precisely, aggregate value) as first-class citizens. It provides activity association and segment association to control aggregate values in a computation. It also supplies new operators for aggregate values. Linear-C is designed to be intuitively simple to learn, to use, yet powerful enough to express many kinds of data parallelism. In this report we show that (1) the rationale behind our decision to choose a particular manipulation rule, and (2) the whole picture of the language in a systematic way. In the first part, we identify the trade-offs between the simplicity, the expressiveness, and the implementability of Linear-C. After that, the entire language is introduced systematically, to show the simplicity of the language model and the consistency of the manipulation rules. Finally, we conclude the report in terms of possible future research directions.