What This Document Is
This is a programming assignment for CS 625: Parallel and Distributed Computing at the University of San Francisco. It challenges students to implement a specific sorting algorithm – Sample Sort – using Pthreads in C. The assignment focuses on applying parallel processing techniques to improve the efficiency of a common computational task. It requires students to manage threads, handle file input, and carefully consider data partitioning strategies.
Why This Document Matters
This assignment is crucial for students learning to leverage the power of parallel computing. Successfully completing it demonstrates an understanding of how to break down problems into smaller, concurrently executable tasks. It’s particularly valuable for those pursuing careers in high-performance computing, data science, or any field requiring efficient processing of large datasets. Students will benefit from working through this assignment during their studies of parallel algorithms and threading models. It’s designed to solidify theoretical knowledge with practical implementation experience.
Common Limitations or Challenges
This document outlines the assignment requirements and the theoretical background of Sample Sort. It does *not* provide a complete, ready-to-run solution. Students will need to independently develop the C code, debug it, and optimize its performance. The assignment assumes a foundational understanding of C programming, Pthreads, and basic sorting concepts. It also doesn’t cover detailed error handling strategies or advanced optimization techniques beyond the core requirements.
What This Document Provides
* A detailed description of the Sample Sort algorithm and its relationship to Bucket Sort.
* Specific instructions regarding command-line arguments, including the number of threads, sample size, list size, input file name, and an optional output suppression flag.
* Requirements for file input and output formatting.
* Guidance on data partitioning for parallel processing using a block partitioning strategy.
* Recommendations for random number generation and avoiding duplicate sample selections within each thread.
* Clear expectations for performance measurement (elapsed time) and reporting.