在iOS或MacOS上使用Metal Shaders / Compute Kernels时...
MTLComputePipelineState
的限制为maxTotalThreadsPerThreadgroup
。
可以在创建管道状态后查询此限制。此限制取决于GPU硬件特性,操作系统版本和您的Metal内核代码。
例如:
(问题不是如何计算最佳大小,而是关于如何修改代码以实现最大的线程组。)
链接到MTLComputePipelineState
的Apple文档:
https://developer.apple.com/documentation/metal/mtlcomputepipelinestate/1414927-maxtotalthreadsperthreadgroup
链接到Apple的“计算线程组和网格大小”文档: https://developer.apple.com/documentation/metal/calculating_threadgroup_and_grid_sizes?language=objc