Archive for the ‘OpenMP’ Category

Equalizer 1.4 released

7. September 2012


The last two weeks have been quiet, since I was on biking through Switzerland. Meanwhile, poor Daniel back at work churned through most of the Collage changes outlined in the last post. You can see the changes in the Collage endian branch on github, which will be merged back into master in the next couple of weeks.

Now back to the news: After finally figuring out how to build Equalizer and dependencies using MacPorts portfiles on Mac OS X, I released the long-standing 1.4 version of Equalizer, GPU-SD, Lunchbox and vmmlib. Below is the release announcement – enjoy!

Neuchatel, Switzerland – September 7, 2012 – Eyescale is pleased to announce the release of Equalizer 1.4.

Equalizer is the standard framework to create and deploy parallel, scalable 3D applications. This modular release includes Collage 0.6, a cross-platform C++ library for building heterogenous, distributed applications, GPU-SD 1.4, a C++ library and daemon for the discovery and announcement of graphics processing units using zeroconf networking and Lunchbox 1.4, a C++ library for multi-threaded programming. All software packages are available for free for commercial and non-commercial use under the LGPL open source license.

Equalizer 1.4 is a feature release extending the 1.0 API, introducing major new features, most notably asynchronous readbacks, region of interest and thread affinity for increased performance during scalable rendering. It culminates over seven years of development and decades of experience into a feature-rich, high-performance and mature parallel rendering framework and related high-performance C++ libraries.

Equalizer enables software developers to easily build interactive and scalable visualization applications, which optimally combine multiple graphics cards, processors and computers to scale the rendering performance, visual quality and display size.

Equalizer Applications

Eyescale provides software consulting and development services for parallel 3D visualization software and GPU computing applications, based on the Eyescale software products or other open and closed source solutions.

Please check the release notes on the Equalizer website for a comprehensive list of new features, enhancements, optimizations and bug fixes. A paperback book of the Programming and User Guide is available.

We would like to thank all individuals and parties who have contributed to the development of Equalizer 1.4.

Left image courtesy of Cajal Blue Brain/ / Blue Brain Project. Second from left copyright Realtime Technology AG, 2008. Right image courtesy University of Siegen, 2008.

Equalizer 0.9 Released!

11. August 2009

Cross-Segment Load-Balancing
We are pleased to announce the release of Equalizer 0.9, the standard framework to create and deploy parallel, scalable OpenGL applications. The most notable new features in this release are:

Please check the release notes on the Equalizer website for a comprehensive list of new features, enhancements, optimizations and bug fixes. A paperback book of the Programming and User Guide is available from Lulu.com.

We would like to thank all individuals and parties who have contributed to the development of Equalizer 0.9.

Equalizer BOF at Eurographics 2009

16. February 2009

Good news everybody, we will be holding an Equalizer Birds-Of-a-Feather meeting during Eurographics’09 – mark your calenders:

– Place: Eurographics 2009, TU Munich
– Date: March 31, 15:00-16:30
– Room: To be announced

Co-located with EG is the Eurographics Symposium on Parallel Graphics and Visualization, so there is yet another good reason to come to Munich!

We are still looking for presentations, please contact me by end of February if you are working with Equalizer and would like to present your work.

Coincidentally, there is also a new poll:

Equalizer 0.6 released!

3. December 2008

Here is the release announcement:

Scalable Display System

We are pleased to announce the release of Equalizer 0.6, a major advance in parallel OpenGL rendering, supporting:

  • Automatic 2D and DB load-balancing
  • DPlex (time-multiplex) compounds
  • Paracomp compositing backend

Please check the release notes on the Equalizer website for a comprehensive list of new features, enhancements, optimizations and bug fixes. The Programming Guide can be ordered at lulu.com.

We would like to thank all individuals and parties who have contributed to the development of Equalizer 0.6.

About RTT Scale

RTT Scale is the new scalability module for RTT’s leading high-end visualisation software suite RTT DeltaGen. The module is to be integrated into the forthcoming Version 8.5. RTT Scale uses Equalizer 0.6 to boost OpenGL and ray-tracing performance on highly realistic, complex scenes. Please visit http://www.rtt.ag for more information.

About Equalizer

Equalizer is the standard middleware to create parallel OpenGL-based applications. It enables applications to benefit from multiple graphics cards, processors and computers to scale rendering performance, visual quality and display size. Please visit http://www.equalizergraphics.com for more information.

Commercial support, custom software development and porting services are available from Eyescale Software GmbH. Please contact info@eyescale.ch for further information.

Image copyright Realtime Technology AG, 2008.

New Poll, Equalizer 0.6 release coming

14. November 2008

I’ve just tagged the release candidate for the upcoming 0.6 release. You can get the release notes here.

