25
Introduction to ECE 454 Computer Systems Programming Topics: Topics: Lecture topics and assignments Profiling rudiments Lab schedule and rationale Cristiana Amza

Introduction to ECE 454 Computer Systems Programming Topics: Lecture topics and assignments Profiling rudiments Lab schedule and rationale Cristiana Amza

Embed Size (px)

Citation preview

Page 1: Introduction to ECE 454 Computer Systems Programming Topics: Lecture topics and assignments Profiling rudiments Lab schedule and rationale Cristiana Amza

Introduction to ECE 454 Computer Systems

Programming

Introduction to ECE 454 Computer Systems

Programming

Topics:Topics: Lecture topics and assignments Profiling rudiments Lab schedule and rationale

Cristiana Amza

Page 2: Introduction to ECE 454 Computer Systems Programming Topics: Lecture topics and assignments Profiling rudiments Lab schedule and rationale Cristiana Amza

– 2 –

Lecture TopicsLecture Topics

Module 1Module 1 code optimization principles, and profiling, (also - measuring

time on a computer)

Module 2Module 2 the memory hierarchy, caches, locality

Module 3Module 3 virtual memory, dynamic memory allocation

Module 4Module 4 threads, parallel programming

Module 5Module 5 Concurrency and the Architecture, other programming

models (if time)

Page 3: Introduction to ECE 454 Computer Systems Programming Topics: Lecture topics and assignments Profiling rudiments Lab schedule and rationale Cristiana Amza

– 3 –

Performance (1)Performance (1)

TopicsTopics code optimization principles, measuring time on a computer

and profiling

AssignmentsAssignments L1: Code Performance Profiling, bottleneck determination

Page 4: Introduction to ECE 454 Computer Systems Programming Topics: Lecture topics and assignments Profiling rudiments Lab schedule and rationale Cristiana Amza

– 4 –

The Memory Hierarchy (2)The Memory Hierarchy (2)

TopicsTopics Code optimization rules of thumb Memory technology, memory hierarchy, caches, locality Includes aspects of architecture and OS.

AssignmentsAssignments L2: Optimizing Code Performance

Page 5: Introduction to ECE 454 Computer Systems Programming Topics: Lecture topics and assignments Profiling rudiments Lab schedule and rationale Cristiana Amza

– 5 –

Virtual memory (3) Virtual memory (3)

TopicsTopics Virtual memory, dynamic memory allocation Includes aspects of architecture and OS

AssignmentsAssignments L3: Writing your own malloc package

Page 6: Introduction to ECE 454 Computer Systems Programming Topics: Lecture topics and assignments Profiling rudiments Lab schedule and rationale Cristiana Amza

– 6 –

Concurrency (4) Concurrency (4)

TopicsTopics concurrency, threads. includes some aspects of networking, OS, and architecture.

AssignmentsAssignments L4: Code parallelization for improved performance.

Page 7: Introduction to ECE 454 Computer Systems Programming Topics: Lecture topics and assignments Profiling rudiments Lab schedule and rationale Cristiana Amza

– 7 –

Concurrency and the Architecture (5) Concurrency and the Architecture (5)

TopicsTopics The connection between lock/mutex and cache coherence Various lock-based and lock-free parallelization schemes

and standards Other parallel programming standards

AssignmentsAssignments L5: Parallel Code Optimization (game code)

Page 8: Introduction to ECE 454 Computer Systems Programming Topics: Lecture topics and assignments Profiling rudiments Lab schedule and rationale Cristiana Amza

– 8 –

Module 1: code optimization principles, and profiling

Page 9: Introduction to ECE 454 Computer Systems Programming Topics: Lecture topics and assignments Profiling rudiments Lab schedule and rationale Cristiana Amza

– 9 –

Convention: Cycles Per ElementConvention: Cycles Per Element Convenient way to express performance of program that

operates on vectors or lists Length = n T = CPE*n + Overhead

0

100

200

300

400

500

600

700

800

900

1000

0 50 100 150 200

Elements

Cyc

les

vsum1Slope = 4.0

vsum2Slope = 3.5

Page 10: Introduction to ECE 454 Computer Systems Programming Topics: Lecture topics and assignments Profiling rudiments Lab schedule and rationale Cristiana Amza

– 10 –

Clock CyclesClock Cycles

Most computers controlled by high frequency clockMost computers controlled by high frequency clock Examples

100 MHz

» 108 cycles per second

» Clock period = 10ns2 GHz

» 2 X 109 cycles per second

» Clock period = 0.5ns

