Latest Release:
2016.9.1 Release:

We are pleased to release the September edition of the Co-dfns compiler! This iteration focuses on improving polish and fixing up some annoying bugs with existing features or primitives that have been implemented. This means that certain primitives now work over wider ranges of inputs and are more reliable overall.

Long term, this iteration continues a push to transition to the new code generation facilities. All of the monadic primitives that have been implemented use this new generator and now more dyadic primitives use it. We are also beginning the migration of operators to this new generation framework. This framework is designed to look forward for handling things like nested parallel computation and nested parallel Each invocations such as those seen in Blackscholes. As we complete this migration it will mean significantly more reliable and high performance from functions that make use of nested internal dfns.

At this stage it means that we are generating more efficient code for primitives, particularly in cases where they might be used as part of a derived function such as those from operators like Each. We have further improved the code generation for select primitives to avoid multiple kernel invocation overhead on the GPU.

These changes lay the groundwork for integrating shape inference into the compiler, which will enable even better code generation, especially in more complex benchmarks and user code.

What's New

  • Commute is now working over all data types
  • Monadic and Dyadic commute are now both using the improved code generators
  • Improved scalar generators, enabling better, more precise code generation now and in the future
  • The compiler is now smarter about Each (¨) and uses better code generation
  • Each (¨) now supports bitvectors
  • Drop () now works for a wider range of inputs and all data types
  • Monadic mixed verbs now support the new scalar generator system, allowing efficient code generation cases where the compiler knows that the input to a mixed verb will be a scalar
  • Bug fixes for catenate first, rotate first, and reverse first
  • Catenate and Rotate verbs now utilize a single kernel GPU execution instead of requiring multiple kernels
  • Bug fixes for Table on bitvectors
  • Fixes for index generation
  • Index generation operates on wider ranges of inputs now
  • Handling of constant functions is now working under the new generators

Support Co-dfns Research and Development through Open Work

If you would like to support Co-dfns and its future, please consider a small supporting subscription through Gratipay. It greatly helps keep Co-dfns open and research friendly, as well as making it possible to keep the development process open. If enough funds come in through this avenue, it will enable additional resources to make the Co-dfns development cycle that much more effective.