Since the blogflux polls are broken for some time and to celebrate the new release, I’ve also created a new poll. Here it is:

GCC, pthreads and OpenMP

14. June 2008

About a month ago I mentioned an issue with OpenMP and pthreads on GCC in another post.

This week there was a reply to the bug I’ve opened. Apparently it has been fixed, too bad that it will take quite some time to trickle down into a gcc release and then into OS distributions, but that’s not really anybody’s fault.

ICC, GCC and OpenMP

15. May 2008

Since a colleague finished the CPU-based alpha-compositing in Equalizer, it was time for another compiler benchmark round.

Performance of gcc, icc and OpenMP
This time I used my MacBook Pro with an Intel Core 2 Duo 2.16 GHz, running Mac OS X 10.5.2. The compilers available were gcc 4.0.1, gcc 4.2.1 and icc 10.1.014. The latter two ones I tested with OpenMP disabled and enabled.
The results can be seen on the left (click on the picture for a large version). The upper graph shows the absolute throughput in MB/s for the performance-critical algorithms in Equalizer, and the lower the relative performance compared to the gcc 4.0.1 baseline.

Depth compositing assembles multiple color input images into an destination image based on the depth values. This is used for recombining the result of database decompositions of polygonal data.
Alpha compositing blends the results of volume rendering based on the alpha-value of the images.
Image compression is a RLE-like algorithm used to compress the images during network transfer.

For all tests only the basic optimization flag ‘-O2’ was used. I am sure that by tweaking the compiler flags and code, more performance can be squeezed out of the algorithm.
Nevertheless the results are interesting and representative, since I don’t have the time to investigate and maintain more complicated optimizations.
I think most programmers are under similar time constraints, and getting a 50-100% speed bump by just changing the compiler, and another couple of percents for adding a simple OpenMP pragma is quite valuable.

Good work Intel and the GCC-OpenMP team!

PS: Anybody has seen this bug with gcc and OpenMP?

Equalizer 0.5 released

17. April 2008

As promised, here is the release of Equalizer 0.5:

A Three-to-One Pixel Decomposition

We are pleased to announce the release of Equalizer 0.5, a framework for the development and deployment of parallel OpenGL applications. Equalizer 0.5 adds a number of features to increase the scalability, most notably pixel compounds for fill-rate-bound applications and a 2-4x performance increase during sort-last compositing. The Programming Guide has been extended to 43 pages and covers various new topics. Preview the content and order your hardcopy today at lulu.com!

Equalizer 0.5 now uses GLEW to provide easy-to-use OpenGL extension handling in parallel OpenGL applications. The new support for off-screen PBuffers on all platforms opens new use cases for Equalizer-based applications, for example seamless integration for scalability on multi-GPU workstations. Where available, image compression during network transfer has been accelerated using OpenMP.

The full release notes for version 0.5 are available at http://www.equalizergraphics.com/documents/RelNotes/RelNotes_0.5.0.html.

Commercial support, custom software development and porting services are available from Eyescale Software GmbH. Please contact info@eyescale.ch for further information.

More on Depth-Based Assembly

4. January 2008

Performance of various DB assemble algorithms

It seems that 2008 will be the year of performance for Equalizer. 🙂

I’ve just commited the first version of CPU-based depth assembly to the Equalizer code base. The algorithm first assembles all images into a memory buffer on the CPU, and then transfers the result to the GPU using the default algorithm (GLSL in this case).

As you can see on the right, this algorithm is vastly faster than using the GPU. Each input image in this configuration adds about 4 ms to the total time, as compared to 18 ms for GLSL.

Since there is the static cost for setup and transferring the result (about 22 ms in the benchmark), the CPU-based algorithm makes only sense for more than one image, but becomes substantially faster as the number of input images grows. With four images, the new code is 4.5x faster than Equalizer 0.4, with eight images 6.4 times.

The benchmark used the same machine as in the previous posting. It has two 2.2 GHz Opteron CPU’s, but since OpenMP was not enabled, only one processor was used. OpenMP should accelerate this code path even more.

My first OpenMP code…

13. November 2007

…well, the first one I’ve written myself.

I’ve spent some time on trying to optimize the RLE-like image compression used for network transfer of frame buffer data in Equalizer. After fiddling a couple of hours with SSE2 and not getting anywhere, I gave OpenMP a shot.

Turns out the parallelization was quite easy, but only gains 20-30% on a dual-core machine with gcc 4.2. There should be some room for improvement, but it’s a first step and now the code runs at >700 MB/s compression rate on a 2.16 GHz Core2 Duo.

For the curious: here is the change. Maybe there is an OpenMP crack out there who wants to beat my implementation. 😉