open source

The Cost of Open CL

One of my workmate had experiences on Open CL. We had a discussion on the improvement of histogram. And I learned that we should calculate the cost of Open CL before applying Open CL to a topic. The cost of Open CL is the time that we prepared everything for running Open CL. If the cost is larger than sequence code, we would never get any improvement with Open CL. But in most of cases, we will introduce a lot of calculation to Open CL. So, I wrote a program to measure the cost.

The program is pretty simple. We only measure the followings:

Open CL Histogram - Improvement Attempt

As we known, it is faster to use local memory or private memory in Open CL. To compare them, I had made a test on it. Before doing that, we may find the time elapsed of each part:

  • Open CL usage: about 0.9s (look fair)
  • Merging semiResult to finalResult: 18s (too bad)

It is very clear that the bottleneck is merging semiResult to finalResult.

If we use Python Image Library's histogram function, the elapsed time only took: 1.5s with the same picture, images/7728x4354.jpg.


mozart logo

The Mozart project is one of John Hu joined projects. This is a conductor game for node.js Knockout 2013. It is the second place of node.js knockout 2013 in Taiwan and the second place of Innovation of the woldwide competition. We build this game with node.js, Web Socket, Web Audio, and Device Motion. All of them are web technology.