Archipelago群岛 · 公开课笔记

COURSE · algorithm_engineer

算法工程

6.5060/6.827 Algorithms Engineering Prerequisites

0 篇编号讲义 · 0 篇内容 · 0 个已标注 tags
DOMAIN
编程与软件工程
STATUS
complete
COURSE ID
未标注
RELATIONS
暂无结构化数据

LECTURE NOTES · 0

来自目录与 frontmatter
#TITLESTATUSTAGSUPDATED

课程资料与说明

来自课程 index.md

Introduction

6.5060/6.827 Algorithms Engineering

Prerequisites

This is a graduate-level course where we will cover research in algorithm engineering. Advanced undergraduates may enroll if they have taken 6.122 (6.046) and 6.106 (6.172)

Course Description

This is a research-oriented course on algorithm engineering, which will cover both the theory and practice of algorithms and data structures. Students will learn about models of computation, algorithm design and analysis, and performance engineering of algorithm implementations. We will study the design and implementation of sequential, parallel, cache-efficient, external-memory, and write-efficient algorithms for fundamental problems in computing. Many of the principles of algorithm engineering will be illustrated in the context of parallel algorithms and graph problems. Students will read and present research papers, write paper reviews, complete problem sets, participate in classroom discussions, and complete a semester-long research project. Class time will consist of lectures, student presentations, and group project meetings. This course is suitable for graduate students or advanced undergraduates who have taken 6.122 (6.046) and 6.106 (6.172). Mathematical maturity and familiarity with algorithm analysis and performance engineering will be assumed. Lectures will consist of instructor and student presentations. Lecture attendance is required and participation counts toward the grade.

Textbook

Introduction to Algorithms, 4th Edition by Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest, and Clifford Stein (CLRS)

Algorithm Engineering: Bridging the Gap Between Algorithm Theory and Practice

Networks, Crowds, and Markets by David Easley and Jon Kleinberg

A list of papers related to graph analytics

Schedule

DateTopicSpeakerRequired ReadingOptional Reading
Tuesday 2/7Course IntroductionJulian ShunAlgorithm Engineering - An Attempt at a Definition A Theoretician's Guide to the Experimental Analysis of Algorithms SlidesAlgorithm Engineering: Bridging the Gap Between Algorithm Theory and Practice
A Guide to Experimental Algorithmics
Algorithm engineering: an attempt at a definition using sorting as an example

