CS498 DHP Program Optimization Fall 2005. Course organization  Instructors: Mar í a Garzar á n David Padua.

Slides:



Advertisements
Similar presentations
Analysis of Computer Algorithms
Advertisements

Fundamentals of Python: From First Programs Through Data Structures
March 18, 2008SSE Meeting 1 Mary Hall Dept. of Computer Science and Information Sciences Institute Multicore Chips and Parallel Programming.
CS 206 Introduction to Computer Science II 01 / 28 / 2009 Instructor: Michael Eckmann.
Topic 1: Introduction to Computers and Programming
Overview of the Course. Critical Facts Welcome to CISC 672 — Advanced Compiler Construction Instructor: Dr. John Cavazos Office.
High level & Low level language High level programming languages are more structured, are closer to spoken language and are more intuitive than low level.
Integrating Parallel and Distributed Computing Topics into an Undergraduate CS Curriculum Andrew Danner & Tia Newhall Swarthmore College Third NSF/TCPP.
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.
Optimizing Sorting With Genetic Algorithms Xiaoming Li, María Jesús Garzarán, and David Padua University of Illinois at Urbana-Champaign.
Welcome CSC 480/580 – Digital Logic & Computer Design Term: Winter 2002 Instructor: William T Krieger.
Guiding Principles. Goals First we must agree on the goals. Several (non-exclusive) choices – Want every CS major to be educated in performance including.
C o n f i d e n t i a l 1 Course: BCA Semester: III Subject Code : BC 0042 Subject Name: Operating Systems Unit number : 1 Unit Title: Overview of Operating.
CS 460/660 Compiler Construction. Class 01 2 Why Study Compilers? Compilers are important – –Responsible for many aspects of system performance Compilers.
1 Compiler Design (40-414)  Main Text Book: Compilers: Principles, Techniques & Tools, 2 nd ed., Aho, Lam, Sethi, and Ullman, 2007  Evaluation:  Midterm.
Computer Architecture 2 nd year (computer and Information Sc.)
Compiler Construction (CS-636)
CS 206 Introduction to Computer Science II 09 / 18 / 2009 Instructor: Michael Eckmann.
Princes Nora Bint Abdul Rahman University Dept. of Computer & Information Sciences CS 321 Computer Organization & Assembly Language Lecture 1 (Course Introduction)
Compilers as Collaborators and Competitors of High-Level Specification Systems David Padua University of Illinois at Urbana-Champaign.
A Memory-hierarchy Conscious and Self-tunable Sorting Library To appear in 2004 International Symposium on Code Generation and Optimization (CGO ’ 04)
Fortran Compilers David Padua University of Illinois at Urbana-Champaign.
Reflections on Dynamic Languages and Parallelism David Padua University of Illinois at Urbana-Champaign 1.
Introduction to Computer Programming Concepts M. Uyguroğlu R. Uyguroğlu.
Introduction to Performance Tuning Chia-heng Tu PAS Lab Summer Workshop 2009 June 30,
CSC 108H: Introduction to Computer Programming Summer 2011 Marek Janicki.
Sub-fields of computer science. Sub-fields of computer science.
CPIT 221 Technical Writing
RAIK 283 Data Structures and Algorithms
Advanced Algorithms Analysis and Design
CSC 222: Object-Oriented Programming
Advanced Computer Systems
Compiler Design (40-414) Main Text Book:
Algorithms and Problem Solving
Code Optimization.
ECE 486/586 Computer Architecture Introductions Instructor and You
Classroom Assessment A Practical Guide for Educators by Craig A
Types for Programs and Proofs
Introduction to programming
COMPUTER ORGANIZATION & ASSEMBLY LANGUAGE
CS101 Introduction to Computing Lecture 19 Programming Languages
A Closer Look at Instruction Set Architectures
Course Description Algorithms are: Recipes for solving problems.
Data Structures Algorithms: (Slides to be Adopted from Goodrich and aligned with Weiss' book) Instructor: Ganesh Ramakrishnan
Overview of the Course Copyright 2003, Keith D. Cooper, Ken Kennedy & Linda Torczon, all rights reserved. Students enrolled in Comp 412 at Rice University.
Selectivity Estimation of Big Spatial Data
CSCI/CMPE 3334 Systems Programming
Compiler Construction
High Performance Computing (CS 540)
CS 179 Project Intro.
Objective of This Course
Complexity Analysis of Algorithms
Introduction to CS II Data Structures
Syllabus.
Hasan Kadhem IT Department College of IT
Chapter 1 Introduction(1.1)
Introduction to Computer Systems
UNIT 5 EMBEDDED SYSTEM DEVELOPMENT
Algorithms and Problem Solving
UNIT 5 EMBEDDED SYSTEM DEVELOPMENT
The Challenge of Teaching Program Performance Tuning
Human Media Multicore Computing Lecture 1 : Course Overview
Introduction to Algorithm and its Complexity Lecture 1: 18 slides
Information Retrieval
Dept. of Computer & Information Sciences (Course Introduction)
Course Description Algorithms are: Recipes for solving problems.
Lecture One: Automata Theory Amjad Ali
Design and Analysis of Algorithms
R for Data Science Data science Data science is a booming field in today’s world. Since Artificial Intelligence is the main focus of today’s technology,
Presentation transcript:

CS498 DHP Program Optimization Fall 2005

Course organization  Instructors: Mar í a Garzar á n David Padua  Time and location: 1111SC -- WF 11-12:15  Course website:  Evaluation: 2 midterms 25% each Term project (serves as final exam) 50%

Course subject  Program optimization  One of the main topics in computer science although there are few courses focusing on this topic.  Improve programs Execution time Power Space Reliability Modularity, Readability Accuracy/completeness  Focus on first goal and some discussion of the second.  Makes use of a variety of techniques Algorithm complexity. Program analysis/transformation Tools

 Importance of reducing execution time Faster programs are better.  An interactive environment exacerbates the thirst for speed.  More science/better engineering designs in same amount of time Although machines are getting more powerful, sometimes the only way to take advantage of this power is through optimization.  Itanium instruction level parallelism  Multicore machines

 How is a program optimized ? Manually  Algorithm choice  Library selection  Coding -- Bit tweaking of the early days.  Need tools to assess progress and understand what is happening.  Tradeoff: development and maintenance time vs. performance. Automatically  by a compiler  By developing code generators that automatically search for best shape of the program. Here the choices are those of the programmer while in a compiler the choices are those of the compiler writer.  We will mainly discuss the manual approach in this course although we need to understand compilers unless we are willing to program in assembly language.  Understanding the manual approach is important for compiler writers since they should dominate the manual approach before trying to automate it.  The manual approach is also important for machine designers so they can understand their choices when mapping programs to their designs.

 For performance and power optimization it is necessary to have a good understanding of target machine features.  Program optimization is difficult for many reasons: Machine features may interact in ways that are difficult to analyze. Explaining/predicting behavior is difficult and has become more difficult with increasing machine complexity. There many ways to solve a problem and in many cases it is not clear which one is better. It depends on the class of machine, and the characteristics of the input data. For example, it is difficult to know when is quicksort better than radix sort. In general, a “proof” of optimality is unrealistic. Usually difficult to know how much more could be done.

Tentative list of topics  Compiler optimizations and compiler switches.  Reduction of computation.  Locality enhancement.  Parallelism Threading Memory models and race conditions. Instruction level parallelism Vector devices  Library generators/self adapting codes.  Analytical models and search strategies  Power optimization.

1) F 8/26Introduction. Course organization. What is program optimization? Optimization and machine organization. David Padua 2) W 8/30Compiler optimizations.David Padua 3) F 9/2Compiler optimizationsDavid Padua 4) W 9/7Reduction of computation/redundancy elimination David Padua 5) F 9/9Vtune.Paul Petersen 6) W 9/14Locality/tilingMaria Garzaran 7) F 9/16Locality/tilingMaria Garzaran 8) W 9/21Locality/Cache Oblivious algorithmsJia Guo 9) F 9/23Empirical search / Multiple-version programs / X-language David Padua Sebastian Donadio 10) W 9/28ThreadingArch Robison 11) F 9/30ThreadingArch Robison 12) W 10/5Threading toolsPaul Petersen 13) F 10/7ThreadingArch Robison 14) 10/121 st Midterm.

15) 10/14Locality/ nonumerical algorithmsMaria Garzaran 16) W 10/19Instruction Level ParallelismMaria Garzaran 17) F 10/21SSE devices and multimedia applications.Gang Ren 18) W 10/26The ATLAS systemMaria Garzaran 19) F 10/28The SPIRAL systemMarkus Pueschel 20) W 11/2SortingXiaoming Li 21) F 11/4Analytical models of locality (I)Basilio Fraguela 22) W 11/9Analytical models of locality (II)Basilio Fraguela 23) F 11/11Search strategies 24) W 11/16Power optimizationXiaoming Li 25) F 11/18Memory Models and their optimizationsDavid Wong 26) W 11/30TBD 27) F 12/2TBD 28) W 12/7TBD 29) F 12/92 nd Midterm.