Previous | Next --- Slide 73 of 86
Back to Lecture Thumbnails
ghostcow

A quick summary of general things to consider when evaluating an algorithm (please add on!):

  • Ability to parallelize (superscalar execution, SIMD (+ vector lane utilization), multi-threading) - opportunities can be found by looking for chunks of independent work. Also, ways to express operations in a data-parallel fashion
  • Workload imbalance
  • Communication/synchronization (as a result of parallel operators)
  • Data movement and effective use of cache (spatial and temporal locality, which affects arithmetic intensity)
  • Identification of whether a program is memory bandwidth bound or compute bound
ckk

Another thing I don't see in the slides is implementation vs abstraction. It formed a major theme in most of the topics discussed this quarter

lee

It's cool to see how many overarching ideas are connected throughout the quarter! Found myself thinking about what other ways are there to parallelize while doing the assignments, then thinking about the advantages and drawbacks of these alternatives, which was cool!

Please log in to leave a comment.