Exposing every undergraduate to parallelism: Baby steps at Ohio State

Download Report

Transcript Exposing every undergraduate to parallelism: Baby steps at Ohio State

Introducing Every CS Major to
Parallel Programming:
Baby Steps at Ohio State
Gagan Agrawal
Feng Qin
P. Sadayappan
Context
o
o
o
Ohio State Moving to Semester System in
2012
A very significant exercise in converting all
degree programs
CS undergrad programs developed almost
from scratch
All CSE and CIS undergrads will do
exercises in parallelism and locality
This Talk
o
Not About
o
o
o
Extensive coverage of parallelism for UGs
New pedagogy of teaching parallelism
Is About
o
o
Challenges of designing a CS Curricula
(Different) view-points of colleagues
o
o
Not everyone thinks the way systems faculty does
Some other challenges in preparing students for
parallelism
Curriculum Design Process
o
o
o
10 faculty, lectures, students, advising staff
Met for 1 hour per week for about 15 weeks
Various subcommittees formed
o
o
Divide core into software, foundations, and systems
Challenging/Contentious discussions
Outcome
o
~50 credits of CS divided into
o
6 required courses
Software I and II
o Systems I and II
o Foundations I and II
o
o
o
o
o
A junior project course
A senior capstone course
4 pick A or B pairs
4 other elective slots
Primary Drivers
o
Larger core considered undesirable
o
o
o
Students should be able to take several graphics or
networking courses ..
Project and Capstone considered very important
Dividing core into Software, Foundations, and
Systems helped divide responsibilities
o
SE faculty responsible for software, systems faculty
responsible for systems
More Details
o
Software I and II
o
o
o
o
Java based
Strong component-based flavor
Strong SE bent (best practices in Java etc.)
What is Missing
o
o
o
Any C/C++
Pointers and memory discussion
Any performance considerations
Systems I and II
o
o
o
Systems faculty in charge of it
Input: students with no C/pointer/memory
background
Desired Coverage
o
o
o
o
o
C programming
Micro-architecture, organization, assembly programming
Operating System Topics
Multi-core hardware and software
Processor architecture and networking …
Tried to Negotiate
o
o
Asked for more systems credits
Prepared a strong argument
o
o
Multi-core hardware and software very important for
everyone ..
Got no traction from others
o
o
Argument that action has shifted to applications
No option but to work within 6-7 credits
Final Outcome (Systems Courses)
o
Systems I
o
o
o
C programming (pointers)
Computer Organization and Assembly
Programming
Systems II
o
o
10 weeks of operating systems topics
Parallel programming and locality management at
software level
Operating Systems at Ohio State
o
o
A required quarter long course (3 quarter credits)
Covers traditional “theory” topics
o
o
Processes, Memory, Devices
Labs for
o
o
Programming with System Calls
Multi-threaded Programming
o
o
o
Producer Consumer Etc.
No Kernel Programming
Elective Operating Systems Lab Course
o
Linux Kernel Programming
Systems II in Semesters
o
o
o
o
Keep 10 week contents as they are
Add Multi-Core application development
o Build on Pthreads and Synchronization
o Focus on extracting performance from simple applications
Add application level locality management
o Exposure to Caches at Application Level
o Relate to VM treatment in a standard OS Course
Use Bryant and O’Hallaron for new material
o Computer Systems: An Application Developer’s Perspective
o Also our Text for Last 8 weeks of Systems I
Was It All Natural?
o
o
Many found combination of topics strange!!
But
o
o
o
o
Met our priority of material to cover
Better than Just adding more OS Topics
Locality coverage important because architecture is now
an elective
The only opportunity to introduce parallelism we had
Other Observations from the Process
o
Performance low in priority outside systems
o
o
SE Practices, Testing more important
Many forces against preparing students for
parallelism
o
o
o
No pointers/memory at early stages
Encapsulation/Components emphasized
Architecture coverage very limited
o
Choice with Networking
Other Questions
o
Does it make sense to teach parallelism with Java or
C#?
o
o
If sequential performance is so limited, why bother with
parallelism?
Should we first teach parallelism with more
abstractions?
Is Pthreads too low level?
o Can you really get performance just thinking of simple
iterators/ map-reduce etc.?
o