Gpu Systems is a Swedish company with a managed platform for GPGPU. Here’s their conjugate gradient example. It looks a lot like PeakStream.
I’m not alone.
Parallel evolution – this is interesting. We both saw the same thing in the market.
Our design biases were somewhat different. Libra SDK chose syntactic elegance and foreign platform integration. Chai chose robust extensibility and multi-thread/device scheduling.
Libra SDK is modeled after commercial SDK products.
Chai is modeled after open source languages like Perl and Ruby.
Different visions from the same origins of:
- GPGPU research at Stanford under Hanrahan produces Brook
- Silicon Valley startup PeakStream is the next generation vision after Brook
- Google acquires PeakStream in 2007 and discontinues the products
- OpenCL appears as a vendor portable GPGPU language
So the vision was there five years ago. But the development costs were too high for the return on investment. To build a universal managed platform for GPGPU, you had to write your own shader compiler back-ends. That’s why PeakStream had been working for two years and was 35 people at the end.
Today, the technology stack is more mature. It’s a lot cheaper to do this.
This actually scares me a little. At the bleeding edge, technology is moving very quickly. Ideas I think of as science fiction are much more likely to appear just a few years from now.
One conclusion I’ve reached is that hand crafting a virtual machine and JIT compiler in C++ is crazy. That’s what I’ve done.
Writing complex systems in C++ is like building a house without power tools. The labor is enormous. This doesn’t mean the system shouldn’t be built on C++, just that it should not be written in C++.
I have a deeper appreciation for PyPy and why it is interesting. I think end users think of compatibility and performance. Virtual machine and compiler engineers look at development cost. Everyone has a different utility function. Something that is good but costs too much to make and maintain is not sustainable. That’s why writing a virtual machine and JIT in a managed language (not necessarily kind-of metacircular as with PyPy and RPython).
However, my first priority is useful tools. After the first release (soon, there will be something by the time I talk at PP12), I should re-factor the code. There are multiple .cpp files that are thousands of lines long. Now you see what I’m talking about. I know… this is bad. I agree. But it’s different when you are fighting to build something you have never seen before rather than maintaining legacy IT applications in the enterprise.