
On 9/18/2012 10:45 AM, Andrey Semashev wrote:
On Tuesday 18 September 2012 13:58:24 Felipe Magno de Almeida wrote:
Could it use boost.phoenix v3? IUC, Phoenix v3 creates a boost.proto expression. The library could make transformations to these expressions.
Yes, phoenix was designed to make this sort of application possible.
Phoenix actors do contain Proto expressions. But as I understand, actors and the additional components Phoenix implements to evaluate expressions in a functional manner are useless in context of Boost.Compute.
True, you would need a different back-end.
IIUC, the constructed expressions are not invoked but translated into strings (the C99 source code). Using Proto directly seems more appropriate.
Just because you need a different back-end doesn't mean the phoenix front-end is worthless. Phoenix has defined a schema that maps C++ statements onto C++ expressions and provides the components to build these expressions for you. To ignore that and rebuild it from scratch seems like a waste to me. Besides, having a way to take a single phoenix expression and evaluate it in different ways -- on a CPU with the built-in Phoenix evaluators, or on a GPU with alternate ones -- sounds bloody cool, and very useful. -- Eric Niebler BoostPro Computing http://www.boostpro.com