Automatic Generation of Parallel OpenGL Programs Robert Hero CMPS 203 December 2, 2004.

Slides:



Advertisements
Similar presentations
A Workflow Engine with Multi-Level Parallelism Supports Qifeng Huang and Yan Huang School of Computer Science Cardiff University
Advertisements

Theory of Computer Science - Algorithms
CS412/413 Introduction to Compilers Radu Rugina Lecture 37: DU Chains and SSA Form 29 Apr 02.
Control Flow Analysis (Chapter 7) Mooly Sagiv (with Contributions by Hanne Riis Nielson)
Ch. 7 Process Synchronization (1/2) I Background F Producer - Consumer process :  Compiler, Assembler, Loader, · · · · · · F Bounded buffer.
Case Tools Trisha Cummings. Our Definition of CASE  CASE is the use of computer-based support in the software development process.  A CASE tool is a.
Praveen Yedlapalli Emre Kultursay Mahmut Kandemir The Pennsylvania State University.
A High Performance Application Representation for Reconfigurable Systems Wenrui GongGang WangRyan Kastner Department of Electrical and Computer Engineering.
ATI GPUs and Graphics APIs Mark Segal. ATI Hardware X1K series 8 SIMD vertex engines, 16 SIMD fragment (pixel) engines 3-component vector + scalar ALUs.
Compilation, Architectural Support, and Evaluation of SIMD Graphics Pipeline Programs on a General-Purpose CPU Mauricio Breternitz Jr, Herbert Hum, Sanjeev.
Random Number Generator. Using Software We can generate random number by: 1- table 2- hardware 3-- software Function to generate RN by SW is: 1-rand 2-
Graphical Tree-Based Scientific Calculator: CalcuWiz Will Ryan Christian Braunlich.
Why Program? Computer – programmable machine designed to follow instructions Program – instructions in computer memory to make it do something Programmer.
Chapter Introduction to Computers and Programming 1.
Programming Languages
Electronic Visualization Laboratory University of Illinois at Chicago “Sort-First, Distributed Memory Parallel Visualization and Rendering” by E. Wes Bethel,
Impulse Embedded Processing Video Lab Generate FPGA hardware Generate hardware interfaces HDL files HDL files FPGA bitmap FPGA bitmap C language software.
Automatic Identification of Concurrency in Handel-C Joseph C Libby, Kenneth B Kent, Farnaz Gharibian Faculty of Computer Science University of New Brunswick.
INTRODUCTION TO COMPUTING CHAPTER NO. 06. Compilers and Language Translation Introduction The Compilation Process Phase 1 – Lexical Analysis Phase 2 –
Copyright © 2009 Pearson Education, Inc. Publishing as Pearson Addison-Wesley Chapter 1: Introduction to Computers and Programming.
Elad Hadar Omer Norkin Supervisor: Mike Sumszyk Winter 2010/11, Single semester project. Date:22/4/12 Technion – Israel Institute of Technology Faculty.
Kenneth Hurley Sr. Software Engineer
Department of Computer Science A Static Program Analyzer to increase software reuse Ramakrishnan Venkitaraman and Gopal Gupta.
Liang, Introduction to Programming with C++, Second Edition, (c) 2010 Pearson Education, Inc. All rights reserved Chapter 3 Selections.
GraphLab: how I understood it with sample code Aapo Kyrola, Carnegie Mellon Univ. Oct 1, 2009.
Chapter 1 Introduction to Computers and C++ Programming Goals: To introduce the fundamental hardware and software components of a computer system To introduce.
CPS120 Introduction to Computer Science Iteration (Looping)
OPERATING SYSTEMS Goals of the course Definitions of operating systems Operating system goals What is not an operating system Computer architecture O/S.
Programming in Java Unit 4. Learning outcome:  LO2: Be able to design Java solutions  LO3: Be able to implement Java solutions Assessment criteria:
Stream Processing Main References: “Comparing Reyes and OpenGL on a Stream Architecture”, 2002 “Polygon Rendering on a Stream Architecture”, 2000 Department.
Software Integrity Monitoring Using Hardware Performance Counters Corey Malone.
Previously Repetition Structures While, Do-While, For.
Major Disciplines in Computer Science Ken Nguyen Department of Information Technology Clayton State University.
1 Chap 4. Data Should know Declare & Initialize variables Declare constants Assignment Operators Increment and Decrement Operators Precedence of Operators.
Lecture 3 Classes, Structs, Enums Passing by reference and value Arrays.
Slide 1 Project 1 Task 2 T&N3311 PJ1 Information & Communications Technology HD in Telecommunications and Networking Task 2 Briefing The Design of a Computer.
SD1230 Unit 6 Desktop Applications. Course Objectives During this unit, we will cover the following course objectives: – Identify the characteristics.
CSE 381 – Advanced Game Programming GLSL. Rendering Revisited.
Motivation: Sorting is among the fundamental problems of computer science. Sorting of different datasets is present in most applications, ranging from.
M1G Introduction to Programming 2 5. Completing the program.
A SEMINAR ON 1 CONTENT 2  The Stream Programming Model  The Stream Programming Model-II  Advantage of Stream Processor  Imagine’s.
LQCD Workflow Project L. Piccoli October 02, 2006.
A First Book of C++: From Here To There, Third Edition2 Objectives You should be able to describe: The while Statement cin within a while Loop The for.
A FIRST BOOK OF C++ CHAPTER 5 REPETITION. OBJECTIVES In this chapter, you will learn about: The while Statement Interactive while Loops The for Statement.
A First Book of C++ Chapter 5 Repetition.
Integration Testing Beyond unit testing. 2 Testing in the V-Model Requirements Detailed Design Module implementation Unit test Integration test System.
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.
Threads. Thread A basic unit of CPU utilization. An Abstract data type representing an independent flow of control within a process A traditional (or.
Chapter – 8 Software Tools.
Parallel Programming in Chess Simulations Part 2 Tyler Patton.
CIS 595 MATLAB First Impressions. MATLAB This introduction will give Some basic ideas Main advantages and drawbacks compared to other languages.
CS Class 04 Topics  Selection statement – IF  Expressions  More practice writing simple C++ programs Announcements  Read pages for next.
Chapter 1: Introduction to Computers and Programming.
Presentation By :- Nikhil R. Anande ( ) Electronic & Communication Engineering. 3 nd Year / 5 th Semester FACULTY GUIDE : RAHIUL PATEL SIR MICROCONTROLLER.
Image Fusion In Real-time, on a PC. Goals Interactive display of volume data in 3D –Allow more than one data set –Allow fusion of different modalities.
2D Graphics Optimizations
GPU Architecture and Its Application
For Loops October 12, 2017.
Flow of Control October 16, 2017.
Programming Fundamentals (750113) Ch1. Problem Solving
Algorithms Take a look at the worksheet. What do we already know, and what will we have to learn in this term?
BugHint: A Visual Debugger Based on Graph Mining
Programming Fundamentals (750113) Ch1. Problem Solving
Programming Fundamentals (750113) Ch1. Problem Solving
Simulation And Modeling
Introduction to OpenGL
Language Definitions Chap. 3 of Orange Book.
Lec 6 Loop Statements Introduction to Computer Programming
October 9, 2003.
Constructors and Deconstructor
Presentation transcript:

Automatic Generation of Parallel OpenGL Programs Robert Hero CMPS 203 December 2, 2004

Motivation The use of graphics hardware can significantly increase the performance of visualization applications Many visualization algorithms can be modified to run on parallel systems Most applications don’t take advantage of both parallelism and the performance of graphics cards

Background Previous Research into Automatic Parallelism – Typically integrated with compiler – System or Application specific – Requires User interaction OpenGL – Uses graphics hardware – Not designed for parallel implementation – Some research into extending the OpenGL API with parallel commands

Automatic Parallelization Two stage process – First create a Program Dependency Graph Contains control flow information and data dependencies – Analyze PDG Find loop regions Look at data dependencies within loop region

Program Dependency Graph Contains three types of nodes – Region Nodes Functions and Loops Contains OpenGL state information –Must be sent to each processor when a loop is run in parallel – Control Nodes If/else and switch – Statement Nodes Variable declarations, Assignments, OpenGL commands

For Loop int x if cout int z Function Display(x) Display(y) int y Region Node Statement Node Control Node

Loops that can be Parallelized A loop can be parallelized if the data within the loop doesn’t depend on an assignment within the loop A loop can also be parallelized if the data in the loop depends on an assignment in the loop that can be predicted before the loop is called – ie loop counters

Future Work Implementing a full parser Better analysis of OpenGL commands – Many complex algorithms rely on special uses of alpha and texture buffers that can be detected Performance Considerations – Detect when the cost of parallelizing a loop is more than just running it sequentially