Teaching Software Pipelining and Scheduling on GPUs with Python in Google Colab

Authors

  • Ricardo Ferreira UFV
  • José Augusto M. Nacif UFV

DOI:

https://doi.org/10.5753/ijcae.2023.4825

Keywords:

Google Colab, Software Pipelining, Scheduling, GPU

Abstract

The teaching of static and dynamic instruction scheduling in pipelined processors is widely documented in textbooks. However, there is little information available on more advanced scheduling techniques, such as Software Pipelining, and more recent topics, such as Warp scheduling in GPUs. This paper presents a teaching experience that uses Google Colab and Python to generate examples and documentation on teaching Software Pipelining and scheduling in GPUs. The work was developed in collaboration with students of the Computer Architecture course at UFV, including problem-solving and the creation of visualization tools as outcomes.

Downloads

Download data is not yet available.

References

FA Alves, Danilo Almeida, Lucas Bragança, André BM Gomes, Ricardo S Ferreira, and José Augusto M Nacif. Ensinando arquiteturas vetoriais utilizando um simulador de instruções mips. International Journal of Computer Architecture Education (IJCAE), 4(1):9–12, 2015.

Yehia Arafa, Abdel-Hameed A Badawy, Gopinath Chennupati, Nandakishore Santhi, and Stephan Eidenbenz. Low overhead instruction latency characterization for nvidia gpgpus. In 2019 IEEE High Performance Extreme Computing Conference (HPEC), pages 1–8. IEEE, 2019.

Hector Perez Baranda, Jeronimo Costa Penha, and Ricardo Ferreira. Implementação de um preditor de desvio no mips 5 estágios. International Journal of Computer Architecture Education, 6, 2018.

Ekaba Bisong and Ekaba Bisong. Google colaboratory. Building machine learning and deep learning models on google cloud platform: a comprehensive guide for beginners, pages 59–64, 2019.

Michael Canesche, Lucas Bragança, Omar Paranaiba Vilela Neto, Jose A Nacif, and Ricardo Ferreira. Google colab cad4u: Hands-on cloud laboratories for digital design. In 2021 IEEE International Symposium on Circuits and Systems (ISCAS), pages 1–5. IEEE, 2021.

John Ellson, Emden Gansner, Lefteris Koutsofios, Stephen C North, and Gordon Woodhull. Graphviz—open source graph drawing tools. In Graph Drawing: 9th International Symposium, GD 2001 Vienna, Austria, September 23–26, 2001 Revised Papers 9, pages 483–484. Springer, 2002.

Ricardo Ferreira, Michael Canesche, and Jerônimo Penha. Google colab para ensino de computação. In Anais Estendidos do III Simpósio Brasileiro de Educação em Computação, pages 46–47. SBC, 2023.

Ricardo Ferreira, Salles Viana Gomes de Magalhães, and José AM Nacif. Métricas e números: Desmistificando a programação de alto desempenho em gpu. Minicursos do WSCAD, Sociedade Brasileira de Computação, DOI: 10.5753/sbc.46486.1, 2019.

Ricardo Ferreira and Geraldo Fontes. Ensino de organizaçoes de memória em arquiteturas paralelas usando placas gráficas aceleradoras. International Journal of Computer Architecture Education (IJCAE), 2, 2013.

Ricardo Ferreira, Jose Nacif, Salles Magalhaes, Thales de Almeida, and Racyus Pacifico. Be a simulator developer and go beyond in computing engineering. In 2015 IEEE Frontiers in Education Conference (FIE), pages 1–8. IEEE, 2015.

Joseph A Fisher, Paolo Faraboschi, and Cliff Young. Embedded computing: a VLIW approach to architecture, compilers and tools. Elsevier, 2005.

Roberto Giorgi and Gianfranco Mariotti. Webrisc-v: A web-based education-oriented risc-v pipeline simulation environment. In Proceedings of the workshop on computer architecture education, pages 1–6, 2019.

John Gruber. Markdown: Syntax. URL [link]. Retrieved on June, 24:640, 2012.

Zhe Jia, Marco Maggioni, Jeffrey Smith, and Daniele Paolo Scarpazza. Dissecting the nvidia turing t4 gpu via microbenchmarking. arXiv preprint arXiv:1903.07486, 2019.

Dimitris Kehagias and V Douskas-Bertlviser. Android-based simulator to support tomasulo algorithm teaching and learning. International Journal of Computer Applications, 975:8887.

Matthias Koenig and Roin Rasch. Digital teaching an embedded systems course by using simulators. In 2021 ACM/IEEE Workshop on Computer Architecture Education (WCAE), pages 1–7. IEEE, 2021.

Fernando Passe, Michael Canesche, Omar Paranaiba Vilela Neto, Jose A Nacif, and Ricardo Ferreira. Mind the gap: Bridging verilog and computer architecture. In 2020 IEEE International Symposium on Circuits and Systems (ISCAS), pages 1–5. IEEE, 2020.

David A Patterson and John L Hennessy. Computer organization and design: the hardware/software interface (the morgan kaufmann series in computer architecture and design). Paperback, Morgan Kaufmann Publishers, 2013.

Cristóbal Ramírez, César Alejandro Hernández, Oscar Palomar, Osman Unsal, Marco Antonio Ramírez, and Adrián Cristal. A risc-v simulator and benchmark suite for designing and evaluating vector architectures. ACM Transactions on Architecture and Code Optimization (TACO), 17(4):1–30, 2020.

William Stallings. Arquitetura e organização de computadores 8a edição, 2010.

Nathan D. Typanski. Tomasulo: floating-point MIPS-like instruction pipeline. [link].

Keyhan Vakil. Venus, risc-v simulator. [link].

Kenneth Vollmar and Pete Sanderson. Mars: an education-oriented mips assembly language simulator. In Proceedings of the 37th SIGCSE technical symposium on Computer science education, pages 239–243, 2006.

Xiuxia Zhang, Guangming Tan, Shuangbai Xue, Jiajia Li, Keren Zhou, and Mingyu Chen. Understanding the gpu microarchitecture to achieve bare-metal performance tuning. In Proceedings of the 22nd ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming, pages 31–43, 2017.

Published

2023-12-01

How to Cite

Ferreira, R., & Nacif, J. A. M. (2023). Teaching Software Pipelining and Scheduling on GPUs with Python in Google Colab. International Journal of Computer Architecture Education, 12(2), 20–29. https://doi.org/10.5753/ijcae.2023.4825

Issue

Section

Full Papers