【问题标题】:Measure compute shader execution time in Unity在 Unity 中测量计算着色器执行时间
【发布时间】:2022-07-20 17:36:41
【问题描述】:

有没有办法在 Unity 中测量给定计算着色器的执行时间?

我想“人为地”在这个计算着色器中添加一个计算缓冲区并在上面创建一个"getData",因为我知道这个函数会阻塞 cpu,直到 gpu 计算结束。但是,作为一种方法,似乎有点粗糙……而且,在这种情况下,如何知道getdata会持续多久?

我尝试的另一个解决方案是使用GraphicsFence 并检查它的passed 属性何时设置为true,但我只能在每帧调用一次的协程中执行此操作,因此估计执行时间将始终大于一帧的持续时间...

【问题讨论】:

  • 你无法知道GetData 会有多长时间,但如果你的计算着色器足够长,那么从 GPU 中检索一个字节之类的东西所花费的时间可以忽略不计(你只需付出API 开销)
  • 我尝试使用 GetData 和一个 int,我的调度执行时间是 930 µs 使用这种方法,并使用 renderDoc 的分析器告诉我我的执行时间是 400 µs...您有什么想法来解释这种差异吗?

标签: unity3d gpgpu


【解决方案1】:

也许测量 Dispatch 和 AsyncGPUReadbackRequest.done 之间的时间会有所帮助

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 2015-03-26
  • 2021-10-31
  • 1970-01-01
  • 2018-11-28
  • 2021-01-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-24
相关资源
最近更新 更多