Automatic Program Generation for Scienti c Computing

Luận án tiến sĩ về tự động tạo chương trình cho tính toán khoa học. Nghiên cứu chuyên sâu về các phương pháp và kỹ thuật lập trình tự động.

Trường đại học

Oregon State University

Chuyên ngành

Computer Science

Người đăng

Ẩn danh

Thể loại

Dissertation

2006

162
0
0

Phí lưu trữ

45 Point

Mục lục chi tiết

AN ABSTRACT OF THE DISSERTATION OF Zhe Fu for the degree of Doctor of Philosophy in Computer Science presented on July 6, 2006

ACKNOWLEDGEMENTS

1. Introduction

1.1. The Code Reuse Problem in Scientific Computing

1.2. Solving the Code Reuse Problem by Automatic Program Generation

3. The Inverse Ocean Modeling System

3.1. Markovian Time Convolution

3.2. Bell-Shaped Space Convolution

3.3. A Graphical User Interface for the IOM

4. Forge: A Domain-Specific Language for Defining Inverse Ocean Modeling Tools

4.1. Overview of Forge

4.2. Using Forge to Generate IOM Tools

4.3. The Forge Compiler

4.4. Generating Fortran from Tool Descriptions

4.5. Expressing Markovian Time Convolution in Forge

4.6. Interfaces and Dependent Indices

4.7. Summary: The Complete Tool Specification for the Markovian Convolution

4.8. Expressing the Bell-Shaped Space Convolution in Forge

4.9. Model Specifications

4.10. The Forge Type System

4.11. The Typing Rules of Forge

5. Parametric Fortran: An Extension of Fortran for Generic Programming

5.1. Overview of Parametric Fortran

5.2. Array Addition for Arbitrary Dimensions

5.3. Realization of the Program Generation

5.4. Generic Array Slicing

5.5. Removing Duplicated Code

5.6. Implementing the IOM System in Parametric Fortran

5.7. Expressing Markovian Time Convolution in Parametric Fortran

5.8. Implementing the Bell-Shaped Space Convolution in Parametric Fortran

5.9. Benefits of Using Parametric Fortran in the IOM

5.10. Application of Parametric Fortran to Automatic Differentiation

5.11. Implementing Automatic Differentiation in Parametric Fortran

5.12. An Example: The Inviscid Burger's Model

5.13. Differentiating the Inviscid Burger's Model Using Parametric Fortran

5.14. Implementation of the Parametric Fortran Compiler

5.15. Representing Fortran Syntax in Haskell

5.16. A Type Class for Program Generation

5.17. Defining Parameter Types as Instances of Param

5.18. Implementation of Accessors

5.19. Implementation of List Parameters

6. Conclusion and Future Work

Bibliography

Appendices

A. The Syntax of Forge

B. The Fortran Code of Markovian Time Convolution Generated by Forge for PEZ

C. The Haskell Implementation of the Parameter Type Diff

D. The Installation of Parametric Fortran

Tóm tắt

I. Tổng Quan Tự Động Tạo Chương Trình cho Tính Toán Khoa Học

Trong lĩnh vực tính toán khoa học, việc tái sử dụng mã là một thách thức lớn. Giải pháp tự động tạo chương trình nổi lên như một hướng đi tiềm năng, giúp giảm thiểu công sức viết mã và nâng cao hiệu quả. Bài viết này sẽ đi sâu vào vấn đề tái sử dụng mã trong Fortran, một ngôn ngữ lập trình phổ biến trong giới khoa học. Việc xây dựng các công cụ và kỹ thuật tạo mã tự động giúp các nhà khoa học tập trung vào giải quyết vấn đề thay vì lo lắng về chi tiết lập trình. Theo Zhe Fu (2006), "Tái sử dụng mã đặc biệt quan trọng trong các lĩnh vực mà các đoạn phần mềm liên quan có quy mô lớn và do đó tốn kém để sao chép". Sử dụng các thư viện phần mềm là một hình thức tái sử dụng mã hiệu quả. Tuy nhiên, việc sử dụng các thư viện thường bị giới hạn bởi thực tế là các hàm thư viện chỉ hoạt động trên các cấu trúc dữ liệu cụ thể.

