What Programming Language Should We Use Tomorrow Kim Young Soo.

Slides:



Advertisements
Similar presentations
GPGPU Programming Dominik G ö ddeke. 2Overview Choices in GPGPU programming Illustrated CPU vs. GPU step by step example GPU kernels in detail.
Advertisements

The Brave New World of Software Adam Kemp Staff Software Engineer National Instruments.
GPU Programming using BU Shared Computing Cluster
Presentation by Amal Babu New OS of Google, initially designed for netbooks Released in second half of 2010 Google chrome browser on Linux kernel Inbuilt.
Multi-core and tera- scale computing A short overview of benefits and challenges CSC 2007 Andrzej Nowak, CERN
GI 2006, Québec, June 9th 2006 Implementing the Render Cache and the Edge-and-Point Image on Graphics Hardware Edgar Velázquez-Armendáriz Eugene Lee Bruce.
HPCC Mid-Morning Break High Performance Computing on a GPU cluster Dirk Colbry, Ph.D. Research Specialist Institute for Cyber Enabled Discovery.
Weekly Report Ph.D. Student: Leo Lee date: Oct. 9, 2009.
GPU Computing with CUDA as a focus Christie Donovan.
Overview of Programming Paradigms
Chapter 3.2 C++, Java, and Scripting Languages. 2 C++ C used to be the most popular language for games Today, C++ is the language of choice for game development.
Chapter 3.2 C++, Java, and Scripting Languages “The major programming languages used in game development.”
1 ITCS 6/8010 CUDA Programming, UNC-Charlotte, B. Wilkinson, Jan 19, 2011 Emergence of GPU systems and clusters for general purpose High Performance Computing.
Vertex & Pixel Shaders CPS124 – Computer Graphics Ferdinand Schober.
Compilation, Architectural Support, and Evaluation of SIMD Graphics Pipeline Programs on a General-Purpose CPU Mauricio Breternitz Jr, Herbert Hum, Sanjeev.
Introduction What is GPU? It is a processor optimized for 2D/3D graphics, video, visual computing, and display. It is highly parallel, highly multithreaded.
GPU Graphics Processing Unit. Graphics Pipeline Scene Transformations Lighting & Shading ViewingTransformations Rasterization GPUs evolved as hardware.
Unit Six Assignment 1 Chris Boardley.
HPCC Mid-Morning Break Dirk Colbry, Ph.D. Research Specialist Institute for Cyber Enabled Discovery Introduction to the new GPU (GFX) cluster.
Realtime 3D Computer Graphics Computer Graphics Computer Graphics Software & Hardware Rendering Software & Hardware Rendering 3D APIs 3D APIs Pixel & Vertex.
Lecture 2 : Introduction to Multicore Computing Bong-Soo Sohn Associate Professor School of Computer Science and Engineering Chung-Ang University.
CSU0021 Computer Graphics © Chun-Fa Chang CSU0021 Computer Graphics September 10, 2014.
GPU Programming Robert Hero Quick Overview (The Old Way) Graphics cards process Triangles Graphics cards process Triangles Quads.
Real-time Graphical Shader Programming with Cg (HLSL)
Introduction CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
Computer Graphics Graphics Hardware
BY: ALI AJORIAN ISFAHAN UNIVERSITY OF TECHNOLOGY 2012 GPU Architecture 1.
GPU Shading and Rendering Shading Technology 8:30 Introduction (:30–Olano) 9:00 Direct3D 10 (:45–Blythe) Languages, Systems and Demos 10:30 RapidMind.
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.
A Crash Course in HLSL Matt Christian.
Introduction CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
Computer Graphics Tz-Huan Huang National Taiwan University.
1 Dr. Scott Schaefer Programmable Shaders. 2/30 Graphics Cards Performance Nvidia Geforce 6800 GTX 1  6.4 billion pixels/sec Nvidia Geforce 7900 GTX.
Emergence of GPU systems and clusters for general purpose high performance computing ITCS 4145/5145 April 3, 2012 © Barry Wilkinson.
1 Introduction to Computer Graphics with WebGL Ed Angel Professor Emeritus of Computer Science Founding Director, Arts, Research, Technology and Science.
Liang, Introduction to C++ Programming, (c) Chapter 1 Introduction to Computers, Programs, and C++
CS662 Computer Graphics Game Technologies Jim X. Chen, Ph.D. Computer Science Department George Mason University.
JPEG-GPU: A GPGPU IMPLEMENTATION OF JPEG CORE CODING SYSTEMS Ang Li University of Wisconsin-Madison.
Introduction What is GPU? It is a processor optimized for 2D/3D graphics, video, visual computing, and display. It is highly parallel, highly multithreaded.
May 8, 2007Farid Harhad and Alaa Shams CS7080 Overview of the GPU Architecture CS7080 Final Class Project Supervised by: Dr. Elias Khalaf By: Farid Harhad.
Havok FX Physics on NVIDIA GPUs. Copyright © NVIDIA Corporation 2004 What is Effects Physics? Physics-based effects on a massive scale 10,000s of objects.
Computer Graphics 3 Lecture 6: Other Hardware-Based Extensions Benjamin Mora 1 University of Wales Swansea Dr. Benjamin Mora.
Debunking the 100X GPU vs. CPU Myth An Evaluation of Throughput Computing on CPU and GPU Present by Chunyi Victor W Lee, Changkyu Kim, Jatin Chhugani,
From Turing Machine to Global Illumination Chun-Fa Chang National Taiwan Normal University.
Introduction CSE 1310 – Introduction to Computers and Programming Vassilis Athitsos University of Texas at Arlington 1.
GPGPU introduction. Why is GPU in the picture Seeking exa-scale computing platform Minimize power per operation. – Power is directly correlated to the.
3/12/2013Computer Engg, IIT(BHU)1 CUDA-3. GPGPU ● General Purpose computation using GPU in applications other than 3D graphics – GPU accelerates critical.
GPU Computing for GIS James Mower Department of Geography and Planning University at Albany.
COMP 175 | COMPUTER GRAPHICS Remco Chang1/XX13 – GLSL Lecture 13: OpenGL Shading Language (GLSL) COMP 175: Computer Graphics April 12, 2016.
JavaScript Invented 1995 Steve, Tony & Sharon. A Scripting Language (A scripting language is a lightweight programming language that supports the writing.
Accelerating K-Means Clustering with Parallel Implementations and GPU Computing Janki Bhimani Miriam Leeser Ningfang Mi
First appeared Features Popular uses Basic This language emphasises on ease of use, allowing general purpose programming to those with a small amount of.
Our Graphics Environment Landscape Rendering. Hardware  CPU  Modern CPUs are multicore processors  User programs can run at the same time as other.
General Purpose computing on Graphics Processing Units
Computer Graphics Graphics Hardware
Emergence of GPU systems for general purpose high performance computing ITCS 4145/5145 July 12, 2012 © Barry Wilkinson CUDAIntro.ppt.
The language focusses on ease of use
Basic 1960s It was designed to emphasize ease of use. Became widespread on microcomputers It is relatively simple. Will make it easier for people with.
NOCTI Study Guide #2.
Basic 1964 PC general purpose Imperative Small Easy to use.
Programmable Shaders Dr. Scott Schaefer.
Our Graphics Environment
Graphics Processing Unit
Introduction CSE 1310 – Introduction to Computers and Programming
From Turing Machine to Global Illumination
Parallel Programming in Contemporary Programming Languages (Part 2)
Computer Graphics Graphics Hardware
CIS 441/541: Introduction to Computer Graphics Lecture 15: shaders
Graphics Processing Unit
Presentation transcript:

What Programming Language Should We Use Tomorrow Kim Young Soo

Introduction

 Language is a religion So, what language do you believe? So, what language should we use tomorrow? We should choose the language which is good for our purpose

Contents  Introduction  Trends and Languages Multi-core Productivity Other trends  Conclusion

MULTI-CORE PROCESS Language for multi-core parallel programming

CPU Clock Limit Intel Pentium (3.2GHz) \62,900 Intel Core 2 Duo E6600 (2.4GHz) \221,840

Trend is Multi-Core  Single Core, Dual Core, Quad Core… Intel Developed 8-Core “Gainestown”

As Mr.Lee Presented…  Functional Language is good for programming for Multi-core processes Pure function Optimization  Thread Safe! Haskell provides STM (transaction memory)

Parallel Programming in Haskell

Parallel Programming in C  OpenMP We can just use “#prgma omp” directive Little more complex than Haskell’s case  But… Really ‘Little’? NO!

Speed of Functional Language  Very Slow Lazy Evaluation List Processing Garbage Collection Etc..

Trend is Multi-Core…?  Single Core, Dual Core, Quad Core… Intel Developed 8-Core “Gainestown”  Changing not so rapidly Still, Even quad-core is not so common Expensive

But there is…  In my computer, there is a device which Can process numbers faster than CPU! Have more core than CPU! …more expensive than CPU! OTL

GPU  GPU in the VGA Card To Process Graphic Data Excessive Number of Vertex and Pixel We need Simple but Many and Fast Processer

Shading Language  To fully use GPU to process graphic data We need program for GPU : Shader Decide GPU’s behavior

Shading Language  Shader in DirectX 8 Simple.vsh vs.1.1 dp4 oPos.x, v0, c0 dp4 oPos.y, v0, c1 dp4 oPos.z, v0, c2 dp4 oPos.w, v0, c3 dp3 oD1, v3, -c4 mov oD0, c5 mov oT0, v7

Shading Language  DirectX 9 Provides HLSL PS_OUT ps( PS_IN In ) { PS_OUT Out = ( PS_OUT ) 0; float4 color; float4 shadow; color = tex2D( sBase, In.Base.xy ); shadow = tex2D( sShadow, In.Shadow.xy ); color = color * shadow; Out.Color = color; return Out; }

Shading Language  High-level shading languages CG (C for Graphics) GLSL (OpenGL) HLSL (DirectX) C-like languages

Shading Language  And next…?  Graphic Library to Software Rendering Tim Sweeney(Epic Games)’s speech in CEDEC 2008 We need high level language Productivity is also important  Basically, shader programming is massive-parallel Shading Language often describe what ‘value’ should be Why cannot be functional?

GPGPU  GPU is not only for shading Good to Floating point operations High-end VGA Card’s has >1 Tflops of computing power GPU for General Purpose

GPGPU  NVidia Supports CUDA for GPGPU C-like GPGPU program language Tesla series graphic card for CUDA  Revolution Started!

GPGPU

 C-like language is not enough Will you only use assembly to single thread? More high-level Language for Parallel computing  Functional?!

Functional is not a Panacea  Difficult for common programmers in field IO, GUI programming Procedural Algorithms Flow control Why we are still using QWERTY keyboard?  Evaluation cost

PRODUCTIVITY Easiness of programming

Productivity for Small Program  Easiness is the most important For programmer Not for programmer Labview Matlab

Script Language  Python, Ruby, JavaScript and etc..  Very easy to learn Simple grammar Doesn’t need to consider everything  Some weakly-dynamic typed language Easy More Intuition Friendly

Productivity for Big program  Big and Bigger! Mabinogi : Windows XP : Mac OS X 10.4 : Debian 4.0 : 1,000,000 Lines 86,000,000 Lines 283,000,000 Lines 40,000,000 Lines

Productivity for Big program Gears of War Gameplay Code ~250,000 lines C++, script code Gears of War Gameplay Code ~250,000 lines C++, script code Unreal Engine 3 Middleware Game Engine ~250,000 lines C++ code Unreal Engine 3 Middleware Game Engine ~250,000 lines C++ code DirectX Graphics DirectX Graphics OpenAL Audio OpenAL Audio Ogg Vorbis Music Codec Ogg Vorbis Music Codec Speex Speech Codec Speex Speech Codec wx Widgets Window Library wx Widgets Window Library ZLib Data Compr- ession ZLib Data Compr- ession …

Productivity for Big program  Modularity Functional Language, OOP…  Reliability Memory operation Type checking  Concurrency I already mentioned about concurrency

OTHER TRENDS Web 2.0, Cloud Computing

Web 2.0  Based on web application Dynamic web page Web based application  Programming Languages? Mainly Framework Based Easy, Browser-friendly language needed

Cloud Computing  Server program should be parallel  Consider browser and network

CONCLUSION Functional? Script? and…

Conclusion  Multi-core Trend Concurrency is very important High-level language for productivity Functional can be answer

Conclusion  Productivity is very ‘very’ important For small program Easy script language can be answer For big program Must be well-moduled High-Level language Functional language can be answer

C# is under developing  C# structured, imperative, object-oriented, event-driven, functional, static-strong typed  Microsoft is providing and developing useful paradigm and functions

My Recommendation  Learn and use Haskell Python or Ruby or Perl C# And Assembly, C, C++, Delphi, HDL, Java, Matlab, Labview, Lex, Lua, Prolog, Regular Expression, Visual Basic…

Reference  Tim Sweeney's talk at POPL06 and CEDEC 2008  Wikipedia  Google Image Search

Thanks for your attention