after all these years, he is still juggling

jugCLer: a Classic Reanimated

Welcome to my first OpenCL program! Hopefully by the time you read this, I will have cleaned up the source code a bit, so that it can serve as a starting point for your own exploration of general purpose GPU programming with OpenCL.

The juggler was originally created by Eric Graham in 1986 on a Commodore Amiga home computer. You can find more details in these historical notes. The juggler was an amazing sight at that time, and might have prompted quite a few dazzled onlookers to learn more about computer graphics. One of those people, Michael Birken, much later decided to resurrect the juggler, as a project to teach programming and mathematics.

It is one thing to abstractly know that the floating point throughput of modern hardware is tens or hundreds of millions times higher than it was in the home computer days. It is a completely different thing to see that performance being put to use. Eventually I realized that the juggler would be the perfect messenger to demonstrate the immense power of modern throughput processors. As an icon of the past, it would bring back memories of what used to be the latest and greatest back then, but appears as old as a handaxe today. No one but the juggler could better embody the stark contrast: sixty frames per second what took an hour per frame back then at lower resolution.

Plus, good ole' juggler would probably bring a smile to those who still remembered him from their own past. :-)

Here is the Source Code:

Here is a tarball of the sources. This code has been developed on MacOS X, as a command line program using OpenCL, and OpenGL (via GLUT). I based it on David Bucciarelli's portable MandelGPU. So some precautions have been taken for Linux and Windows, as the jugCLer is ultimately meant to be cross-platform. But only limited testing has been done as of now, and all bug reports and suggestions are welcome.

Enjoy!


Update

In the meantime David Bucciarelli, of Luxrender and LuxMark fame, has kindly agreed to provide a home to the jugCLer as part of the OCLtoys collection of OpenCL programming examples and demos. Further development of the jugCLer demo, if any, will most likely happen at OCLtoys.

From there, the jugCLer was engaged for a world tour in all web browsers that support WebCL. A short youtube video captures the highlights of one of his live performances.