Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
mlir/include/mlir/ExecutionEngine/CRunnerUtils.h | ||
---|---|---|
81 | Missing doc comment (for the field above as well btw). All fields should be documented. On another note, the doc comment on Vector1D should have been triple ///. | |
214 | If Rank is 0, offset will become -1. Is this intended? A comment is missing at least here and above where you have int dim = Rank - 1. Otherwise, you need a static_assert on Rank not being zero. The offset field is also missing a doc comment. | |
236–238 | Missing doc comments however obvious it may appear now. | |
mlir/include/mlir/ExecutionEngine/MemRefUtils.h | ||
10 | Nit: Missing period at the end. | |
41–44 | Triple /// comments please. | |
47 | Assert message please. | |
51 | negatice -> negative | |
58 | Triple /// here and everywhere below. | |
143 | -> for ranked strided memrefs. | |
207 | Missing doc comment. | |
214 | Missing new line at end. | |
mlir/unittests/ExecutionEngine/Invoke.cpp | ||
110 | auto -> float | |
117–122 | Test rank = 0 case as well? It may exercise corner cases. |
Can you please add a commit summary as well - "manipulate ranked strided memref" doesn't capture all of this support accurately.
mlir/include/mlir/ExecutionEngine/CRunnerUtils.h | ||
---|---|---|
136 | Would it make sense to accept any range rather than just an initializer list? | |
137 | Nit: please add an assertion message | |
mlir/include/mlir/ExecutionEngine/MemRefUtils.h | ||
80 | Nit: "mallocs" sounds like there is heap allocation happening, but it is not the case here. | |
103 | The other functions return the descriptor by-value rather than by-pointer. I suppose this template is not instantiated, otherwise it should have triggered an error. | |
110 | s/allow/allows one/ | |
113 | I would suggest casting the result back to pair<T *, T *> before returning. This will also let makeStridedMemRefDescriptor functions take T * rather than void * for better type checking. Furthermore, if the template arguments in makeStridedMemRefDescriptor are swapped to template <int N, typename T>, I expect type deduction to kick in for element types. |
mlir/include/mlir/ExecutionEngine/CRunnerUtils.h | ||
---|---|---|
81 | Yes, but note that I'm just doing a mechanical namespace change here. This whole file is a bit messy in my opinion, I'd like to revamp the whole directory in the near future actually. | |
136 | As a template? template<typename Range> T &operator[](Range indices) { ... |
Thanks for the review!
I added a bunch of more test to increase the coverage: rank-0, rank-1, and a test with a callback to a C++ native function.
PTAL!
mlir/include/mlir/ExecutionEngine/CRunnerUtils.h | ||
---|---|---|
214 | Added a specialization for rank 0, and tests for rank0 and rank1 |
A few more minor comments. Please also address the commit summary comment above. This functionality is looking great to me. Please do go with Alex's deeper review comments.
mlir/include/mlir/ExecutionEngine/CRunnerUtils.h | ||
---|---|---|
81 | I see - missed that. Would be great to have a subsequent NFC patch. | |
195 | indices.empty() please. | |
196 | no -> number | |
mlir/unittests/ExecutionEngine/Invoke.cpp | ||
248 | Micro-nit: drop reference to elt - isn't it more overhead FWIW? |
mlir/include/mlir/ExecutionEngine/MemRefUtils.h | ||
---|---|---|
2 | I am assuming you are also refactoring usage in iree/experimental/ModelBuilder, in a separate revision? |
mlir/include/mlir/ExecutionEngine/CRunnerUtils.h | ||
---|---|---|
136 | Cool, thanks! |
mlir/include/mlir/ExecutionEngine/CRunnerUtils.h | ||
---|---|---|
196 | used "empty" |
mlir/include/mlir/ExecutionEngine/CRunnerUtils.h | ||
---|---|---|
195 | It does not work with initializer_list actually :( |
mlir/include/mlir/ExecutionEngine/CRunnerUtils.h | ||
---|---|---|
195 | Oh, didn't realize that. Never mind. |
mlir/include/mlir/ExecutionEngine/MemRefUtils.h | ||
---|---|---|
2 | I mean that this file (https://github.com/google/iree/blob/main/experimental/ModelBuilder/MemRefUtils.h) should disappear and its uses updated now that you have moved and improved the functionality in core. Please make sure we have only 1 source of truth for all this (yours). |
mlir/include/mlir/ExecutionEngine/MemRefUtils.h | ||
---|---|---|
2 | I'm a bit confused about how you're bringing downstream project management into MLIR core review here? |
mlir/include/mlir/ExecutionEngine/MemRefUtils.h | ||
---|---|---|
2 | When code gets moved around I feel it's only natural to gently ask for an update of the former source of truth. |
mlir/include/mlir/ExecutionEngine/MemRefUtils.h | ||
---|---|---|
194 | @mehdi_amini incorrect argument order for memset memset(&other.descriptor, 0, sizeof(other.descriptor)); Reported here https://pvs-studio.com/en/blog/posts/cpp/1003/ (N10) |
Missing doc comment (for the field above as well btw). All fields should be documented. On another note, the doc comment on Vector1D should have been triple ///.