SW Architecture Review Steven Anastos Jose De Jesus Sean Stevenson.

Slides:



Advertisements
Similar presentations
Weather Research & Forecasting: A General Overview
Advertisements

Week 4 – Functions Introduction. Functions: Purpose Breaking a large problem into a series of smaller problems is a common problem- solving technique.
Introductions to Parallel Programming Using OpenMP
NewsFlash!! Earth Simulator no longer #1. In slightly less earthshaking news… Homework #1 due date postponed to 10/11.
Chapter 1: An Overview of Computers and Programming Languages
OpenMP Andrew Williams References Chandra et al, Parallel Programming in OpenMP, Morgan Kaufmann Publishers 1999 OpenMP home:
Computer Architecture II 1 Computer architecture II Programming: POSIX Threads OpenMP.
Software Language Levels Machine Language (Binary) Assembly Language –Assembler converts Assembly into machine High Level Languages (C, Perl, Shell)
1 Key Concepts:  Why C?  Life Cycle Of a C program,  What is a computer program?  A program statement?  Basic parts of a C program,  Printf() function?
Chapter 3 Program translation1 Chapt. 3 Language Translation Syntax and Semantics Translation phases Formal translation models.
The C Language 1/31/14.
Writing Methods. Create the method Methods, like functions, do something They contain the code that performs the job Methods have two parts.
C++ Programming: From Problem Analysis to Program Design, Fifth Edition Chapter 1: An Overview of Computers and Programming Languages Updated by: Dr\Ali-Alnajjar.
Using C Programming Language.  The programs that run on a computer are referred to as software.  You’ll learn key programming methodology that are enhancing.
SEC(R) 2008 Intel® Concurrent Collections for C++ - a model for parallel programming Nikolay Kurtov Software and Services.
Python Mini-Course University of Oklahoma Department of Psychology Day 1 – Lesson 2 Fundamentals of Programming Languages 4/5/09 Python Mini-Course: Day.
Parallel Programming in Java with Shared Memory Directives.
OpenMP in a Heterogeneous World Ayodunni Aribuki Advisor: Dr. Barbara Chapman HPCTools Group University of Houston.
INTRODUCTION TO C PROGRAMMING LANGUAGE Computer Programming Asst. Prof. Dr. Choopan Rattanapoka and Asst. Prof. Dr. Suphot Chunwiphat.
ICS611 Introduction to Compilers Set 1. What is a Compiler? A compiler is software (a program) that translates a high-level programming language to machine.
Chapter 1. Introduction.
Chapter 1 Introduction Dr. Frank Lee. 1.1 Why Study Compiler? To write more efficient code in a high-level language To provide solid foundation in parsing.
Chapter 10: Compilers and Language Translation Invitation to Computer Science, Java Version, Third Edition.
1 Programming Languages Tevfik Koşar Lecture - II January 19 th, 2006.
1 History of compiler development 1953 IBM develops the 701 EDPM (Electronic Data Processing Machine), the first general purpose computer, built as a “defense.
CSC 338: Compiler design and implementation
C++ Programming Language Lecture 1 Introduction By Ghada Al-Mashaqbeh The Hashemite University Computer Engineering Department.
Compiler course 1. Introduction. Outline Scope of the course Disciplines involved in it Abstract view for a compiler Front-end and back-end tasks Modules.
History of C 1950 – FORTRAN (Formula Translator) 1959 – COBOL (Common Business Oriented Language) 1971 – Pascal Between Ada.
CSC 230: C and Software Tools Rudra Dutta Computer Science Department Course Introduction.
© Janice Regan, CMPT 300, May CMPT 300 Introduction to Operating Systems Operating Systems Overview Part 2: History (continued)
CIS-165 C++ Programming I CIS-165 C++ Programming I Bergen Community College Prof. Faisal Aljamal.
Unit-1 Introduction Prepared by: Prof. Harish I Rathod
Chapter 1 Introduction. Chapter 1 - Introduction 2 The Goal of Chapter 1 Introduce different forms of language translators Give a high level overview.
1 Original Source : and Problem and Problem Solving.ppt.
CS 460/660 Compiler Construction. Class 01 2 Why Study Compilers? Compilers are important – –Responsible for many aspects of system performance Compilers.
Introduction to Compilers. Related Area Programming languages Machine architecture Language theory Algorithms Data structures Operating systems Software.
Compiler Design Introduction 1. 2 Course Outline Introduction to Compiling Lexical Analysis Syntax Analysis –Context Free Grammars –Top-Down Parsing –Bottom-Up.
Compiler Construction (CS-636)
CPS120: Introduction to Computer Science Compiling a C++ Program From The Command Line.
What is a compiler? –A program that reads a program written in one language (source language) and translates it into an equivalent program in another language.
OPTIMIZATION OF DIESEL INJECTION USING GRID COMPUTING Miguel Caballer Universidad Politécnica de Valencia.
The Development Process Compilation. Compilation - Dr. Craig A. Struble 2 Programming Process Problem Solving Phase We will spend significant time on.
Dr. Mohamed Ramadan Saady 314ALL CH1.1 Chapter 1: Introduction to Compiling.
(1) Code Walkthrough robocode-pmj-dacruzer Philip Johnson Collaborative Software Development Laboratory Information and Computer Sciences University of.
Dr. Mark L. HornickCS-1030 Dr. Mark Hornick 1 C++ Global functions Declarations & Definitions Preprocessor Directives.
1 Asstt. Prof Navjot Kaur Computer Dept PRESENTED BY.
ICS312 Introduction to Compilers Set 23. What is a Compiler? A compiler is software (a program) that translates a high-level programming language to machine.
PYTHON FOR HIGH PERFORMANCE COMPUTING. OUTLINE  Compiling for performance  Native ways for performance  Generator  Examples.
1/30/2003 Los Alamos National Laboratory1 A Migration Framework for Legacy Scientific Applications  Current tendency: monolithic architectures large,
XML & JSON. Background XML and JSON are to standard, textual data formats for representing arbitrary data – XML stands for “eXtensible Markup Language”
Introduction to Computer Programming Concepts M. Uyguroğlu R. Uyguroğlu.
Concepts of Programming Languages Lecturer: Dr. Emad Nabil Lecture # 2.
Enabling Interoperability for the Utility Enterprise
Advanced Computer Systems
Lexical and Syntax Analysis
SOFTWARE DESIGN AND ARCHITECTURE
OpenMP Quiz B. Wilkinson January 22, 2016.
Compiler Construction
Chapter 3: Lexical Analysis
Programming Fundamentals Lecture #3 Overview of Computer Programming
Implementation of a Functional Programming Language
Allen D. Malony Computer & Information Science Department
C++ Compilation Model C++ is a compiled language
Regression testing Tor Stållhane.
OpenMP Quiz.
HPC User Forum: Back-End Compiler Technology Panel
Chapter 10: Compilers and Language Translation
Week 5 Computers are like Old Testament gods; lots of rules and no mercy. Joseph Campbell.
Question 1 How are you going to provide language and/or library (or other?) support in Fortran, C/C++, or another language for massively parallel programming.
Presentation transcript:

