1,885
edits
Changes
SPO600
,→SPO600 in Winter 2022
A new computer architecture has appeared: 64-bit ARM systems (also known as "ARM64" or "AArch64"). While AArch64 is showing up in cell phones and tablets, it is also poised to pounce on the datacentre. Most of the work of porting core software to AArch64 has been completed, and at this point, just about everything that runs on x86_64 Linux systems will run an AArch64 systems. However, the x86_64 architecture has been around for many years, and software has been well-optimized to work on that architecture; but AArch64 is relatively new, and it may be possible to get better performance with additional tuning and optimization.
In this semester, the SPO600 course will be focused on optimizing software on AArch64 systems, and specifically on building infrastructure to make it easier to use indirect functions (iFuncsimilar to the glibc "ifunc" capability) for runtime implementation selection. This technique is widely used in a few places -- such as in glibc, the GNU standard C library -- but it would be great if we could easily use it in other places. This would allow (for example) two versions of a particular function to be automatically compiled, with and without support for particular hardware features (such as Scalable Vector Extensions (SVE/SVE2)), and for the best version to be automatically used at runtime.
Note that, unlike some other project-based courses, the results of the projects done in SPO600 will eventually be incorporated into the actual "upstream" open source software, and have a real impact on other people. For this reason, projects must be completed in collaboration with the relevant open source communities, using relevant [[SPO600 Communication Tools|communication tools]]. Work performed in this course will be licensed using the relevant open source licenses used by the associated community.
'''Required:'''
* You '''must''' be able to [[SSH]] to [[SPO600 Servers|computer systems]] at Seneca (CDOT). You can do this using an SSH client program, included with or available for almost all platforms.
* You '''must''' be able to participate in synchronous (live) streaming classes and be able to view/stream video content.
<!-- '''Strongly Recommended:'''
* Classes are held in an [[Active Learning Classroom]]. You '''should''' have a mobile device of some type (laptop, smartphone, tablet) with a wireless network connection (WiFi or mobile) and a video output (HDMI). If your video output is of a different type (VGA/DVI/DP/Miracast/MyDP/MiniDP/MiniHDMI/other) you will need an appropriate adapter.
* For productivity, you '''should''' have access to a personal Linux installation on a 64-bit (x86_64) computer (see [[SPO600 Host Setup]]).
* '''Optionally''', students Students in the SPO600 course may want to purchase a 64-bit [https://www.96boards.org/ 96Boards] ARM computer, or alternately such as a [https://www.raspberrypi.org/products/raspberry-pi-Rasbperry Pi 4-model-b/ or Raspberry Pi 4] or [https://www.raspberrypi.org/products/raspberry-pi-3-model-b-plus/ 3b+] 400 -- but you will need to run a 64-bit operating system, such as [https://fedoraproject.org/wiki/Architectures/ARM/Raspberry_Pi Fedora AArch64] (note that AArch64 support is still pending for the Pi4 as of September 2019).-->
=== Professor ===