课题基金 / 基金详情

SOFTWARE: Compiler Techniques for High-Performance Computing in Java

SOFTWARE: Compiler Techniques for High-Performance Computing in Java
软件:Java 中高性能计算的编译器技术
批准号:
0234345
负责人:
Ken Kennedy
金额:
$32.0万
依托单位国家:
美国
项目类别:
Continuing Grant
财政年份:
2003
资助国家:
美国
项目状态:
已结题
起止时间:
2003-02-01 至 2006-01-31

项目摘要

项目成果

Ken Kennedy的其他基金

相似基金

相关文献

中文摘要
翻译
自1995年首次亮相以来,Java迅速获得了软件开发人员的认可,成为许多应用程序的首选语言,在这些应用程序中,可移植性和可靠性是至关重要的。Java对干净的面向对象(OO)设计、一次编写、随处运行的可移植性、全面的静态类型检查、自动存储管理和安全执行语义的支持极大地提高了程序员的工作效率和软件的可靠性。尽管有如此高的兴趣,Java在高性能计算领域的进展甚微,因为它太慢了。当Java程序以干净的、面向对象的、广泛使用多态性的风格编写时,性能损失尤其严重。我们最近对Java性能的研究表明,用这种面向对象风格编写的应用程序比用类似于Fortran和c的更繁琐的风格编写的应用程序会产生十倍甚至更多的性能损失。如果这种性能差距不能弥合,Java的面向对象优势将无法实现计算密集型应用程序,从而浪费了彻底改变高性能编程的机会。我们建议通过对编译器技术的研究来解决这个问题,这些技术使得在不牺牲运行时性能的情况下使用Java语言的全部功能来开发应用程序和组件库成为可能。尽管这些策略适合在编译器中使用,但我们将把结果技术合并到一个源代码到源代码的优化工具中。该工具将使用应用程序开发人员交互来帮助优化和打包javascript软件。我们相信,适合于高性能软件的Java实现技术的发展可以催化计算密集型应用程序构建方式的革命,从而能够解决更困难的科学问题和开发迄今为止遥不可及的web应用程序。大量的计算科学家都有这样的愿景,正如Java大论坛上报道的Java实验使用所证明的那样。近二十年来,面向对象程序的优化一直是编程语言研究的一个活跃领域,但高性能数值计算所需的优化技术却很少受到关注。在Java之前,类型安全的面向对象语言不被认为是数值应用程序的候选者。为了实现多态数字代码的高性能,语言实现必须执行类专门化,它克隆包含多态字段的类的特定类型版本;对象内联,它用包含对象字段的变量元组替换包含对象引用的变量;方法内联,它用相应方法体的专门化版本替换方法调用。我们相信,明智地应用这三种转换与标准指令级代码优化相结合,可以将多态面向对象的源程序转换为质量与优化后的Fortran相当的机器码。除了这些必要的优化之外,我们提出了两种新的编译策略:几乎全程序编译,它放宽了上述优化对全程序编译的要求,以允许更多的编程灵活性;以及语义修改转换,它改善了编译器和程序员之间的通信,从而允许更积极的优化。我们还建议应用这项研究产生的技术来优化用Java编写的几个科学应用程序。
英文摘要
Since its debut in 1995, Java has gained acceptance rapidly among software developers as the language of choice for many applications where portability and reliability are paramount. Java's support for clean object-oriented (OO) design, write once, run anywhere portability, comprehensive static type checking, automatic storage management, and safe execution semantics have dramatically improved programmer productivity and software reliability.Despite of this high level of interest, Java has made little headway in the arena of high-performancecomputing because it is too slow. The performance penalty is particularly acute when Java programs are written in a clean, object-oriented style that makes extensive use of polymorphism. Our recent studies of Java performance show that applications written in this object-oriented style incur performance penalties of a factor of ten or more over applications coded in a more tedious style similar to Fortran and C. If this performance gap cannot be bridged, the object-oriented benefits of Java will not be realized for compute-intensive applications, squandering an opportunity to revolutionize high-performance programming.We propose to address this problem by conducting research into compiler technologies that makeit possible to develop applications and component libraries using the full power of the Java languagewithout sacrificing significant run-time performance. Although these strategies are suitable for usein a compiler, we will incorporate the resulting technologies into a source-to-source optimizationtool. This tool will use application developer interaction to help optimize and package the Javasoftware.We believe that the development of Java implementation technology suitable for high-performancesoftware could catalyze a revolution in the way compute-intensive applications are constructedenabling the solution of more difficult scientific problems and the development of web applicationsthat have heretofore been out of reach. A large number of computational scientists share this vision, as evidenced by the experimental use of Java reported in the Java Grande Forum.The optimization of object-oriented programs has been an active area of programming languageresearch for nearly twenty years, but little attention has been focused on the optimization technology required for high-performance numerical computation. Prior to Java, type-safe object-oriented languages were not considered candidates for numerical applications. To achieve high performance for polymorphic numerical code, the language implementation must perform class specialization, which clones a type-specific version of a class containing polymorphic fields, object inlining, which replaces a variable containing a reference to an object by a tuple of variables containing the object's fields and method inlining, which replaces method calls by specialized versions of the correspondingmethod body.We believe that a judicious application of these three transformations combinedwith standard instruction-level code optimization can translate polymorphic object-oriented sourceprograms to machine code comparable in quality to optimized Fortran.In addition to these necessary optimizations, we propose two novel compilation strategies: almostwhole-program compilation, which relaxes the above optimizations' requirement of whole-program compilation to allow for more programming flexibility, and semantics modifying transformations which improve the communication between the compiler and the programmer to allow for even more aggressive optimizations.We also propose to apply the technologies resulting from this research to optimize several scientific applications written in Java.
期刊论文(0)
专著(0)
科研奖励(0)
会议论文
NGS: GrADS: Efficient Script-Based Application Development for Networked High Performance Computing Environments
  • 批准号:
    0103759
  • 项目类别:
    Standard Grant
  • 资助金额:
    $130.0万
  • 财政年份:
    2002
  • 负责人:
    Ken Kennedy
  • 依托单位:
Next Generation Software: Grid Application Development Software (GrADS)
  • 批准号:
    9975020
  • 项目类别:
    Continuing Grant
  • 资助金额:
    $560.0万
  • 财政年份:
    1999
  • 负责人:
    Ken Kennedy
  • 依托单位:
Special Project: A Student Conference on Computational Science and Engineering for Minority Institutions in the South-Central United States
  • 批准号:
    9522903
  • 项目类别:
    Standard Grant
  • 资助金额:
    $0.0万
  • 财政年份:
    1995
  • 负责人:
    Ken Kennedy
  • 依托单位:
Retooling the Supercomputing Community for Scalable Parallelism
  • 批准号:
    9418606
  • 项目类别:
    Continuing grant
  • 资助金额:
    $85.04万
  • 财政年份:
    1994
  • 负责人:
    Ken Kennedy
  • 依托单位:
海外基金