SW Architecture Review Steven Anastos Jose De Jesus Sean Stevenson

Enable Princeton Ocean Model Optimization Enable Princeton Ocean Model Optimization –Take pre-existing FORTRAN POM code and apply OpenMP embedding & arithmetic optimization thru CFD Compiler –Main Goal Decrease run time of FORTRAN POM code Decrease run time of FORTRAN POM code Produce error free FORTRAN code Produce error free FORTRAN code

Use Case Use Case 1) Developer edits a source file by hand to insert compiler pragma 2) Developer processes the source file with CFD compiler 3) Developer compiles the processed code with FORTRAN compiler

Advanced Optimization Pre-Processor Optimizer Compiler Output Generator Equation Tree OpenMP Tree Manipulator

Preprocessor Preprocessor –Includes Lexical and Parsing Sections Optimizer Optimizer –Inserting Into FORTRAN Coded Equation into Tree –Optimization Occurs in Tree Structure Formation –Embedding of OpenMP Syntax Output optimizer Output optimizer –Returns Optimized Tree Configuration

Princeton Ocean Model Software Standard C++ Libraries OpenMP Library Headers & Classes Compilers of Choice for Source Code Generation Languages Used for Development & Testing OS Used in Development

Autonomous testing implementation. Autonomous testing implementation. –Randomly creates equation test cases Requirements for Autonomous Testing Requirements for Autonomous Testing –Arithmetic Notation –Mixed operator Inclusion flux =.25e2 * ( D + I )* ( Y + B * A) Black Box Testing Black Box Testing - Using both randomly created tests cases and also Princeton Ocean Model examples

Regression Testing Regression Testing - Same test cases used for each version - Automated Test cases will be generated and kept to be used again on later versions Application Testing Application Testing - By using the POM we have real examples and equations to test our compiler on - Instead of just contrived examples POM as a whole will be used as well

Text Box 1. ORIGINAL FORTRAN CODE SEGMENT FROM TRIAL CODE flux =.25e2 * ( D + I )* ( Y + B * A) Text Box 2. COMPILER EMBEDDED SYNTAX !!!! CFD { [ VAR flux, =,.25e2, *, (, VAR D, +, ONE I, ), *, (, VAR Y, +, CONST B, *, CONST A, ) ] !!!! flux =.25e2 * ( D + I )* ( Y + B * A) !!!! } Text Box 3. COMPILER EMBEDDED OpenMP SYNTAX !!!! CFD { [ VAR flux, =,.25e2, *, (, VAR D, +, ONE I, ), *, (, VAR Y, +, CONST B, *, CONST A, ) ] !$OMP PARALLEL flux =.25e2 * ( D + I )* ( Y + B * A) !$OMP END PARALLEL !!!! }

Original Estimate: 2.4*(2.2)^1.05 = 5.5 staff months Original Estimate: 2.4*(2.2)^1.05 = 5.5 staff months 2200 estimated lines of code 2200 estimated lines of code We have ~900 lines of code two weeks before halfway point of semester We have ~900 lines of code two weeks before halfway point of semester

Simplification from transition from MPI to OpenMP. Simplification from transition from MPI to OpenMP. Removed several advanced optimization methods from the requirements Removed several advanced optimization methods from the requirements

Minimized Coupling and Increased Cohesion by splitting modules per job function. Minimized Coupling and Increased Cohesion by splitting modules per job function. Due to sequential processing our compiler has very low coupling Due to sequential processing our compiler has very low coupling