Brook+ Limitations?

Discussion created by kitscse on Aug 6, 2008
Latest reply on Aug 6, 2008 by ryta1203
Regarding Brook+ Limitations


   I've been testing some sample applications to use Brook+ for the past few days and I ran into a few (undocumented?) problems.  I have only looked at the brookspec-v1.pdf,  so if there's a later version please let me know.

  1)  It seems that bitwise operations are not permitted inside kernels.  Essentially,  brook+ is  typecasting all integers to float (or __BrtFloat1) in the generated cpp.   Is this correct?.  I've looked at some documentation online that suggests that the stream processor itself (and the IL) support integers. 

Can I have proper integer (including bitwise operator) support if I use the low-level CAL instead (looking at IL documentation, I can see IOR, IXOR etc., listed, but I don't know if it actually works)?

  2) Also, local arrays don't seem to be supported.   I guess this is another restriction of Brook (and doesn't apply to CAL?)

  3) I sometimes get parse errors on apparently legitimate C code inside the kernels.  For instance

   unsigned int t = (unsigned int) 0xF1;

  gives me a long list of parse error messages starting with


NOTICE: Parse error
While processing <buffer>:61
In compiler at zzerror()[]
  message = syntax error


  (whereas removing the unsigned int typecast removes the problem).

Is there a way I can ask brook plus to point out on which source line the error occurs (as opposed to the location inside its own parser)?

  4)  Is there a publicly available roadmap etc., as to when the next version of Brook+ will be released?  Looking at the error msgs, documentation I imagine the current Brook+ implementation is Beta(ish) whereas the CAL is a bit more polished.  Has anyone who used CAL comment on how polished it is?