Automatic parallelization improves the performance of serial program by automatically converting to parallel program. Automatic parallelization typically works in three phases: check for data dependencies in the input program, perform transformations, and generate the parallel code for target machine. Though automatic parallelization is beneficial, it is not done as a part of compiling process because of the time complexity of the data dependence tests and transformation techniques. Data dependencies arise because of data access from memory required for the execution of instructions of the program. In a program, memory is allocated for variables like scalars, arrays and pointers. As of now, different techniques are used to identify data dependencies in scalars, arrays and pointers in a program. In this paper, we propose a graph based Data Dependence Identifier (DDI), which is capable of identifying all types of data dependencies that arise in all types of variables, in polynomial time. In our proposed DDI model, for identifying data dependence in a program, we represent a program as graph. Though many graphical representation of program exist, our approach of representing a program as graph takes a different approach. Also using our DDI model, one can perform basic transformations like dead code elimination, constant propagation, and induction variable detection.
Introducing Molly: Distributed Memory Parallelization with LLVM
为分布式内存机器编程一直是一项乏味的任务,但这是必要的,因为编译器本身还没有足够的能力为这样的机器进行优化。Molly是LLVM编译器工具链的一个扩展,如果程序被组织在静态确定的循环控制流中,它能够分发和重组工作负载和数据。这些被表示为多面体整数点集,允许应用于它们的程序转换。程序员可以根据需要声明内存分布和布局,并自动生成必要的异步MPI通信。主要动机是在IBM Blue Gene/Q超级计算机上运行Lattice QCD模拟,但由于实施尚未完成,本文展示了Conway生命游戏的功能。
Chunks and Tasks: a programming model for parallelization of dynamic algorithms
我们提出了块和任务,一个并行编程模型建立在抽象的数据和工作。应用程序员指定如何将数据和工作分别拆分为更小的片段、块和任务。Chunks and Tasks库将块和任务映射到物理资源。通过这种方式,我们寻求将用户友好性与高性能相结合。应用程序员可以使用几个简单的构建块来表达并行算法,定义数据和工作对象及其关系。不需要显式的通信调用;工作和数据的分发由Chunks和Tasks库处理。这使得需要动态分配工作和数据的复杂应用程序的高效实现变得更加容易。同时,Chunks and Tasks对数据访问和任务依赖性施加了限制,这有助于开发高性能并行后端。我们讨论了编程模型的基本抽象,以及性能和故障恢复的考虑。我们还提出了一个试点C++库实现集群的多核机器,并证明其性能稀疏分块矩阵矩阵乘法。
MPI-rical: Data-Driven MPI Distributed Parallelism Assistance with Transformers
Ben-Gurion University(本-古里安大学);Israel Atomic Energy Commission(以色列原子能委员会);Intel Labs(英特尔实验室);Nuclear Research Center – Negev(内盖夫核研究中心);Technion – Israel Institute of Technology(以色列理工学院)