Proposta de Pipelines Lineares de Alto Nível em Rust Utilizando GPU
Resumo
Unidades de Processamento Gráfico (GPUs) são unidades de hardware projetadas para processar quantidades massivas de dados em paralelo. Rust é uma nova linguagem de programação de baixo nível com foco em desempenho e segurança. Até o momento, há poucos trabalhos acadêmicos sobre abstrações de alto nível para GPUs em Rust. Propomos uma possível abstração, baseada no padrão de pipeline e implementada utilizando macros procedurais.
Referências
Du Bois, A. R. and Cavalheiro, G. (2023). Gpotion: An embedded dsl for gpu programming in elixir. In Proceedings of the XXVII Brazilian Symposium on Programming Languages, SBLP ’23, New York, NY, USA. Association for Computing Machinery.
Faé, L. G., Hoffman, R. B., and Griebler, D. (2023). Source-to-source code transformation on rust for high-level stream parallelism. In Proceedings of the XXVII Brazilian Symposium on Programming Languages, SBLP ’23, page 41–49, New York, NY, USA. Association for Computing Machinery.
Khronos (2023). The OpenCL Specification.
Kondratyuk, N., Nikolskiy, V., Pavlov, D., and Stegailov, V. (2021). Gpu-accelerated molecular dynamics: State-of-art software performance and porting from nvidia cuda to amd hip. The International Journal of High Performance Computing Applications, 35(4):312–324.
Mattson, T., Sanders, B., and Massingill, B. (2004). Patterns for Parallel Programming. Addison-Wesley Professional, first edition.
NVIDIA (2023). CUDA C++ Programming Guide. NVIDIA.
The Rust Project (2023). The Rust Reference.