As architectures evolve from one generation to the next and when new paradigms such as data flow emerge, there are lots of opportunities to not just develop new algorithms for these architectures but to co-design both architectures and algorithms to realize gains that are otherwise not possible.