Back to ~ntuck
An optimizing front-end for OpenCL-compatible GPU programming
Bacon is a GPU programming language that compiles to OpenCL kernel code and automatically generates a wrapper that allows it that kernel to be called from C++ or from any language supported by SWIG via C++.
Bacon provides three key advantages over writing OpenCL C code directly:
Bacon assumes that user kernels will be run many times on input data of the same shape by generating specialized OpenCL code for specific input sizes at runtime. This makes sense for some applications (like image processing) but makes no sense for some other applications. This functionality will likely be made optional in future versions, but now that I've documented it that makes it a feature.
Currently Bacon is only known to work with the AMD APP SDK, which provides OpenCL support for both AMD Radon GPUs and any x86 or amd64 CPUs. Support for the Nvidia implementation is planned. Support for other implementations is not a priority.
git clone http://code.ferrus.net/compilers/bacon.git
A draft paper on Bacon is available.
I can be reached by email at ntuck☃cs.uml.edu.
If you get it working, let me know. If it's useful, let me know. If you have suggestions, let me know. If you have patches, then you're awesome.
If you actively want to help, the most useful thing would be writing new example kernels. More examples means more things to test compiler changes on to detect both improvements and regressions.