Lecture 1

prof's first time teaching course, will fill out syllabus later (topics, etc. - due to 260, 340 not being prereqs)

because of this, some material from 340 and 260 will be discussed towards beginning of course

prof may be late to class b/c previous class is far away

course book - no official textbook. original idea was to take course from prev. prof but will be major differences. may provide links for addt'l material for the course

will try to cover material in course but may assign self-study material

will assign one extra assignment to masters students (official requirement)

current grading idea - 3 assignments (4 for masters students), midterm and final exams

will try to make 340 material part interactive b/c 50% of class has taken 340 already

no attendance grade except same check as 260

grading percentages will be decided on eventually

similar rules to 260 w.r.t. homework requirements

slack - contact via stack channel, link will be in syllabus, same as 260

office hours are joint with 340 students, on days where there are classes (same as 260) - days & times tbd

language will be c++, but will be doing mpi stuff as well


first, discuss parallel computing (high-level)

then, discuss 340 material - processes, threads, synchronization

then continue to actual parallel computing material

parallel computing rationale:

methods:

however, can only take advantage of multiple cores if program is optimized for it/written with multiple cores in mind; by default just running on single core

note - only can expect a speedup proportional to core amount for parts of program that are parallelism-friendly

as a rule: if half of program can be parallelized, and other half cannot, will take at least half the unparallelized time regardless of the amount of compute thrown at it

classic parallel computing course would have discussed e.g. scientific computations. these people will typically use libraries/packages that use these techniques

but we will also discuss concurrency - have multiple cores doing different things simultaneously

concurrency is very related to parallel programming - do work on same task in parallel case; in concurrent case, different tasks/different work