GPU Computing for GIS James Mower Department of Geography and Planning University at Albany.

Slides:



Advertisements
Similar presentations
Lecture 1: Introduction
Advertisements

COMPUTER GRAPHICS SOFTWARE.
GPU Programming using BU Shared Computing Cluster
COMPUTER GRAPHICS CS 482 – FALL 2014 NOVEMBER 10, 2014 GRAPHICS HARDWARE GRAPHICS PROCESSING UNITS PARALLELISM.
Scalable Multi-Cache Simulation Using GPUs Michael Moeng Sangyeun Cho Rami Melhem University of Pittsburgh.
GRAPHICS AND COMPUTING GPUS Jehan-François Pâris
PARALLEL PROCESSING COMPARATIVE STUDY 1. CONTEXT How to finish a work in short time???? Solution To use quicker worker. Inconvenient: The speed of worker.
Acceleration of the Smith– Waterman algorithm using single and multiple graphics processors Author : Ali Khajeh-Saeed, Stephen Poole, J. Blair Perot. Publisher:
Network coding on the GPU Péter Vingelmann Supervisor: Frank H.P. Fitzek.
The PTX GPU Assembly Simulator and Interpreter N.M. Stiffler Zheming Jin Ibrahim Savran.
Chapter 2 Introduction to Systems Architecture. Chapter goals Discuss the development of automated computing Describe the general capabilities of a computer.
Contemporary Languages in Parallel Computing Raymond Hummel.
ANDROID PROGRAMMING MODULE 1 – GETTING STARTED
GPU Graphics Processing Unit. Graphics Pipeline Scene Transformations Lighting & Shading ViewingTransformations Rasterization GPUs evolved as hardware.
GPGPU overview. Graphics Processing Unit (GPU) GPU is the chip in computer video cards, PS3, Xbox, etc – Designed to realize the 3D graphics pipeline.
To GPU Synchronize or Not GPU Synchronize? Wu-chun Feng and Shucai Xiao Department of Computer Science, Department of Electrical and Computer Engineering,
Realtime 3D Computer Graphics Computer Graphics Computer Graphics Software & Hardware Rendering Software & Hardware Rendering 3D APIs 3D APIs Pixel & Vertex.
CSE328:Computer Graphics OpenGL Tutorial Dongli Zhang Department of Computer Science, SBU Department of Computer Science, Stony.
GPU Programming Robert Hero Quick Overview (The Old Way) Graphics cards process Triangles Graphics cards process Triangles Quads.
CHAPTER 4 Window Creation and Control © 2008 Cengage Learning EMEA.
Codeplay CEO © Copyright 2012 Codeplay Software Ltd 45 York Place Edinburgh EH1 3HP United Kingdom Visit us at The unique challenges of.
1 The Performance Potential for Single Application Heterogeneous Systems Henry Wong* and Tor M. Aamodt § *University of Toronto § University of British.
Computer Graphics Graphics Hardware
BY: ALI AJORIAN ISFAHAN UNIVERSITY OF TECHNOLOGY 2012 GPU Architecture 1.
Tim Madden ODG/XSD.  Graphics Processing Unit  Graphics card on your PC.  “Hardware accelerated graphics”  Video game industry is main driver.  More.
Geometric Objects and Transformations. Coordinate systems rial.html.
By Arun Bhandari Course: HPC Date: 01/28/12. GPU (Graphics Processing Unit) High performance many core processors Only used to accelerate certain parts.
Chris Kerkhoff Matthew Sullivan 10/16/2009.  Shaders are simple programs that describe the traits of either a vertex or a pixel.  Shaders replace a.
The Graphics Rendering Pipeline 3D SCENE Collection of 3D primitives IMAGE Array of pixels Primitives: Basic geometric structures (points, lines, triangles,
CS 480/680 Intro Dr. Frederick C Harris, Jr. Fall 2014.
به نام خدا تنظیم کننده : فرانه حدادی استاد : مهندس زمانیان تابستان 92.
GPU Architecture and Programming
A Closer Look At GPUs By Kayvon Fatahalian and Mike Houston Presented by Richard Stocker.
GRAPHICS PIPELINE & SHADERS SET09115 Intro to Graphics Programming.
CS662 Computer Graphics Game Technologies Jim X. Chen, Ph.D. Computer Science Department George Mason University.
The System Shall… Provide the ability to render 2D/3D graphics, these graphics will be represented by assets like models textures, and shaders. Manage.
Chapter 2 Introduction to Systems Architecture. Chapter goals Discuss the development of automated computing Describe the general capabilities of a computer.
GPUs: Overview of Architecture and Programming Options Lee Barford firstname dot lastname at gmail dot com.
OpenCL Programming James Perry EPCC The University of Edinburgh.
Tim Madden ODG/XSD.  Graphics Processing Unit  Graphics card on your PC.  “Hardware accelerated graphics”  Video game industry is main driver.  More.
Fateme Hajikarami Spring  What is GPGPU ? ◦ General-Purpose computing on a Graphics Processing Unit ◦ Using graphic hardware for non-graphic computations.
Introduction to CUDA CAP 4730 Spring 2012 Tushar Athawale.
From Turing Machine to Global Illumination Chun-Fa Chang National Taiwan Normal University.
Ray Tracing using Programmable Graphics Hardware
GPGPU introduction. Why is GPU in the picture Seeking exa-scale computing platform Minimize power per operation. – Power is directly correlated to the.
ITP 109 Week 2 Trina Gregory Introduction to Java.
An Introduction to the Cg Shading Language Marco Leon Brandeis University Computer Science Department.
COMP 175 | COMPUTER GRAPHICS Remco Chang1/XX13 – GLSL Lecture 13: OpenGL Shading Language (GLSL) COMP 175: Computer Graphics April 12, 2016.
NVIDIA® TESLA™ GPU Based Super Computer By : Adam Powell Student # For COSC 3P93.
Heterogeneous Processing KYLE ADAMSKI. Overview What is heterogeneous processing? Why it is necessary Issues with heterogeneity CPU’s vs. GPU’s Heterogeneous.
Our Graphics Environment Landscape Rendering. Hardware  CPU  Modern CPUs are multicore processors  User programs can run at the same time as other.
Computer Graphics Graphics Hardware
GPU Architecture and Its Application
COMPUTER GRAPHICS CHAPTER 38 CS 482 – Fall 2017 GRAPHICS HARDWARE
Our Graphics Environment
Graphics Processing Unit
Introduction to OpenGL
OpenGL and Related Libraries
Chapter 6 GPU, Shaders, and Shading Languages
From Turing Machine to Global Illumination
Computer Graphics Graphics Hardware
Java Programming Introduction
Debugging Tools Tim Purcell NVIDIA.
Computer Graphics Introduction to Shaders
CIS 441/541: Introduction to Computer Graphics Lecture 15: shaders
Introduction to OpenGL
OpenGL-Rendering Pipeline
Running C# in the browser
CIS 6930: Chip Multiprocessor: GPU Architecture and Programming
Presentation transcript:

GPU Computing for GIS James Mower Department of Geography and Planning University at Albany

What is a GPU?  A GPU is a graphics processing unit  Modern GPUs are composed of multiple processors  Each of these processors can perform operations similar to those of CPUs  Modern GPUs costing under $1000 have thousands of processors  They are essentially parallel computing devices on your desktop or mobile device

The Future of GPU programming in GIS  Still in exploratory stages in GIS  NVIDIA lists several GIS prototype apps

What are GPUs used for?  At the moment, most GPU applications are found in 3D rendering applications  They are gradually finding their way into GIS animations requiring accelerated graphics  But they can do so much more…

What Kinds of Applications Benefit Most from GPU Environments?  Any program that can be computed in small, independent chunks  We don’t want processors waiting around for others to finish their work  Also, the less communication between the chunks, the more efficiency

How GPUs Speed Up Graphics Programs  Modern graphics APIs use the concept of a ‘pipeline’  At each step of the pipeline, a single vertex is operated upon, in sequence, by unique processors for:  Vertex coordinate transformations  The creation of additional geometry  Clipping and primitive generation  Fragment (essentially pixel) color assignment  Each vertex is processed independently

The Programmable Pipeline (for graphics applications)

Standard CPU process execution  A 4-core CPU can run up to 4 processes simultaneously  Each of the apps in this example may have many execution threads (processes), but at least 4 can run at the same time  Each process reads and writes information to system memory using the system bus

GPU hardware environment  The GPU is massively parallel (possibly thousands of cores)  It has its own memory store and data bus

How Do You Create a Graphics Application on a GPU?  Most graphics applications use 1 of 2 major application programmer interfaces (APIs):  OpenGL (Overseen by the Khronos Group)  GLSL shader language  DirectX (Microsoft)  HLSL shader language  Both GLSL and HLSL look a lot like C

The Dirty Details  A ‘GPU server program’ must be launched by a ‘client program’  Typically, the client program reads the server program code from one or more files  The code is read into simple text strings  The code is compiled, linked, and executed by calls to the API  If all goes well, the GPU now executes your server code

What Language Can You Use to Write the Client Program?  C/C++ is the most straightforward way to work with graphics and numerical applications  There are many bindings for other languages  My Landscape Rendering class is using OpenGL bindings for Java (using the JOGL package)  You can also use multiple programming languages for CUDA host applications  In CUDA, the CPU is the host and the GPU is the device

Compute Shaders  You can use OpenGL ‘compute shader’ programs to process numerical data (no graphics production)  However, other languages designed specifically for these applications are better suited for such work  Very good control for synchronous and asynchronous operation

Some General-Purpose GPU Programming Languages  CUDA (NVIDIA)  OpenCL (from the folks that brought you OpenGL)  OpenCL, CUDA, and other such languages have qualities similar to those expected by numerical programmers in C, C++, FORTRAN, etc.  These programs cannot access the graphics pipeline

Getting Started with GPU Computing  There are many excellent tutorials for graphics applications using OpenGL versions 3 and later  OGLDEV (  My first choice for learning new GPU graphics tricks  Useful whatever your programming language but best if you’re using C/C++   Similar topics; different perspective

Compilers, APIs, IDEs, phew!  When starting out (especially for graphics apps),  Update your graphics drivers for your GPU first!  Decide on an OS, an API and a CPU programming language  I use C++ with OpenGL on Windows 7  Use a decent integrated development environment (IDE)  I use Visual Studio 2010—many other options

What Version???  Use OpenGL version 3.3 or later (‘modern’ OpenGL)  I use the latest version of OpenGL that my GPU supports  Right now that’s 4.3  Good for applications that push limits of practicality  Why wouldn’t you use the latest version?  You may want to write production code for a device  Some devices may not support the latest version  Especially lower power mobile devices

What About Legacy Versions?  Legacy versions of OpenGL do not use the ‘programmable pipeline’  Much easier to learn than modern OpenGL but…  Legacy programs can be very slow in comparison  Impossible to do things like polynomial surface evaluation (B-splines, etc) at reasonable speeds  So, best not to get started with versions preceding 3.3

What to Expect  It’s Rocket Science! Go slowly  It’s not the theory—it’s the details that get you  The tools for building programs are thin  A little like old C programming  You have to do a lot of housekeeping…  Debugging is tough  In OpenGL, no direct way to ‘print’ from the GPU

Why Should You Care?  GPU computing opens new application frontiers  Improvements in CPU clock speeds are slowing  The solution has been to increase the number of processors  If you have applications that combine graphics and analysis and you want animation speed rendering  GPUs are for you!

Thanks for Coming!  Questions?