串行程序并行化技术研究与一种新实现构想
详细信息    本馆镜像全文|  推荐本文 |  |   获取CNKI官网全文
摘要
随着计算机技术的飞速发展,并行计算的应用领域也越来越广。并行计算机从以前的大型专用向量机,发展到并行多处理器系统,以及现在比较流行的工作站机群系统。并行程序设计方式也从以前的数据并行发展到现在比较流行的共享内存和消息传递方式。网格计算平台的出现,使得任何一台计算机能够透明地使用网络上的资源,更是为并行计算开辟了更加广阔的发展前景。但是,各种硬件平台的差异,以及软件系统标准的不统一,使得并行程序的设计和移植变得非常困难,制约了并行计算的发展。
     针对以上问题,本文对并行计算和并行程序设计做了综述,对依赖关系分析理论和程序并行化技术进行分析和描述。根据基于共享内存方式的多线程并行模型,对于在源代码级和中间代码级进行程序并行化做了一些研究和实验。同时,对几种比较流行的中间代码(RTL、WHIRL、JAVA虚拟机指令)进行了分析,实现了一个把中间代码编译成虚拟机目标代码的汇编器。此外,还对与中间代码密切相关的虚拟机技术进行了讨论,阅读并分析了JAVA虚拟机和HEC虚拟机实现的源代码,在此基础上,提出了并行虚拟机的设计构想,通过并行虚拟机实现对串行程序的自动并行优化和达到并行程序语言的跨平台性。最后,对一些相关的工作进行了介绍和总结。
With the rapid development of computer technology, the application area of parallel computation has become wider. Parallel computers have developed from the big special vector computer to the parallel mutiple processor, and now to the more popular cluster of workstation. The design modes of parallel programming have also developed from the data parallel to the more popular design mode of shared memory and message passing. The coming into being of grid computation platform also makes a wider developing future for parallel computation. However, the difference of the hard platform and the ununiform of the soft system standards make the writing and porting of parallel programming became more difficult, which then impede the development of parallel computation greatly.
    Aiming at the problem above, the paper make an introducing of parallel computation and parallel programming at first, and then make some analysis and description about the theory of dependence relation analysis and the technology ofthe program parallelization. Basing on the muti-threads parallel model on shered memory, we make some research and test of program parallelization on source code level and intermediate representation level. At the same time, we make analysis about the several popular IR (intermediate representation) (RTL, WHIRL, JVM) and implement an assembler which can translate the IR to the object code of virtual machine.We also make some talking about the VM(Virturl Machine) technology relating to the IR, read and analyze the source codes of JVM and HEC VM. Basing on such, we provide a design idea of parallel VM, through which,we can implement the auto parallelization of serial programs and obtain the platform-independence of parallel programming language. At last, we make some introducing and summary of the related works.
