在MTLComputePipelineState上,由什么决定maxTotalThreadsPerThreadgroup?

时间:2019-04-19 16:19:55

标签: ios macos shader metal metalkit

在iOS或MacOS上使用Metal Shaders / Compute Kernels时...

MTLComputePipelineState的限制为maxTotalThreadsPerThreadgroup

可以在创建管道状态后查询此限制。此限制取决于GPU硬件特性,操作系统版本和您的Metal内核代码。

  • Metal内核代码的哪些方面会影响MTLComputePipelineState的maxTotalThreadsPerThreadgroup?
  • 在固定的硬件/操作系统组合下,如何增加价值?

例如:

  • 注册使用情况?
  • 代码长度?
  • 强制内联吗?

(问题不是如何计算最佳大小,而是关于如何修改代码以实现最大的线程组。)

链接到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

0 个答案:

没有答案