1.1. Khái niệm về tái sử dụng mã trong lập trình

Tái sử dụng mã đề cập đến việc sử dụng lại một phần hoặc toàn bộ chương trình máy tính đã được viết trước đó trong một chương trình khác. Mục tiêu của việc tái sử dụng mã là tiết kiệm thời gian và công sức của lập trình viên bằng cách giảm công việc thừa. Việc tái sử dụng mã đặc biệt quan trọng trong các lĩnh vực mà các đoạn phần mềm liên quan có quy mô lớn và do đó tốn kém để sao chép. Một ví dụ rất phổ biến của việc tái sử dụng mã là sử dụng các thư viện phần mềm. Tuy nhiên, việc sử dụng các thư viện thường bị giới hạn bởi thực tế là các hàm thư viện chỉ hoạt động trên các cấu trúc dữ liệu cụ thể.

1.2. Vai trò của Fortran trong tính toán khoa học

Fortran vẫn là ngôn ngữ lập trình phổ biến trong nhiều lĩnh vực khoa học. Các nhà khoa học biển đã triển khai các mô hình đại dương trong Fortran để mô phỏng và dự đoán trạng thái của đại dương. Những lý do chính để sử dụng Fortran là sự tồn tại của các trình biên dịch Fortran hiệu quả cho siêu máy tính cần thiết để chạy các mô phỏng quy mô lớn và sự phụ thuộc vào các gói phần mềm kế thừa cần thiết cho các hệ thống con cụ thể. Đồng thời, sự phụ thuộc vào Fortran gây ra các vấn đề kỹ thuật phần mềm nghiêm trọng, đặc biệt là, không có khả năng tái sử dụng phần mềm.

II. Thách Thức Vấn Đề Tái Sử Dụng Mã Trong Fortran Khoa Học

Trong lĩnh vực tính toán khoa học, sự thiếu khả năng tái sử dụng phần mềm gây ảnh hưởng nghiêm trọng đến hiệu quả sử dụng máy tính. Mặc dù đã có nhiều nỗ lực cải thiện hiệu suất (compilation, paralellization), các vấn đề kỹ thuật phần mềm do các hệ thống phần mềm cũ quy mô lớn gây ra vẫn chưa được giải quyết triệt để. Nhiều dự án kết hợp mã Fortran đã viết trước đó, nhưng việc tái sử dụng này thường đi kèm với chi phí lớn cho việc điều chỉnh các chương trình Fortran cũ. Việc tái sử dụng mã được thực hiện theo cách tùy tiện, gây khó khăn hơn cho việc tái sử dụng trong tương lai. Ví dụ, các nhà khoa học thường viết các chương trình đồng hóa dữ liệu trong Fortran để phân tích các mô hình khoa học với dữ liệu quan sát thực tế. Tuy nhiên, trong các mô hình khoa học khác nhau, cách biểu diễn dữ liệu có thể khác nhau, gây khó khăn cho việc viết mã có thể tái sử dụng.

2.1. Hạn chế của Fortran trong việc hỗ trợ tái sử dụng mã

Mặc dù Fortran là ngôn ngữ lập trình được sử dụng rộng rãi trong tính toán khoa học, nó vẫn thiếu sự hỗ trợ để đạt được tái sử dụng mã. Một lý do cụ thể là Fortran thiếu sự hỗ trợ cho lập trình chung. Việc viết các chương trình đồng hóa dữ liệu trong Fortran để phân tích các mô hình khoa học với dữ liệu quan sát thực tế có thể gặp khó khăn do cách biểu diễn dữ liệu khác nhau trong các mô hình khoa học khác nhau.

2.2. Khó khăn trong việc điều chỉnh mã Fortran cũ

