Um Sistema Heterogêneo Embarcado para Aceleração de Interseção Raio-Triângulo
Resumo
A renderização de imagens é uma importante área da computação gráfica, sendo aplicável a diversas áreas como jogos, visualização arquitetônica, cinema, entre outras. Atualmente a renderização de imagens realistas é um dos principais desafios, especialmente para aplicações em tempo real, sendo a maior dificuldade balancear entre realismo e desempenho computacional. O método de Ray-Tracing tem sido um dos principais algoritmos utilizados para a geração de imagens realistas por sua naturalidade ao modelar fenômenos ópticos com precisão, porém sua desvantagem é o seu alto custo computacional. Diversos algoritmos e plataformas de hardware têm sido utilizados até o momento para melhorar o desempenho deste algoritmo, porém soluções com arquiteturas baseadas em Many-core ou GPUs possuem um alto consumo energético apesar do desempenho obtido. Assim, o objetivo deste trabalho é propor um sistema heterogêneo CPU-FPGA em uma placa embarcada de baixo custo energético, e analisar seu ganho de desempenho, escalabilidade e balanceamento de carga entre recursos computacionais renderizando diferentes tamanhos de imagens.
Referências
Deng, Y., Ni, Y., Li, Z., Mu, S., and Zhang, W. (2017). Toward real-time ray tracing: A survey on hardware acceleration and microarchitecture techniques. ACM Computing Surveys (CSUR), 50(4):58.
Digilent (2017). PYNQ-Z1 Board Reference Manual. Digilent Inc.
Hurley, J. (2005). Ray tracing goes mainstream. Intel Technology Journal, 9(2).
Jakob, W. (2016). pybind11 — seamless operability between c++11 and python. https://github.com/pybind/pybind11. Online, Acessado: 10-08-2019.
Malcheva, R. and Yunis, M. (2014). An acceleration of fpga-based ray tracer. European Scientific Journal, ESJ, 10(7).
Möller, T. and Trumbore, B. (2005). Fast, minimum storage ray/triangle intersection. In ACM SIGGRAPH 2005 Courses, page 7. ACM.
Nery, A. S., Nedjah, N., and França, F. M. G. (2010). A parallel architecture for raytracing. In 2010 First IEEE Latin American Symposium on Circuits and Systems (LASCAS), pages 77–80.
Park, W. C., ho Nah, J., Park, J. S., Lee, K.-H., Kim, D.-S., Kim, S.-D., Park, J. H., Kim, C.-G., Kang, Y.-S., Yang, S.-B., and Han, T.-D. (2008). An fpga implementation of whitted-style ray tracing accelerator. In 2008 IEEE Symposium on Interactive Ray Tracing, pages 187–187.
Sampaio, A. (2019). Heterogeneous ray-tracing pynq. https://github.com/adrianno3259/heterogeneous-raytracing-pynq. Online, Acessado: 22-09-2019.
Schmittler, J., Woop, S., Wagner, D., Paul, W. J., and Slusallek, P. (2004). Realtime ray tracing of dynamic scenes on an fpga chip. In Proceedings of the ACM SIGGRAPH/EUROGRAPHICS Conference on Graphics Hardware, HWWS ’04, pages 95–106, New York, NY, USA. ACM.
Todman, T. and Luk, W. (2001). Reconfigurable designs for ray tracing. In null, pages 300–301. IEEE.
Whitted, T. (1980). An improved illumination model for shaded display. Commun. ACM, 23(6):343–349.
Woop, S., Schmittler, J., and Slusallek, P. (2005). Rpu: a programmable ray processing unit for realtime ray tracing. In ACM Transactions on Graphics (TOG), volume 24, pages 434–444. ACM.
Xilinx. Pynq - python productivity for zynq. https://github.com/Xilinx/PYNQ. Online, Acessado: 10-08-2019.
Xilinx (2017). Vivado Design Suite User Guide: High Level Syntesis. Xilinx.