SmallPT is a global illumination renderer uses path tracing. Inspired by Kevin Beason's smallpt: Global Illumination in 99 lines of C++. In this benchmark, we compare the performance of Taichi with a CUDA implementation. The measured CUDA implementation is based on an open-source implementation named smallptCuda. The Taichi version is from one of our Taichi developers' implementation path tracing. The two implementations are functional equivalent.
We conduct performance evaluation on the following device.
Device | Nvidia RTX 3080 (10GB) |
---|---|
FP32 performance | 29700 GFLOPS |
Memory bandwidth | 760 GB/s |
L2 cache capacity | 5 MB |
Driver version | 470.57.02 |
CUDA version | 11.4 |
The experiments are executed with the following parameters: Image size 1024 by 768, sample on unit sphere surface, max depth (bounce) is 10. The performance is measured in frames per second (fps), with different samples per pixel configured.
- Pre-requisites
python3 -m pip install --upgrade taichi
python3 -m pip install matplotlib
If you want to compare with CUDA, make sure you have nvcc
properly installed.
- Run the benchmark and draw the plots
python3 plot_benchmark.py