# CS 5220: Applications of Parallel Computers Prof. David Bindel TR 8:40-9:55, 101 Phillips
## Objectives - Reason about code performance - Many factors: hardware, software, algorithms - Want simple, "good enough" models - Read/judge HPC literature - Apply model numerical HPC patterns - Tune existing codes for modern HW - Apply good software practices
## Prereqs Guided by basic logistical constraints: - Default class codes will be in C - Our focus is numerical codes Fine if you're not a numerical C hacker! - I want a diverse class - Most will have *some* holes - Come to us if you have concerns
## Usual Logistics - Home: [cornell-cs5220-f15.github.io](http://cornell-cs5220-f15.github.io) - Read [the syllabus](/syllabus.html) and [conduct code](/conduct.html) - Enroll if you'll take the class - If you're note allowed [fill the waitlist survey](https://cornell.qualtrics.com/SE/?SID=SV_1RF9HCq2fxmccXX) - Regular registration should be open Aug 26 - Grading breakdown - Class participation + HW (20%) - Standard group projects + peer review (50%) - Final project (30%)
## Unusual Logistics - Intel Xeon Phi cluster - Git-oriented workflows - Public development work - Flipped classroom (bring laptops!) More on all of this in a bit!
## How many are you? Let's try the following simple counting protocol: - Rightmost person counts number in each row - When done counting, raise hand - State number when called on Estimate how long should this take. Then let's see!
## How many are you? Would it be more efficient for me to count? - Time to start the process? - Time to compute vs communicate? - Opportunity for parallelism? - Balanced work partition?
## Who are you? Icebreaker: Greet your neighbors
## Who are you? How many have or are pursuing - A CS degree? - Engineering degree (outside CS)? - Other science degree (outside CS)? - Other degrees?
## Who are you? How many are - Undergraduates? - Masters students? - PhD students? - Other?
## HW0: Who are you? - Create a [GitHub account](http://www.github.com) - Fill out Assignment 0: - Netid and GitHub account - Demographic information - Why taking the course - Submit via CMS
## Logistics: Accounts You'll need two accounts: - Cluster account (netid login) - I'll start with facultycenter enrollment - Help me out: enroll or send me email! - GitHub account (may be pseudonymous)
## Xeon Phi cluster - Fancy HW toy courtesy Intel + Dell discount - Eight 12-core host nodes - Fifteen 60-core Xeon Phi accelerators - Typical HPC software environment - Linux base + environment modules - Submission via batch queue A *new cluster* -- expect issues, be patient!
## Git - Popular Distributed Version Control System (DVCS) - You'll learn to use it in this class - Why? - A good standard tool - Helps with teamwork - Helps with multiple machines See also: ["Rationale for class Git workflows"](/2015/08/01/rationale.html)
## Git + GitHub - Fork/pull: *very* common software workflow - Start assignments by *forking* a class repository - Submit work via *pull requests* (PR) - Start a conversation (get feedback!) - Can keep working after PR Course correction/addition PRs for extra credit!
## GitHub - Default for distributing work *and* submitting - Public code = bragging rights - You learn from your peers - Privacy concerns - Respect the privacy of your peers! - Grades and such stay on [CMS](http://cms.csuglab.cornell.edu/) - May stay pseudonymous [(use private email)](https://help.github.com/articles/keeping-your-email-address-private/) - Can opt out without penalty -- come talk to me
## Flipping - Lectures and reading out of class - Class time for collaboration and interaction - Discussions of readings - Pair programming - Guided problem work - Bring a laptop if you've got one!
## Out of class - Class preparation work - Readings + responses, short exercises, etc - You *may* update responses during/after class - Group projects - Parallelization / tuning of existing codes - Performance analysis is a big component - Groups assigned to mix background - Final project - Research track: write a paper - Teaching track: develop a module
## Projects - Deliverables - Tuned (and correct) code - Written report with reproducible experiments - Three or so during semester - Assigned small groups - Comes with milestones - Work is peer reviewed - Groups also self-assess
## Sharing - Default: class code (including yours) is open - Goal: *study* and *improve* peer codes - Caveat: *cite* what inspires you - Bulk copying with citation still scores low - Peer review partly to force sharing
## Late work - In-class work and peer review need timely work - Two parts to grade: initial and final submission - Get feedback on initial submission - Correct issues before final submission - PRs track your repository updates
## Final projects - Peer-reviewed research or instructional projects - Small groups (unassigned) - Will solicit proposals in a month or so - Research projects - Short research paper and presentation - Topic must involve performance - Teaching projects - Instructional module and presentation - Includes learning goals, assessment, deployment plan
## Marching orders - Home: [cornell-cs5220-f15.github.io](http://cornell-cs5220-f15.github.io) - Read [the syllabus](/syllabus.html) and [conduct code](/conduct.html) - Create a [GitHub account](http://www.github.com) - Submit [HW0](http://github.com/cornell-cs5220-f15/hw0) on [CMS](http://cms.csuglab.cornell.edu) - Read [software setup recommendations](http://cornell-cs5220-f15.github.io/2015/08/03/recommended.html) - Read [performance analysis notes](http://cornell-cs5220-f15.github.io/2015/08/10/performance.html) - Come Thursday with computers!