Mặc dù nhiều dự án kết hợp mã Fortran đã viết trước đó, việc tái sử dụng này thường đi kèm với chi phí lớn cho việc điều chỉnh các chương trình Fortran cũ. Việc tái sử dụng mã được thực hiện theo cách tùy tiện, gây khó khăn hơn cho việc tái sử dụng trong tương lai. Việc triển khai lại các chương trình cho từng mô hình là rất tẻ nhạt và dễ xảy ra lỗi, và các chương trình sẽ rất khó bảo trì. Vấn đề kỹ thuật phần mềm này cho thấy nhu cầu lớn về tái sử dụng mã.

III. Phương Pháp Tạo Mã Tự Động Giải Quyết Tái Sử Dụng Mã trong Fortran

Để giải quyết vấn đề tái sử dụng mã trong tính toán khoa học, hai giải pháp dựa trên tạo mã tự động được đề xuất. Giải pháp đầu tiên là thiết kế một ngôn ngữ đặc tả cấp cao để xác định các công cụ đồng hóa dữ liệu. Đặc tả công cụ có thể chung chung đối với thông tin phụ thuộc vào mô hình, chẳng hạn như số lượng chiều không gian cho mảng. Giải pháp thứ hai là thiết kế một phần mở rộng ngôn ngữ cho Fortran để cho phép các nhà khoa học viết các mẫu chương trình Fortran. Trong các mẫu chương trình, các cấu trúc Fortran, chẳng hạn như biểu thức hoặc câu lệnh, có thể được tham số hóa.

3.1. Thiết kế ngôn ngữ đặc tả cấp cao cho các công cụ đồng hóa dữ liệu

Công cụ đặc tả có thể chung chung đối với thông tin phụ thuộc vào mô hình, chẳng hạn như số lượng chiều không gian cho mảng. Thông tin phụ thuộc vào mô hình được biểu diễn bằng các tham số được sử dụng trong đặc tả chung. Trình biên dịch cho ngôn ngữ đặc tả, cũng là một trình tạo chương trình, lấy đặc tả của một công cụ đồng hóa dữ liệu và các giá trị tham số đại diện cho thông tin của một mô hình khoa học làm đầu vào, và tạo ra một chương trình Fortran thực hiện công cụ đồng hóa dữ liệu cho mô hình khoa học cụ thể đó.

3.2. Mở rộng ngôn ngữ Fortran cho phép viết mẫu chương trình

Trong các mẫu chương trình, các cấu trúc Fortran, chẳng hạn như biểu thức hoặc câu lệnh, có thể được tham số hóa. Các tham số đại diện cho các khía cạnh khác nhau của kiểu dữ liệu, chẳng hạn như thông tin chiều của mảng, và thông tin phụ thuộc vào mô hình khác, chẳng hạn như số lượng và ý nghĩa của các biến trạng thái trong các mô hình khoa học. Khi thông tin phụ thuộc vào mô hình được cung cấp dưới dạng các giá trị cho các tham số này, một trình tạo chương trình có thể dịch mẫu chương trình thành...

IV. Forge Ngôn Ngữ DSL Chuyên Biệt Cho Mô Hình Hóa Đại Dương Ngược

Forge là một ngôn ngữ chuyên biệt (Domain-Specific Language - DSL) được thiết kế để định nghĩa các công cụ mô hình hóa đại dương ngược (Inverse Ocean Modeling - IOM). Ngôn ngữ này cho phép đặc tả các công cụ IOM một cách tổng quát, không phụ thuộc vào số chiều không gian của mảng. Trình biên dịch Forge, đồng thời là một trình tạo chương trình, nhận đặc tả của một công cụ IOM và các giá trị tham số đại diện cho thông tin của một mô hình khoa học, và tạo ra một chương trình Fortran thực hiện công cụ IOM cho mô hình khoa học cụ thể đó. Một hệ thống kiểu cũng được triển khai cho ngôn ngữ đặc tả để đảm bảo việc tạo ra các chương trình Fortran đúng cú pháp và kiểu.

4.1. Tổng quan về ngôn ngữ Forge

