As stated, the current path tracer impl is very simple:
- Tiling the image and make grid_size the number of tiles.
- Completely depends on the scheduling of blocks.
I did this for simplicity, but this is not a good impl since block scheduling introduces overhead.
The persistent kernels might offer a better solution, since with good scheduler, we can deal with cases with extremely un-balanced workloads. Also, it will be a good infra for extending to warp specialization (instead of the current megakernel, which tries doing all the things in one warp).
This task is scheduled for 9.30-10.8 (currently).
As stated, the current path tracer impl is very simple:
I did this for simplicity, but this is not a good impl since block scheduling introduces overhead.
The persistent kernels might offer a better solution, since with good scheduler, we can deal with cases with extremely un-balanced workloads. Also, it will be a good infra for extending to warp specialization (instead of the current megakernel, which tries doing all the things in one warp).
This task is scheduled for 9.30-10.8 (currently).