As I perceive threadExecutionWidth
in Steel (aka warp, aka wavefront in different frameworks) is inherently a property of a GPU structure.
There’re many properties that rely solely on the GPU structure like maxThreadsPerThreadgroup
or maxBufferLength
and Steel (as anticipated) makes them to be properties of MTLDevice
object. Why then threadExecutionWidth
is a property of MTLComputePipelineState
? Does it imply that we are able to in some way make two MTLComputePipelineState
with completely different threadExecutionWidth
‘s or my understanding of threadExecutionWidth
being a attribute of the GPU itself is flawed?