Download Our Graphics Environment

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Scala (programming language) wikipedia , lookup

Stream processing wikipedia , lookup

Library (computing) wikipedia , lookup

Abstraction (computer science) wikipedia , lookup

Functional programming wikipedia , lookup

Compiler wikipedia , lookup

Reactive programming wikipedia , lookup

Programming language wikipedia , lookup

Java (programming language) wikipedia , lookup

Multi-core processor wikipedia , lookup

Object-oriented programming wikipedia , lookup

Structured programming wikipedia , lookup

Go (programming language) wikipedia , lookup

Interpreter (computing) wikipedia , lookup

ILLIAC IV wikipedia , lookup

Java ConcurrentMap wikipedia , lookup

Comparison of OpenGL and Direct3D wikipedia , lookup

Java performance wikipedia , lookup

Mesa (computer graphics) wikipedia , lookup

OpenGL wikipedia , lookup

C Sharp (programming language) wikipedia , lookup

General-purpose computing on graphics processing units wikipedia , lookup

Transcript
Our Graphics Environment
Hardware
• CPU
• Modern CPUs are multicore processors that support programs that can run at
the same time as other programs
• The level of parallelism (as enabled by the number of CPU cores) is relatively
low
• GPU—massively parallel, set up for high-speed graphics
• All modern high-performance graphics systems use massively parallel
GPUs
• How do the CPU and GPU communicate? Slow data bus
Programing on the CPU
• We will use Java
• High-level language
• Interpreter translates our Java code to object code (check)
• Java Run-time Environment (JRE) takes the object code and translates it to
CPU readable machine language
• Need a graphic
Programming on the GPU
• We can only get to the GPU through the CPU
• We will write programs in Java that run on the CPU that launch
programs that run on the GPU
• We will call the CPU the ‘client side’ and the GPU the ‘server side’
• Our client-side Java programs will contain character strings that represent
relatively short OpenGL Shading Language (GLSL) programs
• The GLSL programs will be compiled and linked by built-in OpenGL tools on
the client side but…
• They will run on the GPU (the server-side)
• Wait! Don’t run away screaming…
Our programming environment
• Client side
• Java (language), Eclipse (IDE), JOGL (Java wrapper for OpenGL libraries)
• Server side
• GLSL (the OpenGL shading languages)
• Can you do this programming in other environments? Absolutely
• C and C++ are the most common client side programming languages (I use
C++)
• HLSL (high-level shading language) is used extensively by programmers
preferring to use the Microsoft DirectX graphics library over OpenGL
What if you don’t want to do graphics?
• GPUs can be used for general purpose programming (like a CPU)
• Some languages that are good for this include
• CUDA (NVIDIA)
• OpenCL (from the folks who gave you OpenGL)
• Probably many others