Algorithm Engineering for Parallel Computation
Distributed Algorithm Engineering
Experimental algorithmics
Programming Pearls
Smoothed analysis of algorithms: Why the simplex algorithm usually takes polynomial time
Thursday 2/9Parallel AlgorithmsJulian ShunParallel Algorithms Thinking in Parallel: Some Basic Data-Parallel Algorithms and Techniques (Chapters 4-8) CLRS Chapter 26 (Parallel Algorithms) SlidesPrefix Sums and Their Applications
Algorithm Design: Parallel and Sequential Introduction to Parallel Algorithms Scheduling
Multithreaded Computations by Work Stealing
Thread Scheduling for Multiprogrammed Multiprocessors Multidimensional Included and Excluded Sums Work-Efficient Parallel Algorithms for Accurate Floating-Point Prefix Sums Problem Based Benchmark Suite
Tuesday 2/14Cache-Oblivious AlgorithmsCharles LeisersonCache-Oblivious Algorithms Cache-Oblivious Algorithms and Data Structures SlidesEngineering a cache-oblivious sorting algorithm Cache Oblivious Distribution Sweeping Cache-oblivious databases: Limitations and opportunities An Optimal Cache-Oblivious Priority Queue and Its Application to Graph Algorithms Cache-Oblivious B-Trees Cache-oblivious streaming B-trees An experimental comparison of cache-oblivious and cache-conscious programs
Thursday 2/16CilkAlexandros-Stavros IliopoulosThe Implementation of the Cilk-5 Multithreaded Language Scheduling Multithreaded Computations by Work Stealing SlidesThread Scheduling for Multiprogrammed Multiprocessors The Data Locality of Work Stealing
Tuesday 2/21No class
Thursday 2/23Stencil ComputationsRezaul ChowdhuryCache oblivious stencil computations Fast Stencil Computations using Fast Fourier Transforms SlidesThe cache complexity of multithreaded cache oblivious algorithms The pochoir stencil compiler
Tuesday 2/28Shared-Memory Graph ProcessingJulian ShunA Simple and Practical Linear-Work Parallel Algorithm for Connectivity Slides Chapters 7-8 of Shared-Memory Parallelism Can Be Simple, Fast, and Scalable SlidesDirection-Optimizing Breadth-First Search Parallel Graph Decompositions Using Random Shifts Shared Memory Graph Frameworks Chapter 14 of Networks, Crowds, and Markets
Thursday 3/2Storage SystemsMartin Farach-ColtonDon't thrash: how to cache your hash on flash SplinterDB: Closing the Bandwidth Gap for NVMe Key-Value StoresThe input/output complexity of sorting and related problems Algorithms and Data Structures for External Memory
Monday 3/6Problem Set due today
Tuesday 3/7Software Productivity Tools for Fork-Join ProgramsCharles LeisersonEfficient detection of determinacy races in Cilk programs The Cilkprof Scalability Profiler Slides
Thursday 3/9Pre-proposal Meeting
Tuesday 3/14Sorting AlgorithmsChristopher Rinard Julian ShunEngineering In-place (Shared-memory) Sorting Algorithms Slides Theoretically-Efficient and Practical Parallel In-Place Radix Sorting SlidesSuper Scalar Sample Sort Parallel Merge Sort Parallelism in Randomized Incremental Algorithms Optimal and sublogarithmic time randomized parallel sorting algorithms A comparison of sorting algorithms for the connection machine CM-2 Efficient implementation of sorting on multi-core SIMD CPU architecture Sorting Data on Ultra-Large Scale with RADULS Even Faster Sorting of (Not Only) Integers Highly scalable parallel sorting A Memory Bandwidth-Efficient Hybrid Radix Sort on GPUs Designing efficient sorting algorithms for manycore GPUs TritonSort: A Balanced Large-Scale Sorting System A comprehensive study of main-memory partitioning and its application to large-scale comparison- and radix-sort Practical Massively Parallel Sorting Engineering a Multi-core Radix Sort PARADIS: An Efficient Parallel Algorithm for In-place Radix Sort Parallel In-Place Algorithms: Theory and Practice Sort Benchmark
Thursday 3/16Shared-Memory Graph AlgorithmsEeshan Tripathii Ethan LaBelleParallel Graph Decompositions Using Random Shifts Slides Ordering heuristics for parallel graph coloring SlidesImproved Parallel Algorithms for Spanners and Hopsets Theoretically Efficient Parallel Graph Algorithms Can Be Fast and Scalable High-Performance Parallel Graph Coloring with Strong Guarantees on Work, Depth, and Quality
Friday 3/17Project Proposal due today
Tuesday 3/21Distributed Graph FrameworksJesse Yang Richard SolleePregel: A System for Large-Scale Graph Processing Slides PowerGraph: Distributed Graph-Parallel Computation on Natural Graphs SlidesDistributed Memory Graph Frameworks
Thursday 3/23Single-Machine Graph FrameworksJulian Shun CJ Quines Nikola SamardzicScalability! But at what COST? Slides GraphChi: Large-Scale Graph Computation on Just a PC* Slides Executing Dynamic Data-Graph Computations Deterministically Using Chromatic Scheduling* Slides (Pick one of the starred papers to write your review on.)Shared Memory Graph Frameworks External Memory Graph Frameworks
Tuesday 3/28Spring Break
Thursday 3/30Spring Break
Tuesday 4/4Locality in Graph ProcessingIsabelle Quaye Kevin TongReducing Pagerank Communication via Propagation Blocking Slides Making Caches Work for Graph Analytics SlidesGraphIt: A High-Performance DSL for Graph Analytics Locality Optimizations Shared Memory Graph Frameworks
Thursday 4/6Subgraph FindingDeniz Sert Collin WarnerGraphMineSuite: Enabling High-Performance and Programmable Graph Mining Algorithms with Set Algebra Slides ProbGraph: High-Performance and High-Accuracy Graph Mining with Probabilistic Set Representations SlidesSubgraph Finding
Tuesday 4/11Graph Compression and ReorderingEric Wang Nick DowLog(graph): a near-optimal high-performance graph representation Slides Locality Analysis of Graph Reordering Algorithms SlidesAn Experimental Analysis of a Compact Graph Representation Compact Representations of Separable Graphs Chapter 8 of Shared-Memory Parallelism Can Be Simple, Fast, and Scalable Graph Compression Graph Partitioning and Reordering
Thursday 4/13CompressionKrit Boonsiriseth Giorgi KldiashviliDecoding billions of integers per second through vectorization Slides Techniques for Inverted Index Compression SlidesAn Experimental Study of Bitmap Compression vs. Inverted List Compression Stream VByte: Faster byte-oriented integer compression Roaring bitmaps: Implementation of an optimized software library SIMD compression and the intersection of sorted integers A General SIMD-Based Approach to Accelerating Compression Algorithms Lightweight Data Compression Algorithms: An Experimental Survey Compact inverted index storage using general-purpose compression libraries An Extended Compression Format for the Optimization of Sparse Matrix-Vector Multiplication SparseX: A Library for High-Performance Sparse Matrix-Vector Multiplication on Multicore Platforms
Tuesday 4/18Dynamic Graph Algorithms Midterm report due todayTemi Taylor Thomas BergamaschiA New Parallel Algorithm for Connected Components in Dynamic Graphs Slides Work-Efficient Parallel Union-Find SlidesDynamic Graph Algorithms Streaming Graph Frameworks
Thursday 4/20Transactional MemoryLuka Govedic Elie CuevasSoftware transactional memory Slides A simple deterministic algorithm for guaranteeing the forward progress of transactions Slides
Tuesday 4/25AggregationAnton Ni Adam JanickiCache-Efficient Aggregation: Hashing Is Sorting Slides Efficient Sorting, Duplicate Removal, Grouping, and Aggregation SlidesA Top-Down Parallel Semisort Multi-Core, Main-Memory Joins: Sort vs. Hash Revisited Main-Memory Hash Joins on Modern Processor Architectures Sort vs. Hash Join Revisited for Near-Memory Execution Many-query join: efficient shared execution of relational joins on modern hardware An Experimental Comparison of Thirteen Relational Equi-Joins in Main Memory Optimal and sublogarithmic time randomized parallel sorting algorithms
Thursday 4/27Functional TreesJulian ShunLow-Latency Graph Streaming Using Compressed Purely-Functional Trees Slides PaC-trees: supporting parallel and compressed purely-functional collectionsStreaming Graph Frameworks
Tuesday 5/2Graph Neural NetworksSteven Raphael Helen YangLightNE: A Lightweight Graph Processing System for Network Embedding Slides Accelerating Training and Inference of Graph Neural Networks with Fast Sampling and Pipelining SlidesMarius: Learning Massive Graph Embeddings on a Single Machine ThunderRW: An In-Memory Graph Random Walk Engine Random Walks on Huge Graphs at Cache Efficiency Graph Representation Learning Book CS224W: Machine Learning with Graphs (Stanford course)
Thursday 5/4Random Number Generation and Multidimensional SumsMaximo Machado Derrick LiangDeterministic parallel random-number generation for dynamic-multithreading platforms Slides Multidimensional Included and Excluded Sums Slides
Tuesday 5/9Progress in algorithms: the big trendsNeil ThompsonHow Fast Do Algorithms Improve? Building the algorithm commons: Who discovered the algorithms that underpin computing in the modern enterprise?
Thursday 5/11Revisiting Matrix MultiplicationTao SchardlSlides
Tuesday 5/16Project Presentations Final report due today