Automatic Discovery of Multi-level Parallelism in MATLAB

semanticscholar(2014)

引用 0|浏览0
暂无评分
摘要
The popularity of MATLAB in scientific and engineering domains is tempered by its performance. Highly optimized libraries, automatic thread-level parallelism for large computations within libraries, and loop-level parallel constructs in the language are some of the ways in which the language implementers have tried to recoup the performance. Greater potential for parallelism exists in typical MATLAB programs that remains unexploited. We discuss our MathWorks-sponsored effort in automatically exploiting parallelism in MATLAB programs using a combination of compile-time and run-time techniques. Our approach is inspired by data-flow-style computation and makes use of some modern C++ libraries for generating highly readable code with support for data parallelism and GPUs. 1 Motivation and Design Computing on modern high performance machines afford parallelism at multiple levels, from the vector instructions on a single core to multiple multi-core nodes connected through fast interconnects. Graphical Processing Units (GPUs) add heterogeneity and scheduling complexity to the mix. In order to shield non-expert users from the complexities and interactions of the various forms of parallelism it is often wrapped inside libraries. The libraries are carefully optimized to make use of the vector instructions of the underlying hardware, to use multiple threads when the amount of computation makes it worthwhile, and to provide versions that might utilize accelerators, such as GPUs. Indeed, this is the dominant approach to parallelism in MATLAB. With a few exceptions, such as having to specify the computations to be performed on GPUs, the process is largely automatic for the users and, hence, highly attractive from the perspective of programmability. However, it suffers from two major inefficiencies: the decisions about parallelism must be made inside libraries, which are only locally optimal, at best; and parallelism across library functions is hard to exploit. MATLAB source Octave-based parsing Type inference and SSA renaming Task identification C++ task generation Custom run-time C++ code Intel TBB M A T L A B lib ra ry T ru st or A rr ay Fi re
更多
查看译文
AI 理解论文
溯源树
样例
生成溯源树,研究论文发展脉络
Chat Paper
正在生成论文摘要