Introduction to Parallel Computing

Similar documents
High-Performance Scientific Computing

Introduction CPS343. Spring Parallel and High Performance Computing. CPS343 (Parallel and HPC) Introduction Spring / 29

Lecture 1: Why Parallelism? Parallel Computer Architecture and Programming CMU , Spring 2013

THREADS & CONCURRENCY

Introduction to Computer Systems

CSCI 4061: Inter-Process Communication

COMP 322: Fundamentals of Parallel Programming

Computer Architecture. Fall Dongkun Shin, SKKU

Operating Systems, Spring 2015 Course Syllabus

CSE 417 Practical Algorithms. (a.k.a. Algorithms & Computational Complexity)

CS 326: Operating Systems. Lecture 1

Inf2C - Computer Systems Lecture 1 Course overview & the big picture

CS 152 Computer Architecture and Engineering Lecture 1 Single Cycle Design

C Programming for Engineers Introduction

CSE 333 Lecture 1 - Systems programming

ECE 574 Cluster Computing Lecture 1

Administration. Coursework. Prerequisites. CS 378: Programming for Performance. 4 or 5 programming projects

CSC 447: Parallel Programming for Multi- Core and Cluster Systems. Lectures TTh, 11:00-12:15 from January 16, 2018 until 25, 2018 Prerequisites

Multicore and Parallel Processing

Spring Modern Computer Science in a Unix Like Environment CIS c

THREADS & CONCURRENCY

CS 3030 Scripting Languages Syllabus

Parallel Algorithm Engineering

CS232: Computer Architecture II

CMSC433 - Programming Language Technologies and Paradigms. Introduction

Spring 2017 :: CSE 506. Introduction. Nima Honarmand

Copyright 2010, Elsevier Inc. All rights Reserved

Administrivia. Minute Essay From 4/11

Threads & Concurrency

Advanced Computer Architecture (CS620)

Spring 2016 :: CSE 502 Computer Architecture. Introduction. Nima Honarmand

Parallelism and Concurrency. Motivation, Challenges, Impact on Software Development CSE 110 Winter 2016

CSE 333 Lecture 1 - Systems programming

CSE 240 Introduction to Computer Architecture

378: Machine Organization and Assembly Language

Shared Memory Architectures

How to Write Fast Code , spring st Lecture, Jan. 14 th

CS110/CS119 Introduction to Computing (Java) Bob Wilson S-3-176

EECS 282 Information Systems Design and Programming. Atul Prakash Professor, Computer Science and Engineering University of Michigan

Parallelism and Concurrency. COS 326 David Walker Princeton University

COMP Data Structures

COMP 322 / ELEC 323: Fundamentals of Parallel Programming

Introduction to Computer Systems

COMP Data Structures

Threads & Concurrency

GP-GPU. General Purpose Programming on the Graphics Processing Unit

CS61C : Machine Structures

CS61C : Machine Structures

CS 240 Fall 2015 Section 004. Alvin Chao, Professor

Administration. Prerequisites. Website. CSE 392/CS 378: High-performance Computing: Principles and Practice

EECE 321: Computer Organization

Introduction to Computer Systems

CS 100: Computability, Python Lists

CS 3030 Scripting Languages Syllabus

CS671 Parallel Programming in the Many-Core Era

COS 318: Operating Systems. Introduction

CSCI455: Introduction to Programming System Design

CS 152, Spring 2011 Section 10

CS 483. Jana Kosecka CS Dept Eng. Building

Course Staff Intro. Distributed Systems Intro. Logistics. Course Goals. Instructor: David Andersen TAs: Alex Katkova.

WHY PARALLEL PROCESSING? (CE-401)

CS 31: Intro to Systems Threading & Parallel Applications. Kevin Webb Swarthmore College November 27, 2018

The Art of Parallel Processing

Lecture 1: Gentle Introduction to GPUs

CS 405G: Introduction to Database Systems. Lecture 1: Introduction

Introduction to Computer Systems

Unix Inter-process Communication

Programming for Engineers in Python

