Class will be in Wegmans 1009, Tuesdays/Thursdays from 1230 to 1345.
Modern computer systems are increasingly designed as a CPU + accelerator combination, where the accelerator may be a device such as a graphics processing unit (GPU). Many basic systems abstractions such as multiprocessing, virtual memory, I/O, etc., are either poorly supported or not supported at all by these systems. Many open questions remain on how to provide these abstractions on these systems. This course will survey a selection of topics related to efforts at providing programmers of these heterogeneous systems all the abstractions they currently take for granted on the CPU. The focus will be on CPU+GPU systems, although no knowledge of GPUs is necessary. Prior knowledge of computer architecture, operating systems, and programming languages is required. This course will introduce GPU programming, discuss current research papers on relevant topics and require students to design and execute a project.
This semester, the theme will be on providing services to programs running on massively parallel systems.
Each class will discuss a current research paper in the following manner: 30 minutes presentation, 15 minutes Q&A, 45 minutes discussion.
Presentations: Must be original. Use of (paper) authors presentations is not allowed. Use of Powerpoint, etc. is not required, but recommended.
Q&A: Write down all questions you have about the paper on an index card.
Discussion: Use the 3"x4" index cards to submit ideas related to the problem/paper for discussion before class begins (akin to paper submission). One idea per card (one side only). Any number of ideas can be submitted. All ideas will be evaluated and we will discuss only a high-quality subset. Joint ideas are also permitted, but will be held to a higher standard.
Course grading is based on participation in discussion (including number and quality of ideas), and on the project. The majority of the grade (75%) is for the project. Project proposals must be discussed with the instructor. A set of tentative deadlines is Oct 15 (initial proposal draft), Oct 30 (final proposal draft), Nov 15 (initial project review), Dec 1 (final project review).
All students in course (including those sitting-in) must participate in all activities.
Date | Paper | Presenter |
Thu Aug 31, 2017 | Intro and Class Mechanics | Pai |
Tue Sep 05, 2017 | Intro to Accelerators | Pai |
Thu Sep 07, 2017 | Intro to GPUs II | Pai |
Memory Management | ||
Tue Sep 12, 2017 | Background:
|
Pai |
Thu Sep 14, 2017 | (A) Huang, X., C. I. Rodrigues, S. Jones, I. Buck, and W. m Hwu. “XMalloc: A Scalable Lock-Free Dynamic Memory Allocator for Many-Core Machines.” In 2010 10th IEEE International Conference on Computer and Information Technology, 1134–39, 2010. doi:10.1109/CIT.2010.206 | Singh, A. |
Tue Sep 19, 2017 | (B) Steinberger, M., M. Kenzel, B. Kainz, and D. Schmalstieg. “ScatterAlloc: Massively Parallel Dynamic Memory Allocation for the GPU.” In 2012 Innovative Parallel Computing (InPar), 1–10, 2012. doi:10.1109/InPar.2012.6339604. | Reddy, U. |
Thu Sep 21, 2017 | (C) Widmer, Sven, Dominik Wodniok, Nicolas Weber, and Michael Goesele. “Fast Dynamic Memory Allocator for Massively Parallel Architectures.” In Proceedings of the 6th Workshop on General Purpose Processor Using Graphics Processing Units, 120–126. GPGPU-6. New York, NY, USA: ACM, 2013. doi:10.1145/2458523.2458535. | Cai, W. |
Virtual Memory | ||
Tue Sep 26, 2017 | Background:
|
Pai |
Thu Sep 28, 2017 | (E) Pichai, Bharath, Lisa Hsu, and Abhishek Bhattacharjee. “Architectural Support for Address Translation on GPUs: Designing Memory Management Units for CPU/GPUs with Unified Address Spaces.” In Proceedings of the 19th International Conference on Architectural Support for Programming Languages and Operating Systems, 743–758. ASPLOS ’14. New York, NY, USA: ACM, 2014. doi:10.1145/2541940.2541942. | |
Tue Oct 03, 2017 | (F) Power, J., M. D. Hill, and D. A. Wood. “Supporting X86-64 Address Translation for 100s of GPU Lanes.” In 2014 IEEE 20th International Symposium on High Performance Computer Architecture (HPCA), 568–78, 2014. doi:10.1109/HPCA.2014.6835965. | Liu, F. |
Thu Oct 05, 2017 | (G) Zheng, T., D. Nellans, A. Zulfiqar, M. Stephenson, and S. W. Keckler. “Towards High Performance Paged Memory for GPUs.” In 2016 IEEE International Symposium on High Performance Computer Architecture (HPCA), 345–57, 2016. doi:10.1109/HPCA.2016.7446077. | Wen, H. |
Multitasking | ||
Tue Oct 10, 2017 | Background
|
Pai |
Thu Oct 12, 2017 | (H) Tanasic, Ivan, Isaac Gelado, Javier Cabezas, Alex Ramirez, Nacho Navarro, and Mateo Valero. “Enabling Preemptive Multiprogramming on GPUs.” In Proceeding of the 41st Annual International Symposium on Computer Architecuture, 193–204. ISCA ’14. Piscataway, NJ, USA: IEEE Press, 2014. | |
Tue Oct 17, 2017 | (I) Park, Jason Jong Kyu, Yongjun Park, and Scott Mahlke. “Chimera: Collaborative Preemption for Multitasking on a Shared GPU.” In Proceedings of the Twentieth International Conference on Architectural Support for Programming Languages and Operating Systems, 593–606. ASPLOS ’15. New York, NY, USA: ACM, 2015. doi:10.1145/2694344.2694346. | |
Thu Oct 19, 2017 | (J) Wu, Bo, Xu Liu, Xiaobo Zhou, and Changjun Jiang. “FLEP: Enabling Flexible and Efficient Preemption on GPUs.” In Proceedings of the Twenty-Second International Conference on Architectural Support for Programming Languages and Operating Systems, 483–496. ASPLOS ’17. New York, NY, USA: ACM, 2017. doi:10.1145/3037697.3037742 | Chen, D. |
I/O | ||
Tue Oct 24, 2017 | Background | Pai |
Thu Oct 26, 2017 | (K) Silberstein, Mark, Bryan Ford, Idit Keidar, and Emmett Witchel. “GPUfs: Integrating a File System with GPUs.” In Proceedings of the Eighteenth International Conference on Architectural Support for Programming Languages and Operating Systems, 485–498. ASPLOS ’13. New York, NY, USA: ACM, 2013. doi:10.1145/2451116.2451169. | Richter, I. |
Tue Oct 31, 2017 |
(L)
|
Beadle, A. H. |
Thu Nov 02, 2017 | (M) Konstantinos Menychtas, Kai Shen, and Michael L. Scott, "Enabling OS Research by Inferring Interactions in the Black-Box GPU Stack", In Proceedings of the USENIX Annual Technical Conference (USENIX ATC'13), San Jose, CA, June 2013. | |
Programming Tools | ||
Tue Nov 07, 2017 | Pai | |
Thu Nov 09, 2017 | (N) Stephenson, Mark, Siva Kumar Sastry Hari, Yunsup Lee, Eiman Ebrahimi, Daniel R. Johnson, David Nellans, Mike O’Connor, and Stephen W. Keckler. “Flexible Software Profiling of GPU Architectures.” In Proceedings of the 42Nd Annual International Symposium on Computer Architecture, 185–197. ISCA ’15. New York, NY, USA: ACM, 2015. doi:10.1145/2749469.2750375. | |
Tue Nov 14, 2017 | (O) Li, Pengcheng, Xiaoyu Hu, Dong Chen, Jacob Brock, Hao Luo, Eddy Z. Zhang, and Chen Ding. “LD: Low-Overhead GPU Race Detection Without Access Monitoring.” ACM Trans. Archit. Code Optim. 14, no. 1 (March 2017): 9:1–9:25. doi:10.1145/3046678. | |
Thu Nov 16, 2017 | (P) Newsha Ardalani, Clint Lestourgeon, Karthikeyan Sankaralingam, and Xiaojin Zhu. 2015. Cross-architecture performance prediction (XAPP) using CPU code to predict GPU performance. In Proceedings of the 48th International Symposium on Microarchitecture (MICRO-48). ACM, New York, NY, USA, 725-737. 10.1145/2830772.2830780 | |
Miscellaneous | ||
Tue Nov 21, 2017 | (Q) Yunsup Lee, Vinod Grover, Ronny Krashinsky, Mark Stephenson, Stephen W. Keckler, and Krste Asanović. 2014. Exploring the Design Space of SPMD Divergence Management on Data-Parallel Architectures. In Proceedings of the 47th Annual IEEE/ACM International Symposium on Microarchitecture (MICRO-47). IEEE Computer Society, Washington, DC, USA, 101-113. doi:10.1109/MICRO.2014.48 | |
Thu Nov 23, 2017 | Thanksgiving (Holiday) | |
Tue Nov 28, 2017 | (R) Guoyang Chen, Yue Zhao, Xipeng Shen, and Huiyang Zhou. 2017. EffiSha: A Software Framework for Enabling Effficient Preemptive Scheduling of GPU. In Proceedings of the 22nd ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP '17). ACM, New York, NY, USA, 3-16. doi:10.1145/3018743.3018748 | |
Thu Nov 30, 2017 | (S) Jingyue Wu, Artem Belevich, Eli Bendersky, Mark Heffernan, Chris Leary, Jacques Pienaar, Bjarke Roune, Rob Springer, Xuetian Weng, and Robert Hundt. 2016. gpucc: an open-source GPGPU compiler. In Proceedings of the 2016 International Symposium on Code Generation and Optimization (CGO '16). ACM, New York, NY, USA, 105-116. doi:10.1145/2854038.2854041 | |
Project | ||
Tue Dec 05, 2017 | Wrap-up | |
Thu Dec 07, 2017 | No paper discussion | |
Tue Dec 12, 2017 | No paper discussion |