no edit summary
= Software Portability and Optimization =
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
Winter 2015 ==
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.
Winter 2015, the SPO600 course will be focused on optimizing the "LAMP" stack -- Linux, Apache, MySQL, and Python/PHP/Perl (or equivalents!) -- to make it run as efficiently as possible on AArch64 systems. We will build, benchmark, and profile the LAMP stack on x86_64 systems, then do the same on AArch64, and identify areas for improvement. Then we'll experiment with compiler options, algorithm changes, and platform-specific code to optimize the performance.
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.
* 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.