Over the past few years, I’ve been toying with the idea of running database operations efficiently on GPUs. Rather than trying to implement something like SQL, I decided to implement Relational Algebra (RA), http://en.wikipedia.org/wiki/Relational_algebra , which I consider to be equally expressive and slightly more general in the sense that several database languages including SQL can be mostly or completely represented using RA.
I’m currently at the point where I have implementations that can beat sequential CPU versions[sup]1[/sup] by at least an order of magnitude for all RA operators, and I’m wondering whether there would be interest in a publication on this topic.
None of the algorithms are fundamentally new, the individual operators usually consist of several compound algorithms that are applied at different granularities where they are the most efficient from either an algorithmic perspective or a hardware perspective.
I’m asking because I am dividing my time between this, writing my thesis, and writing another paper on a runtime system. If there isn’t a lot of interest on this topic, I will probably push off writing it down for 6 months or a year. So please let me know if having a reference implementation and a description of the GPU-friendly algorithms used to implement RA operators would help you out in the short term (next 1-2 years). If I get enough responses, I’ll try to get this out by the end of the summer.
Footnote 1. I don’t compare against multi-core because efficient use of any parallel system would require parallel/vector implementations of these operations, which would probably follow the same form as my solutions. Furthermore data dependencies among elements in a vector would make SSE/AVX implementations a nightmare.
EDIT: spelling mistakes.