# 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!