Changes

Jump to: navigation, search

SPO600

1,345 bytes added, 10:37, 6 September 2022
SPO600 in Winter 2022
!style="background: #cccccc"| Quick Links
|-
|<div style="background:#ffff00">[[Fall 2014 Current SPO600 Weekly Schedule|Weekly Schedule]]</div>[[Fall 2014 Current SPO600 Participants|Participants and Project Table]]<br />[httphttps://wwwtelescope.cdot.systems Telescope]<br />[https://ict.senecacollege.ca/ssos/findWithoutSemestercourse/spo600/sict Course Outline]<br />[[media:SPO600 Course PoliciesWinter 2022 addendum.pdf|Course PoliciesWinter 2022 Addendum]]<br />[http://linaro.org Linaro]<br />[http://performance.linaro.org Linaro Performance ChallengeSPO600 Course Policies|Course Policies]<br />[http://zenit.senecac.on.ca/~chris.tyler/planet/ Planet CDOT]<br />
|}[[Category:SPO600]]
 <!-- {{Admon/tip|Thinking of taking this course in Winter 2015?|[[SPO600 - Information for Prospective Students|Here is some information for prospective students.]]}}-->
= Software Portability and Optimization =
Software is sometimes written to work on a specific computer architecture (type of computer), such as on Intel-compatible x86_64 PCs, or IBM Z9 Z-series mainframes. This course deals with the challenge of making software compatible with a new architecture in one of two ways:
# Adding additional architecture-specific code so that the software can run on the new architecture ('porting' the software), or
# Removing the architecture-specific code and replacing it with architectural-neutral code, so that it can run on a variety of system architectures (making the software 'portable').
SPO600 is a professional option in the [http://ict.senecac.on.ca/ Seneca School of Information and Communication Technology] [https://ict.senecacollege.ca/academic-programs/cty/overview CTY] and [https://ict.senecacollege.ca/academic-programs/cpa/overview CPA] programs. First offered: Winter 2014.
== SPO600 in Fall 2014 Winter 2022 ==
In SPO600, you'll be working directly with open source communities to port softwareA new computer architecture has appeared: 64-bit ARM systems (also known as "ARM64" or "AArch64"). This semester, we'll be collaborating with a project set While AArch64 is showing up by Jon "Maddog" Hall in cell phones and [http://linarotablets, it is also poised to pounce on the datacentre.org Linaro] Most of the work of porting core software to port AArch64 has been completed, and optimize software which doesn't currently at this point, just about everything that runs on x86_64 Linux systems will run on 64-bit ARM (aarch64) computersan AArch64 systems. This project However, the x86_64 architecture has identified been around 1400 for many years, and software packages has been well-optimized to work on that need work. (As a bonusarchitecture; but AArch64 is relatively new, completed projects and it may be eligible for recognition possible to get better performance with additional tuning and possibly prizes from Linaro)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 (similar 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 projectssoftware, 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.
Working in an open source community provides the opportunity to build solid real-world experience, your technical skills and reputation, and a network of contacts, all of which are useful in developing your career.
'''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.
<!-- '''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 (VGA or 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]]).
* Students in the SPO600 course may want to purchase a 64-bit ARM computer, such as a Rasbperry Pi 4 or Raspberry Pi 400 -- but you will need to run a 64-bit operating system, such as [https://fedoraproject.org/wiki/Architectures/ARM/Raspberry_Pi Fedora AArch64]. -->
=== Professor ===
There are three keys to success in this course:
1. '''Blog.''' Tell your professor, your colleagues, the community, and everyone else what you're doing. <u>Write a lot</u> and write well, include good technical content, and incorporate links to all relevant resources and the product of your work, and write often. Almost all of your work in this course is submitted by blogging. 2. '''Be ambitious.''' In this course, you will need to be the driving force behind your project. The community will help you, but it's up to you to supply the energy. 3. '''Work ''in'' the open source community.''' The projects we will be doing are too large and too unfamiliar for you to succeed entirely on your own. You will need to use the community's knowledge, connections, and resources to succeed well. Respect the community's standards, tell the community what you're doing, ask when you have a question, and pull your own weight within the community.
2. '''Blog.''' Tell your professor, your colleagues, the community, and everyone else what you're doing. Write a lot and write well, include good technical content, and incorporate links to all relevant resources and the product of your work, and write often. Almost all of your work in this course is submitted by blogging.
3. '''Be ambitious.''' In this course, you will need to be the driving force behind your project. The community will help you, but it's up to you to supply the energy. '''It's best to plan to make a bit of progress each day.'''
== Weekly Outline ==
See the [[Fall 2014 Current SPO600 Weekly Schedule]] for specific dates and topics.
== Course Outline ==
See the online [https://ict.senecacollege.ca/course/spo600 course outline] for course details, and the [[media:SPO600 Winter 2022 addendum.pdf|Winter 2022 Addendum]] for additional course details.

Navigation menu