-
Notifications
You must be signed in to change notification settings - Fork 26
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Ast opencl fixes #771
Ast opencl fixes #771
Conversation
Unfold forall, small bugfix & refactor naming conventions Added to passes
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It's taking me a bit longer than expected to review everything, so here is a partial review so it doesn't come late in one batch :)
I fixed the changes you suggested. Only 2 things remain open, see above. Also added barriers with memory fences |
Mainly added support for rewriting nested foralls, which are automatically generated by GPU kernels and par blocks.
This is done in the pass SimplifyNestedQuantifiers.scala.
This pass relies on ExpressionEqualityCheck.scala, to compare expressions on equality, whilst getting information like
require blockSize == 32
from annotations.There are some changes in how a GPU kernel is encoded (LangCToCol.scala) and how par blocks are encoded (ParBlockEncoder.scala), to make sure that par blocks and GPU kernels require to have at least one thread running (therefor, we don't have to account for "void" runs of GPU kernels). Which was needed to gather information, which is needed in the expressions equality check, which was used in the simplified nested foralls.
Missing are some examples and unit tests still.
Also a lot of other minor changes are present: