Difference between revisions of "SPO600"

From CDOT Wiki
Jump to: navigation, search
(47 intermediate revisions by the same user not shown)
Line 2: Line 2:
 
!style="background: #cccccc"| Quick Links
 
!style="background: #cccccc"| Quick Links
 
|-
 
|-
|<div style="background:#ffff00">[[Fall 2014 SPO600 Weekly Schedule|Weekly Schedule]]</div>[[Fall 2014 SPO600 Participants|Participants and Project Table]]<br />[http://www.senecacollege.ca/ssos/findWithoutSemester/spo600/sict Course Outline]<br />[[SPO600 Course Policies|Course Policies]]<br />[http://linaro.org Linaro]<br />[http://performance.linaro.org Linaro Performance Challenge]<br />[http://zenit.senecac.on.ca/~chris.tyler/planet/ Planet CDOT]<br />
+
|<div style="background:#ffff00">[[Current SPO600 Weekly Schedule|Weekly Schedule]]</div>[[SPO600 Participants|Participants and Project Table]]<br />[http://www.senecacollege.ca/ssos/findWithoutSemester/spo600/sict Course Outline]<br />[[SPO600 Course Policies|Course Policies]]<br />[http://linaro.org Linaro]<br />[http://zenit.senecac.on.ca/~chris.tyler/planet/ Planet CDOT]<br />
 
|}[[Category:SPO600]]
 
|}[[Category:SPO600]]
<!--
+
<!-- {{Admon/tip|Thinking of taking this course?|[[SPO600 - Information for Prospective Students|Here is some information for prospective students.]]}} -->
{{Admon/tip|Who can take this course?|This course is open to both '''CTY''' (system and network administration) and '''CPA''' (software development) students. Each group brings unique but overlapping skills: CTY students have a strong understanding of operating systems and administrative procedures, and CPA students have a strong understanding of programming. This course provides a range of project opportunities requiring different combinations of skills from each program of study.}}
 
 
 
{{Admon/tip|Why take this course?|In this course, you'll learn about the internal details of computer architecture and the lowest levels of programming - the instructions that a compiler produces from your code. You'll also learn how to port code to work on a new architecture (or on a range of architectures), benchmark software performance, improve software performance by changing the code or the way it is built, and debug code. This is a project-based course, and you will gain experience working directly with one or more open source communities on software that is in everyday use.<br /><br />
 
After completing this course, you will understand the fundamentals of computer architecture and operation and be able to build and/or write software that performs well, work with multiple computer architectures, and participate in open source projects. This is a challenging course but it should be rewarding for students interested in the details of computer architecture and software optimization.}}
 
 
 
{{Admon/note|Questions about SPO600?|Please contact Professor [[User:Chris Tyler|Chris Tyler]] (via email at [mailto:chris.tyler@senecacollege.ca chris.tyler@senecacollege.ca]).}}
 
-->
 
 
 
 
= Software Portability and Optimization =
 
= 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 mainframes. This course deals with the challenge of making software compatible with a new architecture in one of two ways:
+
Software is sometimes written to work on a specific computer architecture (type of computer), such as on Intel-compatible x86_64 PCs, or IBM 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
 
# 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').
 
# 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').
Line 23: Line 15:
 
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 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 ==
+
== SPO600 in Fall 2018 ==
 +
 
 +
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 new, and it may be possible to get better performance with additional tuning and optimization.
  
