我正在运行多个(4 或 5 个)计算着色器,它们处理相同的数据并提供不同的输出。然而,用户可以启用其中的一个、部分或全部。从性能考虑我有两个选择:
将所有这些计算着色器合并为一个,并一次计算所有内容。然后根据用户输入,有选择地显示数据。这需要单次传递,但计算着色器的参数数量可能会增加(最多 8 个 MTLBuffers),
将它们拆分为多个着色器并使用多个通道来计算每条数据。每遍使用不同的计算命令编码器。
从性能角度来看,数据已经驻留在 GPU 中的多次传递是否不好?从性能考虑推荐哪个选项?
我正在运行多个(4 或 5 个)计算着色器,它们处理相同的数据并提供不同的输出。然而,用户可以启用其中的一个、部分或全部。从性能考虑我有两个选择:
将所有这些计算着色器合并为一个,并一次计算所有内容。然后根据用户输入,有选择地显示数据。这需要单次传递,但计算着色器的参数数量可能会增加(最多 8 个 MTLBuffers),
将它们拆分为多个着色器并使用多个通道来计算每条数据。每遍使用不同的计算命令编码器。
从性能角度来看,数据已经驻留在 GPU 中的多次传递是否不好?从性能考虑推荐哪个选项?