You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The code after old_fission_after (last line from your code) is this:
def math_avx2_scheduled(n: size, x: R[n] @ DRAM, y: R[n] @ DRAM):
for io in seq(0, n / 8):
xyy: R[8] @ AVX2
for ii in seq(0, 8):
xyy[ii] = x[8 * io + ii] * y[8 * io + ii] * y[8 * io + ii]
for ii in seq(0, 8):
x[8 * io + ii] = xyy[ii]
if n % 8 > 0:
for ii in seq(0, n % 8):
x[ii + n / 8 *
8] = x[ii + n / 8 * 8] * y[ii + n / 8 * 8] * y[ii + n / 8 * 8]
You can see that the buffer xyy: R[8] @AVX2 is written and read in for ii loops. You cannot read and write directly from AVX2 registers, so Exo's C codegen is complaining that you need to use AVX instructions if you want to read or write from AVX2 registers.
Therefore, if you continue scheduling this (and use replace to load and store from AVX2 registers), this error will go away. You can ignore this error until you're done with scheduling.
Activity
yamaguchi1024 commentedon Oct 31, 2022
Hi @ashriram,
Thanks for trying out Exo!
The code after
old_fission_after(last line from your code) is this:You can see that the buffer
xyy: R[8] @AVX2is written and read infor iiloops. You cannot read and write directly from AVX2 registers, so Exo's C codegen is complaining that you need to use AVX instructions if you want to read or write from AVX2 registers.Therefore, if you continue scheduling this (and use
replaceto load and store from AVX2 registers), this error will go away. You can ignore this error until you're done with scheduling.Let us know if anything is unclear!