It’s past feature freeze. So I should be focused on bug fixing. This is just too sexy and easy to defer.
I added language extension support to the virtual machine and JIT. New functions may be added anytime after virtual machine initialization. This really was not that difficult. It just needed a few hooks to extend dispatch tables and pass around memory management and execution trace context.
There really is a need for this. New math kernels should not require modifying the core platform code, especially the increasingly complicated JIT middle-end. It’s starting to become rather complicated in there. For the system to scale, the core platform should be distinct from libraries.
The other thing I did was remove all potentially trademark infringing references to PeakStream from the source code. I shouldn’t imply any relationship where none exists. Don’t be rude.
When I started this project, I took the concept of PeakStream as inspiration. I searched for a copy. Fortunately, Google did a thorough job of discontinuing the product line after acquiring the company. I couldn’t find any source code file (I really wanted peakstream.h), let alone the beta download. Nothing. All I found were marketing materials and a few research papers surveying GPGPU products.
So the PeakStream DSL was my best guess at a language grammar from reading a handful of whitepapers archived on the Internet Archive Wayback Machine. Later, the picture became clearer to me. I tend to believe in convergent technical evolution – given the same problem, different groups, working independently, will often arrive at similar solutions.
However, the technology landscape today is different from five years ago when PeakStream was still in business. I have also made some very different design choices. PeakStream had to build a lot more (OpenCL did not exist yet) and address a (relatively speaking) mass market of scientific and engineering users to provide speculative private equity value to venture capital funds.
PeakStream was trying to build a more general purpose platform. They also had more resources than I do. At the end, the company was 35 people. As one guy, I’ve had to adopt a narrower vision and focus on what provides the maximum return on my investment of time.
So what I’ve built, while it started out as the same idea as PeakStream, has certainly diverged from it as the vision has changed and become clearly focused. The project has acquired an identity and life of it’s own.