引文
[1]Barry Wilkinson、Michael A1len著,陆鑫达译,《并行程序设计》,机械工业出版社,2002.1
    [2]沈志宇等著,《并行编译方法》,国防工业出版社 2000.7
    [3]李京华、陈文光著,《JAVA虚拟机规范》,清华大学出版社 1996.12
    [4]李晓梅、莫则尧等著,《可扩展并行算法的设计与分析》,国防工业出版社 2000.7
    [5]都志辉、陈渝、刘鹏著,《网格计算》,http://hpclab.CS.tsinghua.edu.cn/,2002
    [6]都志辉著,《高性能计算之并行编程技术——MPI并行程序设计》,人民邮电出版社,1999
    [7]Kenneth C.Louden著,冯博琴、冯岚译,《编译原理与实践》,机械工业出版社,2000.3
    [8]黄铠、徐志伟著,《可扩展并行计算——技术、结构与编程》,机械工业出版社,2000.5
    [9]陈英著,《编译原理》,北京理工大学出版社,2001.9
    [10]张幸儿著,《计算机编译原理》,科学出版社,1999.4
    [11]Rajkumar Buyya著,郑纬民、王东生等译,《高性能集群计算:编程与应用》(第二卷),电子工业出版社,2001.7
    [12]D M Dhamdhere著,徐旭东、金雪云等译,《系统编程与操作系统》,电子工业出版社,2001.9
    [13]Andrew S.Tanenbaum著,刘卫东、徐恪译,《结构化计算机组成》,机械工业出版社,2001.10
    [14]王学龙著,《嵌入式LINUX系统设计与应用》,清华大学出版社,2001.8
    [15]Bill Blunden著,杨涛等译,《虚拟的设计与实现》,机械工业出版社,2003.1
    [16]http://www.globus.org,Globus Quick Start Guide 2002-12-7
    [17]http://www.globus.org,Olobus 2.0 Installation Guide 2002-12-7
    [18]Dennis Gannon, Peter Beckman etc. HPC++ and the HPC++Lib Toolkit http://www.extreme.indiana.edu
    [19]http://www.mcs.anl.gov MPICH-G2
    [20]http://www.openmp.org OpenMP C and C++ Application Program
    
    Interface 2001.11
    [21]T. Lindholm, F. Yellin, The Java Virtual Machine Specification, http://www.javasoft.com/docs/books/vmspec/,1996
    [22]http://www.extreme.indiana.edu/hpjava/,javab_doc.ps
    [23]http://www.extreme.indiana.edu/hpjava/,javab_man.ps
    [24]http://www.extreme.indiana.edu/hpjava/,javar_doc.ps
    [25]http://www.extreme.indiana.edu/hpjava/,javar_man.ps
    [26]http://www.extreme.indiana.edu/sage/,docs.html
    [27]Alfred Aho, Ravi Sethi,《Compliers:principles, Techniques, and Tools》,Addison-Wesley, 1988
    [28]Jon Meyer.Jasmin: a Java Assembler Interface. http://www.cat.nyu.edu/meyer/jasmin/.
    [29]http://www.cs.uh.edu/dragon/,Overview of the Open64 Compiler Infrastructure
    [30]http://mrl.nyu.edu/meyer/jvm/,jasmin.html
    [31]http://www.jflex.de/,manual.html
    [32]http://www.cc.gatech. edu/gvu/people/Faculty/hudson/java cup, home. html
    [33]http://www.blackdown.org/~kbs/,jas.html
    [34]http://www.kaffe.org/
    [35]http://www.hungry.com/products/japhar/
    [36]http://www.irisa.fr/compose/harissa/
    [37]http://www.eecg.toronto.edu/jupiter
    [38]http://www.gnu.org/software/ Free Software Foundation, GCC compiler collection
    [39]http://open64.sourceforge.net, WHIRL Intermediate Language Specification, whirl.pdf.
    [40]http://open64.sourceforge.net/,Open64
    [41]http://gcc.gnu.org/,GNU Compiler Collection (GCC)
    [42]Paulo Bonzini, Using and porting GNU lightning, ftp://alpha.gnu.org/gnu/,2000
    [45]http://open64.sourceforge.net, WHIRL Symbol Table Specification, symtab_Pro64_SGI.pdf.
    
    
    [46]J.Gosling, B. Joy, G. Steele, The Java Language Specifcation,1996, http://www.javasoft.com/docs/books/jls/
    [47]S.E. Hudson, CUP LALR Parser Generator for Java http://www.cs.princeton.edu/~appel/modern/java/CUP/
    [48]B.Jamison, BYacc/J, http://troi.lincom-asg.com/~rjamison/byacc/
    [49]T. Lindholm, F. Yellin, The Java Virtual Machine Specification,http://www.javasoft.com/docs/books/vmspec/, 1996,
    [50]Shawn Silverman. D-Java: a Class File Disassembler,http://home.cc.umanitoba.ca/~umsilvel/djava/.