- CS 484 Parallel Programming
- CS 498 Cloud Computing Applications
CS 484 Parallel Programming
Lesson 1-1
Components of a Processor
- To be able to effectively program a modern multiprocessor, we have to understand what it is made up of and how it came to be the way it is today.
- Must have optimal sequential programs before we can use parallel programming
- Need switches that turn on off automatically via voltage application
- Computers are made from some very simple components by putting a large number of them together in interesting ways, and running them really fast.
Early History of Computers
- History be dank yo.
Moores Law
- In one clock cycle: instruction is fetched from memory, operands fetched, arithmetic performed, results stored back.
End of Moores Law and Parallelism
- Power limit due to temperature, and transistor limit due to close to atomic sizes
- We are in the early days of the Era of Parallel Computing!
Peek into the Future
- The future is promising for parallel programmers
- Times are changing, ie innovation is becoming stagnant in terms of processors
- Those who can “get” parallel will have an advantage
- If killer parallel app doesn’t arrive, progress on single multiprocessor chips will stall
- Complete “stasis” after 7-10-ish years, but then such things have been predicted before.
Lesson 1-2
Performance Via Complexity
- obstacles to speed:
- long chain of gate delays
- floating point computations
- slow memory
- virtual memory and paging
- Overcoming these obstacles can lead to significant increase in complexity, and can make performance difficult to predict and control.
- latency vs throughput and bandwidth
- Programming to avoid branch misprediction
- when you have data dependent branches that are hard to predict:
- see if you can convert them into non-branching code!
- Conditional move instructions help, and normally compilers should do the right thing, but sometimes compilers aren’t able to
- For example:
- Sum += expression that evaluates to data[c] if >128 or 0 otherwise;
- Or, since there are only 255 possible values, pre-create a lookup table
- Sum += table[data[c]];
- when you have data dependent branches that are hard to predict:
Memory Access Challenges
- Memory is slow, one way to help alleviate this bottleneck is to have intermediary memory devices in between the processor and storage memory (chaches)
CS 498 Cloud Computing Applications
Goals
- Understand what cloud computing is and why it is important.
- Get a picture of the economics of cloud computing.
- Learn about Big Data (much more about Big Data in the second part of this course).
Key Concepts
- Cloud computing
- Big Data
- Cloudonmics
- Software defined architecture
- IaaS: Infrastructure as a Service
Guiding Questions
- What is cloud computing and why is it important?
- Does using cloud computing save my company’s budget?
- What is Big Data?
- How do software defined architectures work?
- What makes virtualizing my computer infrastructure attractive?
Readings and Resources
None
Video Lecture Notes
Lesson 1-1 Cloud Computing Foundations Part 1
Cloud Computing Introduction
Motivation Interview
Cloudonomics Part 1
- U < P / A is when cloud computing makes sense.
Cloudonomics Part 2
Big Data
- Computers are the necessary tools for fully understanding our physical world!
Summary
Lesson 1-2 Cloud Computing Foundations Part 2
Software Defined Architecture
- Saas, PaaS, Iaas are like layers (application layer, operating system layer, data storage layer)