Vector to ArmSME

@c-rhodes @banach-space First, thanks again for the great discussion from the ODM. There’s a few questions we have as follow-up to the discussion.

Your example has been very helpful, but we notice that the last mile (vector->SME) is still missing. We have been wondering if there is a timeline for supporting various vector ops on your end (e.g. vector.outerproduct)? We can also help out with some of the implementation if necessary.

Thanks in advance.
– Frank

1 Like

Hi Frank,

Thanks for contributing, it was a great to exchange the ideas!

Indeed. It’s something that we are prioritising at the moment. First, we wanted to make sure that there’s a framework in place for integration tests:

and that these integration tests are regularly verified via post-commit testing:

This way we can be confident that whatever we do leads to valid, executable code (e.g. that the integration with the LLVM backend is correct).

Next step is good support for loading to/storing form ZA. We are prototyping one idea and intend to share a patch (and probably an RFC) this month. Your feedback would be greatly appreciated!

I doubt vector.outerproduct is going to be particularly tricky once we have a good solution for storing to/loading from ZA. Perhaps I am missing something? We would like to resolve the former this month. That should open the path for vector.outerproduct in August/September. But please be mindful that these are best efforts estimates. While this is very high priority for our team, we should also be mindful that these are unchartered waters and that we may need to correct our course based on the future community feedback.

All in all, based on the progress and feedback so far, I am very positive. If that helps, I can summarise the progress on monthly basis.

Thanks for the offer, that’s much appreciated! ATM it’s a bit tricky to identify items of work that can be done in parallel. This should improve over time and we will be reaching out whenever a task like this emerges.

Kind regards,
-Andrzej

2 Likes

I am really looking forward how you are going to model ZA with loads and stores.

For reference, Flang defined a VTable. It is kind of a unique storage per module. You can probably do loads and maybe stores on it.

To that end:
https://discourse.llvm.org/t/an-update-on-armsme-dialect-and-proposed-next-steps/

-Andrzej

Quick update:

Also, @frank_gao , what’s your username on GitHub?

-Andrzej

It’s now gaofangfrank