Page 11: Introduction to ECE 454 Computer Systems Programming Topics: Lecture topics and assignments Profiling rudiments Lab schedule and rationale Cristiana Amza

– 11 –

Role of Optimizing CompilersRole of Optimizing Compilers

Provide efficient mapping of program to machineProvide efficient mapping of program to machine register allocation code selection and ordering eliminating minor inefficiencies

Don’t (usually) improve asymptotic efficiencyDon’t (usually) improve asymptotic efficiency up to programmer to select best overall algorithm big-O savings are (often) more important than constant

factorsbut constant factors also matter

Page 12: Introduction to ECE 454 Computer Systems Programming Topics: Lecture topics and assignments Profiling rudiments Lab schedule and rationale Cristiana Amza

– 12 –

Role of Optimizing CompilersRole of Optimizing Compilers

Provide efficient mapping of program to machineProvide efficient mapping of program to machine register allocation code selection and ordering eliminating minor inefficiencies

Don’t (usually) improve asymptotic efficiencyDon’t (usually) improve asymptotic efficiency up to programmer to select best overall algorithm big-O savings are (often) more important than constant

factorsbut constant factors also matter

Have difficulty overcoming “optimization blockers”Have difficulty overcoming “optimization blockers” potential memory aliasing potential procedure side-effects

Page 13: Introduction to ECE 454 Computer Systems Programming Topics: Lecture topics and assignments Profiling rudiments Lab schedule and rationale Cristiana Amza

– 13 –

Limitations of Optimizing CompilersLimitations of Optimizing CompilersOperate Under Fundamental ConstraintOperate Under Fundamental Constraint

Must not cause any change in program behavior under any possible condition

Often prevents it from making optimizations when would only affect behavior under pathological conditions.

Most analysis is performed only within proceduresMost analysis is performed only within procedures whole-program analysis is too expensive in most cases

Most analysis is based only on Most analysis is based only on staticstatic information information compiler has difficulty anticipating run-time inputs

When in doubt, the compiler must be conservativeWhen in doubt, the compiler must be conservative

Page 14: Introduction to ECE 454 Computer Systems Programming Topics: Lecture topics and assignments Profiling rudiments Lab schedule and rationale Cristiana Amza

– 14 –

Role of ProgrammerRole of ProgrammerHow should I write my programs, given that I have a good,

optimizing compiler?

Don’t: Smash Code into OblivionDon’t: Smash Code into Oblivion Hard to read, maintain, & assure correctness

Do:Do: Select best algorithm Write code that’s readable & maintainable

Procedures, recursionEven though these factors can slow down code

Eliminate optimization blockersAllows compiler to do its job

Focus on Inner LoopsFocus on Inner Loops Do detailed optimizations where code will be executed

repeatedly Will get most performance gain here

Page 15: Introduction to ECE 454 Computer Systems Programming Topics: Lecture topics and assignments Profiling rudiments Lab schedule and rationale Cristiana Amza

– 15 –

Performance (1) ToolsPerformance (1) Tools

MeasurementMeasurement Accurately compute time taken by code

Most modern machines have built in cycle countersUsing them to get reliable measurements is tricky

Profile procedure calling frequenciesUnix tool gprof

Page 16: Introduction to ECE 454 Computer Systems Programming Topics: Lecture topics and assignments Profiling rudiments Lab schedule and rationale Cristiana Amza

– 16 –

Code Profiling ExampleCode Profiling ExampleTaskTask

Count word frequencies in text document Produce sorted list of words from most frequent to least

StepsSteps Convert strings to lowercase Apply hash function Read words and insert into hash table

Mostly list operations Maintain counter for each unique word

Sort results

Data SetData Set Collected works of Shakespeare 946,596 total words, 26,596 unique Initial implementation: 9.2 seconds

29,80129,801 thethe

27,52927,529 andand

21,02921,029 II

20,95720,957 toto

18,51418,514 ofof

15,37015,370 aa

1401014010 youyou

12,93612,936 mymy

11,72211,722 inin

11,51911,519 thatthat

Shakespeare’s

most frequent words

Page 17: Introduction to ECE 454 Computer Systems Programming Topics: Lecture topics and assignments Profiling rudiments Lab schedule and rationale Cristiana Amza

– 17 –

Code ProfilingCode ProfilingAugment Executable Program with InstrumentationAugment Executable Program with Instrumentation

Computes (approximately) amount of time spent in each function

Time computation methodPeriodically (~ every 10ms) interrupt programDetermine what function is currently executing Increment its timer by interval (e.g., 10ms)

Also maintains counter for each function indicating number of times called