Forge là một ngôn ngữ đặc tả cấp cao cho phép các nhà khoa học xác định các công cụ đồng hóa dữ liệu, chẳng hạn như công cụ tích chập được trình bày trong Phần 1. Đặc tả công cụ có thể chung chung đối với thông tin phụ thuộc vào mô hình, chẳng hạn như số lượng chiều không gian cho mảng. Thông tin phụ thuộc vào mô hình được biểu diễn bằng các tham số được sử dụng trong đặc tả chung. .

4.2. Sử dụng Forge để tạo mã Fortran cho các công cụ IOM

Trình biên dịch cho ngôn ngữ đặc tả, cũng là một trình tạo chương trình, lấy đặc tả của một công cụ đồng hóa dữ liệu và các giá trị tham số đại diện cho thông tin của một mô hình khoa học làm đầu vào, và tạo ra một chương trình Fortran thực hiện công cụ đồng hóa dữ liệu cho mô hình khoa học cụ thể đó. Một hệ thống kiểu cũng được triển khai cho ngôn ngữ đặc tả để đảm bảo việc tạo ra các chương trình Fortran đúng cú pháp và kiểu.

V. Parametric Fortran Mở Rộng Fortran Cho Lập Trình Tổng Quát

Parametric Fortran là một phần mở rộng của ngôn ngữ Fortran, cho phép các nhà khoa học viết các mẫu chương trình Fortran. Trong các mẫu chương trình, các cấu trúc Fortran, chẳng hạn như biểu thức hoặc câu lệnh, có thể được tham số hóa. Các tham số đại diện cho các khía cạnh khác nhau của kiểu dữ liệu, chẳng hạn như thông tin chiều của mảng, và thông tin phụ thuộc vào mô hình khác, chẳng hạn như số lượng và ý nghĩa của các biến trạng thái trong các mô hình khoa học. Khi thông tin phụ thuộc vào mô hình được cung cấp dưới dạng các giá trị cho các tham số này, một trình tạo chương trình có thể dịch mẫu chương trình thành...

5.1. Khái niệm về Parametric Fortran

Parametric Fortran cho phép các nhà khoa học viết các mẫu chương trình Fortran. Trong các mẫu chương trình, các cấu trúc Fortran, chẳng hạn như biểu thức hoặc câu lệnh, có thể được tham số hóa. Các tham số đại diện cho các khía cạnh khác nhau của kiểu dữ liệu, chẳng hạn như thông tin chiều của mảng, và thông tin phụ thuộc vào mô hình khác, chẳng hạn như số lượng và ý nghĩa của các biến trạng thái trong các mô hình khoa học.

5.2. Ứng dụng của Parametric Fortran trong tính toán khoa học

Một trình tạo chương trình có thể dịch mẫu chương trình thành một chương trình Fortran thông thường được hướng dẫn bởi các giá trị cho các tham số. Parametric Fortran đặc biệt hữu ích trong tính toán khoa học. Các ứng dụng bao gồm xác định các hàm chung, loại bỏ mã trùng lặp và phân biệt tự động. Phần mở rộng Fortran được mô tả cũng đã được sử dụng thành công để triển khai hệ thống mô hình hóa đại dương ngược chung.

VI. Kết Luận Tự Động Tạo Mã Fortran Và Tương Lai Của Tái Sử Dụng

Việc tự động tạo chương trình Fortran mở ra một hướng đi mới trong việc giải quyết bài toán tái sử dụng mã trong tính toán khoa học. Các phương pháp như sử dụng Forge (DSL chuyên biệt) và Parametric Fortran (mở rộng ngôn ngữ) hứa hẹn sẽ giúp các nhà khoa học tiết kiệm thời gian và công sức, đồng thời giảm thiểu lỗi trong quá trình phát triển phần mềm. Trong tương lai, có thể kỳ vọng vào sự phát triển của các công cụ tạo mã tự động ngày càng thông minh và linh hoạt, đáp ứng nhu cầu đa dạng của cộng đồng tính toán khoa học.

6.1. Ưu điểm của phương pháp tự động tạo chương trình

