Asynchronous task-based programming models are gaining popularity to address the programmability and performance challenges of contemporary large scale high performance computing systems. In this paper we present AceMesh, a task-based, data-driven language extension targeting legacy MPI applications. Its language features include data-centric parallelizing template, aggregated task dependence for parallel loops. These features not only relieve the programmer from tedious refactoring details but also provide possibility for structured execution of complex task graphs, data locality exploitation upon data tile templates, and reducing system complexity incurred by complex array sections. We present the prototype implementation, including task shifting, data management and communication-related analysis and transformations. The language extension is evaluated on two supercomputing platforms. We compare the performance of AceMesh with existing programming models, and the results show that NPB/MG achieves at most 1.2X and 1.85X speedups on TaihuLight and TH-2, respectively, and the Tend_lin benchmark attains more than 2X speedup on average and attain at most 3.0X and 2.2X speedups on the two platforms, respectively.
大气环流模式是研究全球气候变化及其成因的主要工具之一,在大规模异构众核的并行计算系统上高效地并行运行复杂的大气环流模式是一个具有挑战性的课题.Tend_lin是中国科学院大气物理研究所研发的第4代大气环流模式IAP AGCM-4中动力框架的热点过程,具有计算/通信比低的特点.面向国产大规模异构众核超算平台"神威·太湖之光",用OpenACC和AceMesh 2种不同的并行编程接口对Tend_lin进行优化.重点介绍了如何用数据驱动的任务并行编程接口AceMesh对其进行加速,介绍了计算循环和通信代码的任务并行方法,讨论了如何放松通信资源共享,对比了单层任务图和嵌套任务图下的任务映射等优化问题.测试结果表明,相比OpenACC,AceMesh在16~1024进程的不同并行配置下获得了平均2倍左右的性能提升,最后详细分析了性能收益的来源.
AceMesh is a dataflow-driven'task parallel programming language,which allows programmers to parallelize traditional C/C+ + program by using pragmas marking parallel regions,parallel loops and task regions with data inputs and outputs description.Then the program can be translated to a DAG-based task parallel program,being built dependency graphs at runtime and scheduled to multicore platforms efficiently.This paper analysed typical errors which may exhibit in parallelizing AceMesh programs,and introduced AceMeshCheck,a debug tool for them.The paper presented the implementation details of the tool,and discussed how it reduces the overhead of memory trace collection,and how to rebuild the three dimensional,rectangular access regions from linearized memory access sequences.Experimental results show that the tool can identify typical errors hidden in AceMesh programs with relatively low overhead.
Unified Parallel C (UPC), a parallel extension to ANSI C, is designed for high performance computing on large-scale parallel machines. With General-purpose graphics processing units (GPUs) becoming an increasingly important high performance computing platform, we propose new language extensions to UPC to take advantage of GPU clusters. We extend UPC with hierarchical data distribution, revise the execution model of UPC to mix SPMD with fork-join execution model, and modify the semantics of upc_forall to reflect the data-thread affinity on a thread hierarchy. We implement the compiling system, including affinity-aware loop tiling, GPU code generation, and several memory optimizations targeting NVIDIA CUDA. We also put forward unified data management for each UPC thread to optimize data transfer and memory layout for separate memory modules of CPUs and GPUs. The experimental results show that the UPC extension has better programmability than the mixed MPI/CUDA approach. We also demonstrate that the integrated compile-time and runtime optimization is effective to achieve good performance on GPU clusters.
This paper presented an encapsulating and nested class method to map the COBOL data to Java type system with functional equivalence.This method was applied in the COBOL2 Java translation system and it was also applied to a real business system of about 4 million lines of COBOL code.Test results show that this method is sound and effective, and the resulting Java code can run efficiently with easy maintenance.