Architecture of processors, cache hierarchies, memory systems, storage and IO systems, interconnection networks, and message-passing multi- processor systems. History of high performance computing. Processing and communication benchmarks. Parallel programming models. Single-node performance and parallel scaling of real applications. Locality, synchronization, communication and computation overlap, performance/power trade-offs, and reliability.