Phương pháp tự động tạo chương trình cho phép các nhà khoa học tập trung vào giải quyết vấn đề thay vì lo lắng về chi tiết lập trình. Giảm thiểu công sức viết mã và nâng cao hiệu quả. Tránh việc triển khai lại các chương trình cho từng mô hình là rất tẻ nhạt và dễ xảy ra lỗi, và các chương trình sẽ rất khó bảo trì.

6.2. Hướng phát triển trong tương lai

Trong tương lai, có thể kỳ vọng vào sự phát triển của các công cụ tạo mã tự động ngày càng thông minh và linh hoạt, đáp ứng nhu cầu đa dạng của cộng đồng tính toán khoa học. Các công cụ tạo mã tự động này sẽ hỗ trợ nhiều ngôn ngữ lập trình hơn, đồng thời cung cấp các tính năng tối ưu hóa mã và kiểm thử tự động.

14/05/2025

Trích đoạn nội dung tài liệu

AN ABSTRACT OF THE DISSERATION OF Zhe Fu for the degree of Doctor of Philosophy in Computer Science presented on July 6, 2006. Title: Automatic Program Generation for Scientic Computing Abstract approved: Martin Erwig The code reuse problem is a common software engineering problem in scientic computing. As a prevailing programming language in many scientic elds, For- tran does not provide support to address this problem. One particular reason is that Fortran lacks the support for generic programming.

By applying program- generation techniques, we developed two approaches to address the code reuse problem. The rst approach is to design a program generator for the equation- based specication of subroutines that can be generic in the dimensions of arrays, parameter lists, and called subroutines. We apply that approach to a real-world problem in scientic computing, which requires the generic description of inverse ocean modeling tools. In addition to a compiler that can transform generic spec- ications into ecient Fortran code for models, we have also developed a type system that can identify possible errors already in the specications.

The second approach is to extend Fortran with the support for generic programming. The result is the language Parametric Fortran, which supports dening Fortran pro- gram templates by allowing the parameterization of arbitrary Fortran constructs. A Fortran program template can be translated into a regular Fortran program guided by values for the parameters. Parametric Fortran is particularly useful in scientic computing.

The applications include dening generic functions, re- moving duplicated code, and automatic dierentiation. The described Fortran extension has also been successfully employed implementing the generic inverse ocean modeling system. c Copyright By Zhe Fu July 6, 2006 All Rights Reserved Automatic Program Generation for Scientic Computing by Zhe Fu A DISSERTATION submitted to Oregon State University in partial fulllment of the requirements for the degree of Doctor of Philosophy Presented on July 6, 2006 Commencement June 2007 UMI Number: 3236879 UMI Microform 3236879 Copyright 2006 by ProQuest Information and Learning Company. All rights reserved.

This microform edition is protected against unauthorized copying under Title 17, United States Code. ProQuest Information and Learning Company 300 North Zeeb Road P. Box 1346 Ann Arbor, MI 48106-1346 Doctor of Philosophy dissertation of Zhe Fu presented on July 6, 2006. APPROVED: Major Professor, representing Computer Science Director of the School of Electrical Eengineering and Computer Science Dean of the Graduate School I understand that my dissertation will become part of the permanent collection of Oregon State University libraries.

My signature below authorizes release of my disseratation to any reader upon request. Zhe Fu, Author ACKNOWLEDGEMENTS Foremost I especially thank my advisor Martin Erwig for suggesting the won- derful thesis topic. His wide knowledge and logical way of thinking have been of great value for me. His understanding, encouraging and personal guidance have provided a good basis for the present thesis.

I also thank professor An- drew Bennett. His summer school in 2002 helped me to understand the area of inverse ocean modeling, which is the major application of the approaches pre- sented in this thesis. My thanks also go to Boon Chua and Ben Paum, who helped me with the implementation of the IOM system and Parametric Fortran. I am really grateful to my family, especially to my parents for their continuous support and encouragement.

