I was working on https://github.com/Xilinx/mlir-air/pull/642 (which is not ready to merge) and I started to see some behavior I didn't understand. So I tried to make a minimal example and I likewise have some unexpected behavior.
The example I came up with uses somewhat ridiculous things like tiny 1x1 data tiles to make it really obvious to me what was going on in the output. I found that my example fails for a 32x16 image and even an 8x8 image, but it is successful for a 4x4 image.
My example is here. It's not supposed to pass the python test harness, I've just been looking at the output to see what it's doing.
As usual, you can run with:
make clean && make
When it fails, it seems like no output is received (the output stays the original value of 0xFFFFFFFFs in the test harness). When it succeeds, each value in the output image is increasing by 2, e.g. for the 4x4 image,
Because it only works for small images, I'm guessing I'm running into a limit on the number of channel operations/copies allowed at some point, but I have not yet confirmed this theory.
In submitting this issue I'm hoping to discover:
Is this expected behavior when using many ChannelGet/ChannelPut ops? If so, what is the limit (and is there a way to catch it before a programmer runs into trouble?)
I was working on https://github.com/Xilinx/mlir-air/pull/642 (which is not ready to merge) and I started to see some behavior I didn't understand. So I tried to make a minimal example and I likewise have some unexpected behavior.
The example I came up with uses somewhat ridiculous things like tiny 1x1 data tiles to make it really obvious to me what was going on in the output. I found that my example fails for a 32x16 image and even an 8x8 image, but it is successful for a 4x4 image.
My example is here. It's not supposed to pass the python test harness, I've just been looking at the output to see what it's doing.
As usual, you can run with:
When it fails, it seems like no output is received (the output stays the original value of
0xFFFFFFFF
s in the test harness). When it succeeds, each value in the output image is increasing by 2, e.g. for the 4x4 image,Because it only works for small images, I'm guessing I'm running into a limit on the number of channel operations/copies allowed at some point, but I have not yet confirmed this theory.
In submitting this issue I'm hoping to discover:
ChannelGet
/ChannelPut
ops? If so, what is the limit (and is there a way to catch it before a programmer runs into trouble?)