This project focuses on parallelizing a path tracing workflow using the c-ray library and MPI. We implemented two parallelization methods: tiling and sampling. The development process involved local testing with Docker containers for rapid iterative development and deployment on Google Cloud Platform Compute Engine using Terraform for automation. The study explores the performance of various configurations in distributed rendering, providing insights into the scalability of path tracing across multiple nodes.
Our project parallelizes a path tracing workflow, an advanced rendering technique used in computer graphics to create highly realistic images. We used the open-source C library c-ray for our implementation.
We used the c-ray library, fixed at commit 84109d4.
- Makefile for compilation
- GNU Debugger (GDB) for troubleshooting
- Docker-based local cluster for testing
- Tiling Mode
- Sampling Mode
We transitioned to Google Cloud Platform (GCP) using Compute Engine, testing various cluster configurations:
- Fat Cluster
- Light Cluster
- Intra-Regional vs. Inter-Regional Clusters
We used Terraform for automated deployment on GCP.
Node type | Tiling (s) | Sampling (s) | Speedup tiling | Speedup sampling |
---|---|---|---|---|
e2-highcpu-4 | 17.921311 | 14.835419 | 3.90x | 4.73x |
e2-highcpu-8 | 17.867890 | 14.862826 | 3.93x | 4.72x |
c4-highcpu-4 | 14.147418 | 8.455381 | 2.33x | 3.90x |
c2-standard-4 | 22.916034 | 12.791110 | 2.19x | 3.93x |
We analyzed the cost-effectiveness of different VM configurations on GCP for rendering tasks.
- Fat clusters demonstrated better speedup ratios compared to light clusters.
- Inter-regional clusters experienced performance degradation due to increased network latency.
- Light clusters offer a cost-effective alternative for less intensive tasks.
- Fat clusters are preferred for high-quality final renders.
For more detailed information, please refer to the full report.