Exit Through the Gift Shop

>> Monday, June 27, 2011

Over the weekend, I watched the documentary Exit Through the Gift Shop and I really enjoyed it. I knew nothing about street art, but it looks like a lot of fun, and the artists (Banksy, Shepard Fairey, and Space Invader) seem like genuine, passionate, fascinating people.

This isn't a normal documentary. The film centers on a protagonist named Thierry Guetta, who transforms from a slavish camera operator into a famous, arrogant artist. Some reviewers claim the film is true to life, but others call the movie a complete hoax, saying that Banksy is thumbing his nose at the world of art.

I agree that parts of the documentary are fiction, but I disagree regarding Banksy's motives. Before I can present my interpretation, I need to explain what happens in the film:

  1. Thierry Guetta, a childlike man obsessed with his videocamera, becomes fascinated with street art. He stalks Space Invader, Shepard Fairey, Banksy, and others, following them as they work and recording their thoughts.
  2. Banksy, seeing Thierry's footage, asks him to create a documentary. The result, called Life Remote Control, is atrocious, and Banksy decides to make the documentary on his own.
  3. While Banksy becomes a filmmaker, Thierry becomes a street artist. He adopts the name Mr. Brainwash and acquires enough standing to hold his own art auction in Los Angeles.
  4. In preparation for his show, Thierry becomes a tyrant and a copycat. He does nothing on his own, and orders his subordinates to produce obviously-derivative works based on existing pop art (Marilyn Monroe with blue hair, Elvis with a machine gun, and so on).
  5. Despite mocking reviews from Banksy and others, Thierry's show is a success.

Since watching the movie, I've done some research on my own (mainly Wikipedia). I'm not certain about anything, but here's what I've gathered:
  1. Life Remote Control was a real documentary, but the director was a Swiss filmmaker named Joachim Levy, not Thierry.
  2. Banksy used the name "Mister Brainwash" in his street art long before Thierry took the name for himself.
  3. Thierry's artshow really took place, and he really succeeded.

Here's my interpretation. Banksy made this documentary on his own because he hated Life Remote Control, but rather than insult Mr. Levy, he shifted the blame to the cameraman, Thierry. He also gave Thierry a persona: arrogant, obsessive, and phony. In doing this, Banksy's goal is to contrast Thierry with the street art movement. This, Banksy is saying, is what we are not.

The reception of Thierry's art is the only aspect of the documentary that Banksy couldn't control, and I think Banksy wanted the Mr. Brainwash show to flop. I think he wanted to contrast Thierry's failure with his own success, and show people that hype alone can't sell art. Thierry's failure would lend validation to his fame and that of street art in general. But that's not what happened. As I see it, the despondency shown by Banksy and Shepard Fairey toward the end of the documentary is the most sincere part of the film.

I admire Banksy for including his failed experiment in the film, and I'm glad he didn't focus on any particular buyer of Thierry's art (except Madonna). At the same time, the documentary made me thankful that I work in technology. My line of work is 100% hype-free and that's the way I like it.


OpenCL Image Support

>> Monday, June 20, 2011

The GPUs that I use for testing all support OpenCL image objects, but not to the fullest extent of the specification. For example, I can't get linear interpolation to work and many of the image format types don't seem to be readable by the kernel.

My latest concern has been with OpenGL-OpenCL interoperability. I've had no trouble creating buffer objects with clCreateFromGLBuffer, but when I try to create image objects with clCreateFromGLTexture2D, I always get the CL_INVALID_IMAGE_FORMAT_DESCRIPTOR error. This happens no matter what image format I choose.

I spent a lot of time on this, but then I looked through the sample code in the AMD SDK. Instead of calling clCreateFromGLTexture2D, their application stores texture data using pixel buffer objects (PBOs). Very clever. PBO data can be shared with OpenCL buffer objects in the same way that VBO data can, and once the PBO is bound to the GL_PIXEL_UNPACK_BUFFER target, texture objects can read their image data from the PBO.

I'm glad there's a workaround for the clCreateFromGLTexture2D issue, but I'd be even happier if the function worked properly.


Alea Iacta Est

The final arrangements have been made and money has changed hands. I will be at the Supercomputing Conference 2011 (SC11) in November, and I'll bring my DynLab application for all to see. DynLab is a physics simulation tool that uses OpenCL for computing, OpenGL for rendering, and Qt to provide the overall application structure.

With luck, I'll also be able to distribute the first OpenCL in Action books. That will be very exciting, and I'll do everything I can to help Manning get everything ready by the deadline.



>> Friday, June 17, 2011

I've been following the emergence of WebGL with avid interest. Putting 3-D rendering in a browser sounds like a great idea and I hope this will draw more programmers over to OpenGL. But while I admire the technology, one question gnaws at me: where's the killer app? What can WebGL do for society that nothing else can?

OpenGL's primary uses are video games and CAD, but I can't picture either of those being successfully transitioned to the browser. And despite Google's enthusiastic support, their O3D project hasn't gone anywhere since I watched it demonstrated at Google IO 2009.

It doesn't help that Microsoft is dead set against WebGL. They have a good point - a WebGL shader can access the user's GPU directly, which means it can potentially lock the user's system. Someone could code a shader parser in JavaScript capable of validating a shader's safety. Hmm...

I've read comments saying that Microsoft's disinterest will drive users to browsers other than IE, but this assumes the existence of a WebGL application that will set the world on fire. What is that application?


The Bug from Hell

>> Wednesday, June 1, 2011

I just spent three hours riddling out why I was getting a segmentation fault every time I enqueued a kernel. The application uses OpenGL-OpenCL interoperability, so I assumed the problem involved the shared resources. But when I tested clEnqueueAcquireGLObjects and clEnqueueReleaseGLObjects, everything worked fine.

As it turned out, the problem had nothing to do with interoperability. I was setting the kernel argument incorrectly. Here's my original code:

clSetKernelArg(kernel, 0, sizeof(cl_mem), buffer);

Anyone familiar with OpenCL will know that I'm trying to make a buffer object into a kernel argument. But can you spot my terrible error? If not, here it is: the last argument should be a reference to the memory object, not the memory object itself. The function should be called as follows:
clSetKernelArg(kernel, 0, sizeof(cl_mem), &buffer);

That missing ampersand cost me three hours of coding. If the compiler had caught this, I could have fixed the problem in three seconds. But no, the last argument of clSetKernelArg can be set to anything, and the only way you'll know something's wrong is when the kernel execution raises a segmentation fault.


  © Blogger template Werd by Ourblogtemplates.com 2009

Back to TOP