CS61C Machine Structures. Lecture 1 Introduction. 8/27/2006 John Wawrzynek (Warzneck)

CSE : PARALLEL SOFTWARE TOOLS

Administration. Course material. Prerequisites. CS 395T: Topics in Multicore Programming. Instructors: TA: Course in computer architecture

San José State University Department of Computer Science CS-144, Advanced C++ Programming, Section 1, Spring 2018

First, the need for parallel processing and the limitations of uniprocessors are introduced.

Administration. Prerequisites. CS 395T: Topics in Multicore Programming. Why study parallel programming? Instructors: TA:

CS 241 Data Organization. August 21, 2018

Lecture 1. Introduction Course Overview

CSE 141: Computer Architecture. Professor: Michael Taylor. UCSD Department of Computer Science & Engineering

Database Systems Management

Lecture 2: Performance

San José State University Department of Computer Science CS 166 / SE 166, Information Security, Section 4, spring, 2017

CSC 261/461 Database Systems. Fall 2017 MW 12:30 pm 1:45 pm CSB 601

Systems I: Programming Abstractions

Welcome to CS 241 Systems Programming at Illinois

In this course, you need to use Pearson etext. Go to "Pearson etext and Video Notes".

COSC 6385 Computer Architecture - Multi Processor Systems

EECS 678: Introduction to Operating Systems. Heechul Yun

EECS 678: Introduction to Operating Systems. Heechul Yun

CSC258: Computer Organization. Memory Systems

CSE 591/392: GPU Programming. Introduction. Klaus Mueller. Computer Science Department Stony Brook University

Chris Riesbeck, Fall Introduction to Computer Systems

When and Where? Course Information. Expected Background ECE 486/586. Computer Architecture. Lecture # 1. Spring Portland State University

CS 253: Intro to Systems Programming 1/21

San José State University Department of Computer Science CS151, Section 04 Object Oriented Design Spring 2018

Multi-core Programming - Introduction

Math 2280: Introduction to Differential Equations- Syllabus

CMPE/SE 135 Object-Oriented Analysis and Design

PC I/O. May 7, Howard Huang 1

San José State University Computer Science CS 122 Advanced Python Programming Spring 2018

Moore s Law. CS 6534: Tech Trends / Intro. Good Ol Days: Frequency Scaling. The Power Wall. Charles Reiss. 24 August 2016

Introduction to Computer Systems

Transcription:

Introduction to Parallel Computing Chris Kauffman CS 499: Spring 2016 GMU

Goals Motivate: Parallel Programming Overview concepts a bit Discuss course mechanics

Moore s Law Smaller transistors closer together Smaller transistors can "flip" faster More faster transistors on a chip more speed Processor speed doubles every 18 months

How Small are Transistors? Intel Core i7 uses a 32 nanometer process Distance between memory units in the processor is about 64 nanometers A hard sphere radius of a hydrogen Atom is about 0.11 nanometers About 591 atoms apart 22 nanometer processor is close

However... Source: Danowitz et al CPU speed isn t getting faster these days Fastest Dell Speed I found was 4.0 GhZ (mine is 2.0 GhZ)

Today s Processors Mini-Parallel Computer Multiple independent processors Can add 2 or 4 or 8 numbers independently Can actually run multiple programs simultaneously

Multitasking multitask (verb) To use the restroom and brush your teeth at the same time. I was late for work today so I had to multitask! Urban Dictionary Definition 3 by sasm Questions Do humans multitask and if so how? What kinds of things can humans multitask? Are you a good multitasker? How do humans get a big job done faster?

Focus Study on Canadian Undergraduates The students in the first experiment who were asked to multitask averaged 11 per cent lower on their quiz. The students in the second experiment who were surrounded by laptops scored 17 per cent lower. Laptop use lowers student grades, experiment shows, The Canadian Press, 8-14-2013 Original Paper by Sana et al

Computers and Multitasking How do computers multitask? Can a single CPU computer multitask? What are the advantages/disadvantages of this? What might drive one to write a parallel program?

