如何优化代码在gpu上运行比cpu快

写完软渲染器发现在cpu上运行50多帧,在gpu上反而是40帧左右的样子,gpu使用的老苹果本上metal,不清楚是什么原因,有大佬知道如何优化代码,或者有什么办法能查到gpu上运行慢吗?

是不是根据三角形并行的?那样的话当三角形数量很少每个三角形又很大时gpu的并行就体现不出来,从而比cpu慢
可以先根据三角形并行rasterize到一个粗糙的8x8网格上,然后再根据每个粗网格内部根据三角形公式计算是否覆盖,最后再根据每个像素并行进行着色,从而着色的计算能够真正并行起来
在移动端gpu的光栅化过程中也有tiled-rendering的方式,即把屏幕预先分成很多小块,分别进行三角形的clip和渲染
可以参考我的软光栅渲染器:https://github.com/taichi-dev/taichi_three

有片元级别的并行化,是将三角形光栅成片元然后收集到数组里,再用tachi的for循环自动并行的,只是不太清楚写出来会比较慢

可以试试GGUI?

1 个赞