At last, I want to express my special thanks to my wife, Yuanyuan Wang. I would not have been able to completed my Ph.D thesis without her support. TABLE OF CONTENTS Page 1 Introduction 1 1.1 The Code Reuse Problem in Scientic Computing .2 Solving the Code Reuse Problem by Automatic Program Generation 8 1.2 Generic Programming in Haskell .3 Array Programming Languages .2 Metaprogramming Tools for Fortran. 30 3 The Inverse Ocean Modeling System 32 3.1 Markovian Time Convolution .2 Bell-Shaped Space Convolution .3 A Graphical User Interface for the IOM.

38 4 Forge: A Domain-Specic Language for Dening Inverse Ocean Modeling Tools 42 4.1 Overview of Forge .1 Using Forge to Generate IOM Tools .2 The Forge Compiler .2 Generating Fortran from Tool Descriptions .1 Expressing Markovian Time Convolution in Forge .2 Interfaces and Dependent Indices .3 Summary: The Complete Tool Specication for the Marko- vian Convolution .4 Expressing the Bell-Shaped Space Convolution in Forge .5 Model Specications .3 The Forge Type System. 60 TABLE OF CONTENTS (Continued) Page 4.1 The Typing Rules of Forge. 74 5 Parametric Fortran: An Extension of Fortran for Generic Pro- gramming 77 5.1 Overview of Parametric Fortran .1 Array Addition for Arbitrary Dimensions .2 Realization of the Program Generation .3 Generic Array Slicing .4 Removing Duplicated Code .2 Implementing the IOM System in Parametric Fortran .1 Expressing Markovian Time Convolution in Parametric For- tran .2 Implementing the Bell-Shaped Space Convolution in Para- metric Fortran .3 Benets of Using Parametric Fortran in the IOM .3 Application of Parametric Fortran to Automatic Dierentiation .1 Implementing Automatic Dierentiation in Parametric For- tran .2 An Example: The Inviscid Burger's Model .3 Dierentiating the Inviscid Burger's Model Using Paramet- ric Fortran .4 Implementation of the Parametric Fortran Compiler .1 Representing Fortran Syntax in Haskell .2 A Type Class for Program Generation .3 Dening Parameter Types as Instances of Param .5 Implementation of Accessors .6 Implementation of List Parameters. 123 6 Conclusion and Future Work 128 TABLE OF CONTENTS (Continued) Page Bibliography 132 Appendices 138 Appendix A: The Syntax of Forge.

138 Appendix B: The Fortran Code of Markovian Time Convolution Gener- ated by Forge for PEZ. 140 Appendix C: The Haskell Implementation of the Parameter Type Diff. 141 Appendix D: The Installation of Parametric Fortran. 147 LIST OF FIGURES Figure Page 1.1 The Fortran code for the 2D simple convolution in time.2 The Fortran code for the 3D simple convolution in time.1 Summation of array elements.2 Using timeConv on 3-D arrays.3 The Fortran statement generated by CTADEL.4 The FORESYS Graphical User Interface .1 The discrete equations of Markovian time convolution.2 The Fortran program of Markovian Time Convolution.3 Graphical User Interface.2 Using model parameters in tools and library function calls .3 Fortran translation of discrete equations.4 The Forge specication for Markovian time convolution.5 The specication for the bell-shaped convolution in space.6 Rules for environment judgments.8 Typing rules for expressions.9 Partial order on types.10 Type rules for Forge statements.1 Array addition for 2D arrays.2 Parametric Fortran syntax tree .3 Syntax tree of {dim: c = a + b}.

84 LIST OF FIGURES (Continued) Figure Page 5.4 Transformation of nodes .5 Syntax tree of generated for loop .6 Parametric Fortran Template of an Array Slicing Subroutine .7 Removing Duplicated Code with Parametric Fortran .8 The Parametric Fortran Template for the Markovian Time Con- volution .9 The Parametric Fortran Template for the Bell-Shaped Space Con- volution .10 The Fortran Program for the Bell-Shaped Space Convolution .11 The Chain Rule for Computing the Tangent Linear Model .12 The Parametric Fortran Template for the Inviscid Burger's Model 107 5.13 The adjoint program for the inviscid Burger's model. 109 LIST OF TABLES Table Page 5.2 Code savings achieved by Parametric Fortran. 99 LIST OF APPENDIX FIGURES Figure Page 1 Syntax of specications. 138 2 Syntax of interfaces.

