Sod Bitcoin - solving graph problems is the new GPU-flogger

Who needs x86 cores when this silicon'll crack it 100x faster?

These GTC conferences, the annual GPU-fest sponsored by NVIDIA, are my favorite events of the year. Why? It’s how the event is organized. At GTC, real-world researchers, analysts, and other customers present the vast majority of sessions, not corporate mouthpieces.

They talk about their projects, the challenges they’ve dealt with, lessons learned, plus their actual research discoveries. Of course, they also talk about how GPUs helped them out along the way, but that’s what you get at a conference focusing on GPU technology.

Case in point was my first session on Monday. Titled “Speeding Up GraphLab Using CUDA”, it featured Vishal Vaidyanathan from Royal Caliber discussing the wide world of graph problems and the massive computational challenge these problems present.

Graph problems are everywhere. One of the most familiar is the typical routing problem: for example, figuring out the shortest route between a set of cities. In graph problem lingo, the cities would be called vertices and the line between two of them an edge.

The more vertices you have, the more computationally complex the graph problem. They’re also very difficult to parallelize. Partitioning a graph problem onto different systems, for example, doesn’t help very much.

Using our city example, you’d place some cities on System A and the others on System B. However, these two groups are intimately connected and testing for an optimal route would require many hops between “A” and “B”, meaning that the processors end up spending much of their time coordinating their tests rather than computing optimal routes.

GraphLab was a huge step forward in aiding the parallelization of graph problems. Royal Caliber, with the help of others, have added a GPU API onto GraphLab and are presenting it as VertexAPI2. And the results are, well, pretty GPU’riffic.

The Y axis is the speed up attained by VertexAPI2 on Tesla K40C vs. GraphLab running on a single core, then quad-core i3770 Xeon processor. Not surprisingly, the GPUs outperform the single core CPU by 50 – 220x and the quad-core by 15-100x.

In the session, Vishal discusses the three overriding goals for VertexAPI2. The first is making it easy to code, and the second is to hide all of the GPU-specific details. In other words, make Vertex as easy to use as GraphLab running on native x86 cores. The third goal is to have it perform like a scorched weasel (i.e. fast).

Vishal also goes into the details about the API, how it works, how to use it, and compares their approach to other graph problem algorithms like BFS (Best First Solution) and others. NVIDIA already has this session online, so you can watch it from your desk right now. ®