Für eine korrekte Darstellung dieser Seite benötigen Sie einen XHTML-standardkonformen Browser, der die Darstellung von CSS-Dateien zulässt.


  Faculty 12  /  CG  /  svt  /  osgCompute  / 
Sitemap
 

Welcome to osgCompute - a nodekit for OpenSceneGraph

osgCompute is the abstract base library for the execution of code on parallel streaming processors. The library is connected to OpenSceneGraph (OSG) and thus it can be included in the scenegraph. It gives the user the possibility to jump to the Graphics Processing Unit (GPU) for any kind of calculations. The manipulated data is then afterwards available to the scenegraph for further processing (e.g. rendering).

osgCompute feat. osgCuda

osgCuda is based on the osgCompute library and implements the specific functionality for NVIDIA's CUDA. CUDA is a general purpose parallel computing architecture that leverages the parallel compute engine in NVIDIA GPUs to solve many complex computational problems in a fraction of the time required on a CPU.

UML

What is next? OpenCL (Open Computing Language) is a new heterogeneous computing environment. A release of a OpenCL API/driver interface doesn't exist at the moment. The use of osgCompute as the base library for the connection of OpenCL and OSG looks promising.


For support please subscribe to the public mailing list of OpenSceneGraph or go directly to the OpenSceneGraph forum which is synchronized with the mailing lists.


News

30th, March 2010Version 0.7 of osgCompute has been tagged. This version includes some minor bug fixes and provides easy context handling (see download section).
16th, December 2009Version 0.6 of osgCompute has been tagged. This version is compatible with the current OSG-svn/trunk/2.9.6 version (see download section).
In addition to Windows and Linux operating systems the current version of osgCompute officially supports Mac OS X.
10th, December 2009Version 0.5 of osgCompute has been tagged. Please see the download section for further details.
11th, November 2009A new example "osgGeometryDemo" has been added.
28th, September 2009osgCompute has been continuously updated during the last months. Please download the latest tagged version (0.4) of osgCompute or check out the SVN trunk.
20th, April 2009SVN trunk is now open to the public and can be downloaded. Since the documentation is not finished yet please refer to the examples to obtain any explanations.

Features

osgCompute takes advantage of parallel streaming processors on GPUs. It offers a simple interface for GPU progamming which dramatically increases the speed of your application (since osgCuda is the only library which implements this functionality we refer to some CUDA specific terms in the following):

  • Jump to the GPU within the OSG scenegraph for GPU calculations
  • Further processing of the GPU data within the OSG scenegraph
  • Basic data types of the streaming processors are encapsulated in Buffers
  • Buffers ensure a proper exchange of OSG and CUDA data types as well as between various modules
  • Quick start for scientific visualization
  • Examples easily describe how to use the library
  • osgCuda supports the latest Runtime API of CUDA
  • Easy debugging of the graphics kernels

Examples

The osgCompute library contains some examples which show the library's usage and its capabilities in principle. For any details please examine the source code of the examples.

Example: Endianness osgEndiannessDemo uses osgCuda for computing a simple swap of the byte order of a given input stream. This example demonstrates the usage of osgCuda with no OpenGL functionality.
Example: Geometry osgGeometryDemo uses osgCuda and the OSG scenegraph for a deformation of the geometry. The osgCuda::Module "warp" moves the vertices along the normal vector. The result is then rendered by OSG.
Example: Particles osgParticleDemo uses osgCuda and the OSG scenegraph for a simple particle movement. Two osgCuda::Modules take care of the particle emitter and the particle mover functionality. The result calculated by the modules is then rendered by OSG using a point sprite approach for proper visualization.
Example: Texture osgTexDemo loads an osg::Image which is then processed by an osgCuda::Module. The module uses CUDA arrays and CUDA texture filtering. Finally, the result is rendered by OSG.

Usage

osgCompute implements its computation node as a RenderBin and thus it can be used similar to an osg::Camera in the scenegraph or as a leaf node. A RenderBin can contain further RenderBins producing a tree hierarchy of RenderBins. Here is a simple scenegraph example: first, the computation is processed. Its results then can be applied to the rest of the scenegraph.

Sample Scenegraph

Requirements

  • We recommend using the OSG-2.8 branch or even the current OSG-svn/trunk/2.9.x version of OpenSceneGraph for testing the latest developer release of osgCompute, although it should also work with former OpenSceneGraph versions
  • CMake build system to generate a platform-specific build environment
  • osgCuda needs a proper CUDA driver for your NVIDIA graphics card

Restrictions

  • The current SVN version of OpenSceneGraph (OSG-svn/trunk/2.9.x or later) or the upcoming release of OpenSceneGraph-2.8.1 is recommended for the support of multithreading with osgCuda
  • The Driver API is currently not supported by osgCuda
  • An OSG scenegraph which includes osgCompute cannot be saved to a file at the moment

Future Work

  • We are working on a feature which enables the osgCompute modules to be loaded and saved together with the OSG scenegraph
  • The connection to OpenCL might also be a nice challenge

Documentation

A doxygen documentation of the source code will be available soon.

Download

Source: Please use the following svn command in order to get the latest revision of the osgCompute source:
svn co https://svn.cg.informatik.uni-siegen.de/svt/osgCompute/trunk osgCompute

Example Data: If the examples are compiled please ensure that the data will be available. Please add the path of the data directory to your OSG_FILE_PATH environment variable. This ensures that OSG is able to load the necessary data successfully. The latest svn revision of the data can be obtained here:
svn co https://svn.cg.informatik.uni-siegen.de/svt/osgCompute-Data/trunk osgCompute-Data

Or download the following source packages (we recommand to compile and run the sources with the osg-version they were created for):

File Description Size Date OSG Version
osgCompute-0.7.zip Latest developer release 153KB 03/30/10 OSG-svn/trunk/2.9.6
osgCompute-Data-0.7.zip Example data 170KB 03/30/10  

Older Versions:
osgCompute-0.6.zip   153KB 12/16/09 OSG-2.9.6
osgCompute-Data-0.6.zip   170KB 12/16/09  
osgCompute-0.5.zip   150KB 12/10/09 OSG-2.8.x
osgCompute-Data-0.5.zip   170KB 12/10/09  
osgCompute-0.4.zip   153KB 09/28/09 OSG-2.8.x
osgCompute-Data-0.4.zip   170KB 09/28/09  
osgCompute-0.2.zip   132KB 04/09/09 OSG-2.8.x
osgCompute-Data-0.2.zip   170KB 04/09/09  
osgCompute-0.1.zip   130KB 04/06/09 OSG-2.8.x
osgCompute-Data-0.1.zip   170KB 04/06/09  

License

osgCompute is protected by Copyright, and is licensed as OpenSource, so the source code is freely available, modifyable and redistributed under terms of the Lesser Gnu Public License (LGPL).

Acknowledgements

We would like to thank Robert Osfield for his support regarding osgCompute and for his incredible work on OpenSceneGraph. Additionally, we would also like to thank Art Tevs for discussing some design questions as well as testing the modules.

More Information

J. Orthmann, M. Keller and A. Kolb:
Integrating GPGPU Functionality into Scene Graphs
In 14th International Workshop on Vision, Modeling, and Visualization, 2009

Contact

osgCompute is developed and maintained by the SVT group which consists of members of the Computer Graphics and Multimedia Systems Group of the University of Siegen, Germany.

For support on osgCompute (incl. osgCuda) please subscribe to the public mailing list of OpenSceneGraph or go directly to the OpenSceneGraph forum which is synchronized with the mailing lists.