Introducing Students to MapReduce using Phoenix++

This page authored by Suzanne J. Matthews, United States Military Academy, based on the Phoenix++ MapReduce library developed by Christos Kozyrakis at Stanford University.
Author Profile

Summary

Phoenix++ is a shared memory implementation of MapReduce that can leverage multicore architectures. As a result, it is a very useful way to introduce students to MapReduce, and demonstrate speedup with the paradigm. This module provides a gentle introduction to MapReduce and the Phoenix++ MapReduce framework. Students trace through a simplified version of the the word_count application provided with Phoenix++, and complete simple exercises to benchmark and modify the code.

Module Characteristics

Languages Supported: , , C++, ,
Relevant Parallel Computing Concepts: , Task Parallelism, , Shared Memory,
Recommended Teaching Level: Introductory, Intermediate,
Possible Course Use: , Computational Theory, , , Operating Systems,


Learning Goals

Describe the motivation for MapReduce and automated parallel frameworks.
Explain how a simple problem (Word Count) is parallelized using MapReduce.
Trace through the Phoenix++ Word Count example.
Use Phoenix++ MapReduce to yield speedups on a shared memory system.

Context for Use

I use this activity in my Computer Organization course. I also use Phoenix++ to introduce students to research.

Description and Teaching Materials

You can visit the module in your browser:

Introducing Students to MapReduce with Phoenix++

or you can download the module in either PDF format, latex, or Word format.
PDF Format: IntroducingStudentstoMapReducewithPhoenix.pdf.
Latex Format: latex.tar.gz.
Word Format: IntroducingStudentstoMapReducewithPhoenix.docx.

Full code and data archive: phoenix__-wc.tar.gz (gzip Archive 9.6MB Aug12 16)

Teaching Notes and Tips

- try the exercises out for yourself

TCPP Curriculum Elements

Assessment

References and Resources



Comment? Start the discussion about Introducing Students to MapReduce using Phoenix++