Traditional programming environments represent program source code as a set of source files. These files have various 'dependencies' on each other, such that a file needs recompilation if it depends on a file which has changed. A 'build tool' is used to process these dependencies and bring the appli
Fine-grain compilation for pipelined machines
โ Scribed by Alexandru Nicolau; Keshav Pingali; Alexander Aiken
- Book ID
- 104633718
- Publisher
- Springer US
- Year
- 1988
- Tongue
- English
- Weight
- 913 KB
- Volume
- 2
- Category
- Article
- ISSN
- 0920-8542
No coin nor oath required. For personal study only.
โฆ Synopsis
Computer architecture design requires careful attention to the balance between the complexity of code scheduling problems and the cost and feasibility of building a machine. In this paper, we show that recently developed software pipelining algorithms produce optimal or near-optimal code for a large class of loops when the target architecture is a clean pipelined parallel machine. The important feature of these machines is the absence of structural hazards. We argue that the robustness of the scheduling algorithms and relatively simple hardware make these machines realistic and cost-effective. To illustrate the delicate balance between architecture and scheduling complexity, we show that scheduling with structural hazards is NP-hard, and that there are machines with simple structural hazards for which vectorization and the software pipelining techniques generate poor code.
๐ SIMILAR VOLUMES
A coarse-grain parallel program typically has one thread (task) per processor, whereas a finegrain program has one thread for each independent unit of work. Although there are several advantages to fine-grain parallelism, conventional wisdom is that coarse-grain parallelism is more efficient. This p