RyanRio wrote:

> ... I mean that, as a user, you _don't_ ever say "TENSOR"
> 
> The user never says "these are the kinds of instructions that go in this 
> stage" or has to pick from a menu
> 
> The user just puts different kinds of instructions in 
> differently-marked/differently-numbered stages and we figure it out.
> 
> Or at least that's an API I'd argue can be made to work and keeps the spirit 
> of asyncmark/asyncwait

I.e.

```
stream_x = create_async_stream()
stream_y = create_async_stream()

llvm.amdgcn.global.store.async.to.lds.b32(..., stream_x)
asyncmark(stream_x)

llvm.amdgcn.tensor.load.to.lds(..., stream_y)
async_mark(stream_y)

wait_asyncmark(stream_y)
...

```

I feel this is unnecessarily verbose or at minimum not an API the compiler 
should have to provide. All sane use-cases degrade to my proposed API. I.e. if 
you were to try to create two separate streams that both contained instructions 
from two of my stages, its nonsensical because to determine that either stream 
has completed you have to completely drain the counter.

https://github.com/llvm/llvm-project/pull/220442
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to