Note that it creates 2 streams s1 and s2. Also note that, the result of test is allocated from s1, which is already destroyed at the end of test. And we are using s2 to free the memory of the result.
This happens to work in L0 and Sycl runtime, but I guess it is not actually legal in them to create memory in one stream and free it in another. This will cause an error in opencl runtime, BTW.
See opt result of
test/Integration/Dialect/XeGPU/vector_insert_1.mlir
.when
main()
callstest()
and both functions access GPU shared memory, IMEX will geenerate code likeNote that it creates 2 streams
s1
ands2
. Also note that, the result oftest
is allocated froms1
, which is already destroyed at the end oftest
. And we are usings2
to free the memory of the result.This happens to work in L0 and Sycl runtime, but I guess it is not actually legal in them to create memory in one stream and free it in another. This will cause an error in opencl runtime, BTW.