139 3 Syntax of dependent-index declarations. 139 5 Syntax of parameter denitions. 139 Chapter 1  Introduction Code reuse refers to the technique that allows a partial or complete computer program written at one time to be used in another program written at a later time. The goal of code reuse is to save time and energy of programmers by re- ducing redundant work.

Code reuse is critical especially in those areas in which the involved software fragments are large and thus costly to reproduce. A very common example of code reuse is using software libraries. Common operations, such as accessing data in a specic format, processing data in a specic way (sorting, searching, etc), or I/O operations, are needed by many dierent appli- cations. Developers of new programs can use the code in the software library to accomplish these tasks, instead of actually writing new code directly to perform the operations.

Using libraries is a very eective form of code reuse. However, the use of libraries is often limited by the fact that library functions work only on specic data structures. The most direct way to achieve code reuse is copying some or all of the code from an existing program into a new one. This approach is not preferable because code from the original program usually needs to be modied before being used in the new program, for example, variable names may need to be changed.

Such modications can easily introduce errors in the new program. Code reuse is highly desirable in scientic computing. However, as a widely 2 used programming language in scientic computing, Fortran still lacks the sup- port to achieve code reuse. This thesis makes contributions to the Fortran code reuse problem in scientic computing by applying program generation techniques.

In this introduction we rst give a description of the code reuse problem in scientic computing. We also describe the program-generation approach to addressing this problem and then outline the rest of the thesis.1 The Code Reuse Problem in Scientic Computing In the area of scientic computing, the inability to properly reuse software has a particularly severe impact on the eective use of computers to support the scientic activities. Although there has been considerable work in scientic com- puting on eciency issues, such as compilation and paralellization, the software engineering problems caused by large legacy software systems have been largely ignored so far. Fortran is still the prevailing programming language in many areas of science.

For example, ocean scientists have implemented ocean models in Fortran to sim- ulate and predict the state of oceans, such as the Regional Ocean Model System (ROMS) [32] and the Advanced Circulation (ADCIRC) model [2]. Major reasons for using Fortran are the existence of ecient Fortran compilers for supercom- puters that are needed to run large-scale simulations and the reliance on legacy software packages that are required for particular subsystems. At the same time, the reliance on Fortran causes severe software engineering problems, in particular, 3 the inability to reuse software. Although many projects incorporate previously written Fortran code, a closer look reveals that this reuse is coupled with high costs for adapting old Fortran programs.

Moreover, the code reuse is performed in an ad hoc way that makes future reuse even more dicult. Scientists often write data assimilation programs in Fortran to analyze sci- entic models with real observation data. Two examples are the Inverse Ocean Modeling (IOM) system [4, 17] and the Weather Research and Forecasting (WRF) model [20]. The algorithm of a particular data assimilation program is the same for all the scientic models it analyzes.

However, in dierent scientic models, the representation of data may be dierent. For example, in the ROMS [32] and the ADCIRC model [2], data are stored in 4-dimensional arrays that contain 3 space dimensions and the time dimension. In the 2D Shallow Water model [27], data are represented as 3 dimensional which is 2-dimensional space plus the time dimension. Furthermore, even though the number of dimensions of the arrays storing the data is the same in the ROMS model and the ADCIRC model, the time dimension in these two models is located in dierent dimensions of the ar- rays.

In the ROMS model, the time dimension is the rst dimension of the arrays, whereas in the ADCIRC model, the time dimension is at the last dimension. Since these data assimilation programs need to work for dierent scientic models, they have to be implemented in the way that can work with all the dif- ferent data representations in the scientic models. For example, convolution tools that compute the average of weighted values are commonly used in data assimilation programs.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