brook+_1.3 - Stream Computing using Brook+ School of...

Info iconThis preview shows pages 1–6. Sign up to view the full content.

View Full Document Right Arrow Icon
School of Electrical Engineering and Computer Science University of Central Florida Stream Computing using Brook+ Stream Computing using Brook+ Slides courtesy of P. Bhaniramka Outline Outline • Overview of Brook+ • Brook+ Software Architecture – Compiler – Runtime • Brook+ Kernel Development – Performance analysis – Performance Optimization – Debug
Background image of page 1

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Brook+ Brook+ • Brook is an extension to the C-language for stream computing – Syntax to represent and manipulate Streams – Syntax for kernel specification – Originally developed by Stanford U. • Brook+ is AMD’s implementation of the Brook GPU spec on AMD’s CAL (compute abstraction layer) – Fixes – Optimizations – Many changes in 1.3 release Design Goals • Open Standards, Open Source – Existing initiative with multiple users – Cross-platform support • Simple and easy to use – Attractive for application development and platform adoption – Low-level tools accessible for further enhancements • Portability and Performance – BrookGPU worked with multiple backends (DirectX9, OpenGL, CPU running on both ATI and nVidiaGPUs) • Interoperability with other tools – Necessary for production quality software – Fits in the Stream SDK stack – C++ application compatibility (1.3 release)
Background image of page 2
Programming model Programming model Programming model: example
Background image of page 3

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Programming model • Brook+ programs consists of – Host side code • Application data management • Stream allocation and data transfer • Computation (sequential) – GPU-side Kernel (Data parallel code) • Read input streams • Perform parallel computations • Write output streams Program structure – GPU kernel • Written in separate file (usually .br) • Compiled using brook+ compiler, brcc • Generates GPU-specific binary code • Generates header file to be included in host side for kernel invokation
Background image of page 4
Program structure: host side • Written in regular C/C++ • Compiled and linked using regular C/C++ compiler – Default is C++ – C requires brcc flag • Need to include brcc generated header Brook+ Kernels • Computational routines that operate on kernels • One instance executed for each element in the domain of execution (a.k.a a thread) – Implicit: elements in the output stream – Explicit control: domainSize and domainOffset functions • Internally compiled into GPU-specific binary
Background image of page 5

Info iconThis preview has intentionally blurred sections. Sign up to view the full version.

View Full DocumentRight Arrow Icon
Image of page 6
This is the end of the preview. Sign up to access the rest of the document.

This note was uploaded on 10/03/2011 for the course CDA 6938 taught by Professor Zou,c during the Spring '08 term at University of Central Florida.

Page1 / 14

brook+_1.3 - Stream Computing using Brook+ School of...

This preview shows document pages 1 - 6. Sign up to view the full document.

View Full Document Right Arrow Icon
Ask a homework question - tutors are online