In SPO600, you'll be working directly with open source communities to port software. This semester, we'll be collaborating with a project set up by Jon "Maddog" Hall and [http://linaro.org Linaro] to port and optimize software which doesn't currently run on 64-bit ARM (aarch64) computers. This project has identified around 1400 software packages that need work. (As a bonus, completed projects may be eligible for recognition and possibly prizes from Linaro).
+
In this semester, the SPO600 course will be focused on optimizing software on AArch64 systems, using the [http://leapproject.ca LEAP], [http://fedoraproject.org Fedora], and [http://centos.org CentOS] projects as a starting point. We will be benchmarking the performance of open source software stacks on AArch64 relative to the raw performance of the hardware and searching for optimization opportunities.
  
Note that, unlike some other project-based courses, the results of the projects done in SPO600 will be incorporated into open source projects, 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.
+
Note that, unlike some other project-based courses, the results of the projects done in SPO600 will 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.
  
 
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.
 
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.
Line 33: Line 27:
 
=== Course Materials / System Requirements ===
 
=== Course Materials / System Requirements ===
  
* Course information and labs are online.
+
* Course information and labs are online - no textbook is required.
* You will require access to a personal Linux installation on a 64-bit (x86_64) computer. This may be on your own laptop, on a virtual machine on your laptop, on an SSH-accessible system (such as a home desktop computer), or on a SATA disk pack or USB drive for use with the Seneca computers.
+
 
* You will need to be able to ssh to computer systems at Seneca (CDOT).
+
'''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.
 +
 
 +
'''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 (VGA or HDMI). If your video output is of a different type (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 in the SPO600 course may want to purchase a 64-bit [https://www.96boards.org/ 96Boards] computer (such as a [https://www.96boards.org/products/hikey/ HiKey] or [https://www.96boards.org/products/dragonboard410c/ DragonBoard 410c]) or alternately a [https://www.raspberrypi.org/products/raspberry-pi-3-model-b/ 64-bit Raspberry Pi 3b] -- but you will need to run a 64-bit operating system, such as [https://fedoraproject.org/wiki/Architectures/ARM/Raspberry_Pi Fedora AArch64].
  
 
=== Professor ===
 
=== Professor ===
Line 47: Line 47:
 
1. '''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.
 
1. '''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.
+
2. '''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.
 +
 
 +
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.
 +
 
  
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.'''
+
'''It's best to plan to make a bit of progress each day.'''
  
 
== Weekly Outline ==
 
== Weekly Outline ==
  
See the [[Fall 2014 SPO600 Weekly Schedule]] for specific dates and topics.
+
See the [[Current SPO600 Weekly Schedule]] for specific dates and topics.
  
 
== Course Outline ==
 
== Course Outline ==
  
 
See the online [https://ict.senecacollege.ca/course/spo600 course outline] for course details.
 
See the online [https://ict.senecacollege.ca/course/spo600 course outline] for course details.

Revision as of 21:40, 6 September 2018

Quick Links
Participants and Project Table
Course Outline
Course Policies
Linaro
Planet CDOT

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 Z-series mainframes. This course deals with the challenge of making software compatible with a new architecture in one of two ways:

  1. Adding additional architecture-specific code so that the software can run on the new architecture ('porting' the software), or
  2. 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').

In either case, software can be altered or it can be built in such a way that performance is optimized - so that runs faster, or it uses less memory or other resources. In order to test optimizations, we'll be performing benchmark testing before and after modification.

SPO600 is a professional option in the Seneca School of Information and Communication Technology CTY and CPA programs. First offered: Winter 2014.

SPO600 in Fall 2018

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 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, using the LEAP, Fedora, and CentOS projects as a starting point. We will be benchmarking the performance of open source software stacks on AArch64 relative to the raw performance of the hardware and searching for optimization opportunities.

Note that, unlike some other project-based courses, the results of the projects done in SPO600 will 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 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.

Course Materials / System Requirements

  • Course information and labs are online - no textbook is required.

Required:

  • You must be able to SSH to computer systems at Seneca (CDOT). You can do this using an SSH client program, included with or available for almost all platforms.

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 (VGA or HDMI). If your video output is of a different type (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 in the SPO600 course may want to purchase a 64-bit 96Boards computer (such as a HiKey or DragonBoard 410c) or alternately a 64-bit Raspberry Pi 3b -- but you will need to run a 64-bit operating system, such as Fedora AArch64.

Professor

SPO600 is taught by Chris Tyler.

Succeeding in SPO600

There are three keys to success in this course:

1. 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 Current SPO600 Weekly Schedule for specific dates and topics.

Course Outline

See the online course outline for course details.