Page 18: Introduction to ECE 454 Computer Systems Programming Topics: Lecture topics and assignments Profiling rudiments Lab schedule and rationale Cristiana Amza

– 18 –

Code ProfilingCode ProfilingAugment Executable Program with InstrumentationAugment Executable Program with Instrumentation

Computes (approximately) amount of time spent in each function

Time computation methodPeriodically (~ every 10ms) interrupt programDetermine what function is currently executing Increment its timer by interval (e.g., 10ms)

Also maintains counter for each function indicating number of times called

UsingUsinggcc –O2 –pg prog.c –o prog./prog

Executes in normal fashion, but also generates file gmon.out

gprof progGenerates profile information based on gmon.out

Page 19: Introduction to ECE 454 Computer Systems Programming Topics: Lecture topics and assignments Profiling rudiments Lab schedule and rationale Cristiana Amza

– 19 –

Profiling ResultsProfiling Results

Call StatisticsCall Statistics Number of calls and cumulative time for each function

Performance LimiterPerformance Limiter Using inefficient sorting algorithm Single call uses 87% of CPU time

% cumulative self self total time seconds seconds calls ms/call ms/call name 86.60 8.21 8.21 1 8210.00 8210.00 sort_words 5.80 8.76 0.55 946596 0.00 0.00 lower1 4.75 9.21 0.45 946596 0.00 0.00 find_ele_rec 1.27 9.33 0.12 946596 0.00 0.00 h_add

Page 20: Introduction to ECE 454 Computer Systems Programming Topics: Lecture topics and assignments Profiling rudiments Lab schedule and rationale Cristiana Amza

– 20 –

Code OptimizationsCode Optimizations

First step: Use more efficient sorting function Library function qsort

0

1

2

3

4

5

6

7

8

9

10

Initial Quicksort Iter First Iter Last Big Table Better Hash Linear Lower

CP

U S

ec

s. Rest

Hash

Lower

List

Sort

Page 21: Introduction to ECE 454 Computer Systems Programming Topics: Lecture topics and assignments Profiling rudiments Lab schedule and rationale Cristiana Amza

– 21 –

Further OptimizationsFurther Optimizations

Iter first: Use iterative function to insert elements into linked listCauses code to slow down

Iter last: Iterative function, places new entry at end of listTend to place most common words at front of list

Big table: Increase number of hash buckets Better hash: Use more sophisticated hash function Linear lower: Move strlen out of loop

0

0.2

0.4

0.6

0.8

1

1.2

1.4

1.6

1.8

2

Initial Quicksort Iter First Iter Last Big Table Better Hash Linear Lower

CP

U S

ec

s. Rest

Hash

Lower

List

Sort

Page 22: Introduction to ECE 454 Computer Systems Programming Topics: Lecture topics and assignments Profiling rudiments Lab schedule and rationale Cristiana Amza

– 22 –

Profiling ObservationsProfiling Observations

BenefitsBenefits Helps identify performance bottlenecks Especially useful when have complex system with many

components

LimitationsLimitations Only shows performance for data tested E.g., linear lower did not show big gain, since words are

shortQuadratic inefficiency could remain lurking in code

Timing mechanism fairly crudeOnly works for programs that run for > 3 seconds

Page 23: Introduction to ECE 454 Computer Systems Programming Topics: Lecture topics and assignments Profiling rudiments Lab schedule and rationale Cristiana Amza

– 23 –

Lab Rationale Lab Rationale

Each lab well-defined goal such as determining the Each lab well-defined goal such as determining the bottleneck of a program or a specific optimization. bottleneck of a program or a specific optimization. A (small) portion of some labs will be awarded for winning a

performance contest or student-driven optimizations. We try to use competition in a fun and healthy way. Set a threshold for full credit. Might post some results (anonymized) on Web page for

glory!

Page 24: Introduction to ECE 454 Computer Systems Programming Topics: Lecture topics and assignments Profiling rudiments Lab schedule and rationale Cristiana Amza

– 24 –

Lab Rationale Lab Rationale

Doing a lab should result in new skills and conceptsDoing a lab should result in new skills and concepts Profiling Lab: basic performance profiling, finding the

bottleneck. Programming for cache: profiling, measurement, locality

enhancements. Malloc Lab: understanding dynamic memory allocation Code Parallelization: multithreading of simple code. Parallel Code Optimization: putting all techniques together

on simple game code parallelization

Page 25: Introduction to ECE 454 Computer Systems Programming Topics: Lecture topics and assignments Profiling rudiments Lab schedule and rationale Cristiana Amza

– 25 –

Good Luck!Good Luck!