Parallelism Shows Up a Lot in Computing Low-level/hardware parallelism CPU Instructions, VLIW: Very Long Instruction Word Multi-media CPU instructions Graphics and GPU instructions CPU Pipelines Memory subsystem I/O controller Many of these are like your heart-beat and breathing: not part of your explicit execution but as they run more efficiently your whole game gets better Programmatic Parallelism You write code meant to run in parallel

Motivation: Faster, Bigger Google s Index of Web Pages Item Size/Count Number of Pages indexed in 2014 30,000,000,000,000 Total number of Google servers 920,000 Total size of Google s index data 100,000,000 GB Source: Statistic Brain Questions How does Google rank web pages? What algorithm is used? Could you run it on your laptop?

Primary Motivation for Parallel Computing Use multiple processors to... Speedup: solve the same size problem in less time Sizeup: solve a larger problem in the same time Example: A serial program takes 100 seconds to perform a calculation on a 10MB input image file. Speedup 2 processors should finish the 10MB calculation calculation in 50 seconds Right?.... right? Just like two people can bake a cake twice as fast as a single person... Sizeup 2 processors should finish a 20MB file calculation in 100 calculation on a 20MB input image file? Right?.... right?

Concurrency and Parallelism StackOverflow Questions Concurrency vs Parallelism - What is the difference? Accepted Answer (RichieHindle) Concurrency is when two or more tasks can start, run, and complete in overlapping time periods. It doesn t necessarily mean they ll ever both be running at the same instant. Eg. multitasking on a single-core machine. Parallelism is when tasks literally run at the same time, eg. on a multicore processor. Implications Concurrent = Parallel: A concurrent program does not need to be run in parallel. Parallel = Concurrent: A parallel program had better deal with concurrency issues.

Coordination has a Cost: Dining "Philosophers" Each Swansons will only eat with two forks JJ s only has 5 forks, must share Each Swanson should eventually eat some of the eggs Algorithms that don t share forks will lead to injury Source: Aditya Y. Bhargava, Originally: Dustin D Arnault

What We Will Discuss Low latency parallel computers General hardware/network architectures of parallel computers Distributed memory parallel computers Message Passing Interface (MPI) Shared Memory parallel computers Interprocess Communication POSIX Threads OpenMP Analyzing Parallel Algorithms Parallelizing Classic Algorithms Matrix Ops Sorting Scientific computing angle

General Arrangement of Topics Weeks 1-7 Distributed Memory Weeks 8-14 Shared Memory Source: Kaminsky/Parallel Java Source: Kaminsky/Parallel Java Source: ClusterComputer.com Source: Bit-Tech AMD FX-8350 review

What We Won t Discuss General Networking (CS 455) Server/Client Model for Web Programming Deep Dive into Parallel Hardware Grid Parallelism

Course Mechanics Mull over the syllabus here: https://cs.gmu.edu/syllabus/syllabi-spring16/ CS499KauffmanC.html Look for Contact info GTA Textbook Weights / Grading Scheme Hot Seats / Bonus Cards Schedule of topics and lecture materials: https://cs.gmu.edu/~kauffman/cs499/schedule.html

Homework 50% of your grade Combination of writing and programming Programming mostly in C in a unix environment One major programming HW on MPI + analysis Getting a parallel cluster set up for you to use Also probably use a simulator to analyze scale up One major programming HW on PThreads/OpenMP + analysis Will use zeus.vse.gmu.edu (8 cores) Three other assignments, combination of some code and written work Dust off your C/unix skills ssh, gcc, make, shell: know them, love them

Exams Small and Large Mini-Exams: 4 scheduled Between a quiz and a midterm exam in length Last 30 minutes of class 1 page, front and back Open notes, book, slides Stuff from lecture, HW, readings Will work practice problems in class preceding them Total 25% Final Exam: 2 hours 45 minutes, end of semester Open Resource Exams Unless otherwise specified, exams are open resource: use notes, compiler, code, slides, textbook. No googling, browsing, communication, cheating

Reading For Next Time Grama Ch 2: Parallel Programming Platforms Link to Library Copy of Textbook