Multicore Processors: Architecture & Programming
Prof. Mohamed Zahran   (aka Prof. Z)
mzahran AT cs DOT nyu DOT edu
Thursdays 5:10-7:00 pm  Location: WWH 1302
Office Hours: Tuesdays 4:30-6:30pm (WWH 320)


Welcome students! ... to the Multicore Processors: Architecture & Programming course, edition Fall 2013.  I will keep updating this page regularly. If you have questions related to that course feel free to email me at mzahran (at) . Here is some basic information:

Mailing List

Sign up for the Mailman mailing list for the course, if the system hasn't signed you already. 
You can do so by clicking here. Please follow the mailing list etiquette. 
  • Use the Reply command to contribute to the current thread, but NOT to start another topic.
  • If quoting a previous message,  try to trim off irrelevant parts.
  • Use a descriptive Subject: field when starting a new topic.
  • Do not use one message to ask two unrelated questions.
  • Do NOT make the mistake of sending your completed project assignment to the mailing list!

  • Lectures

    1. 9/5Multicore/Manycore Revolution   
    • Section 1.2 from #1 
    • the whole #2
    2 .9/12Parallelism and Concurrency
    • Sections 2.2 and 2.3 in #1
    • Section 2 from #3
    • Section 1.2 from #4
    3. 9/19Know Your Hardware
    • Chp 1 from #5
    • Chp 2 from #6
    • hw1 assigned
    4. 9/26Overview of Parallel Programming
    • 3.1, 3.2, and 3.3 from #1
    5. 10/3Threads ... Pthreads
    • lab1 assigned
    • Proj description report due
    6. 10/10OpenMP
    • lab2 assigned
    7. 10/17More Programming Models
    •  Sections 3-6 from #3
    • hw2 assigned
    8. 10/24Performance Evaluation
    • #9
    • Section 2.1, 2.2, 2.3, 2.4 from #10
    • #11
    • Proj: literature survey report due
    9. 10/31Heterogeneous Multicore
    • #12
    • #13

    10. 11/7Transactional Memory
    • #14 Sections 1.3, beginning of chp 2 till end of 2.1
    • #15
    • Proj. Design and experimental setup report due
    11. 11/14Looking Ahead
    • lab3 assigned
    12. 11/21Putting It All Together
    • hw3 assigned
    13. 12/5Project Presentations
    • Proj: Final report due
    14. 12/12Project Presentations

    Reading Material

    Below you will find the reading material we will use in this course.
    Next to each lecture, above, you will find the reading assignment. 
    It indicates a number, corresponding to the list below, and section(s) to read from that material.
    If no section numbers  are indicated, it means you need to read the whole thing.
    1.  Parallel Programming for Multicore and Cluster Systems (You must be logged into NYU network)
    2. Herb Sutter, The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software, Dr. Dobb's Journal, 30(3), March 2005.
    3. How to survive the multicore software revolution?
    4. Chip Multiprocessor Architecture: Techniques to Improve Throughput and Latency   (You must be logged into NYU network)
    5. The Memory System: You Can't Avoid It, You Can't Ignore It, You Can't Fake It   (You must be logged into NYU network)
    6. A Primer on Memory Consistency and Cache Coherence   (You must be logged into NYU network)
    7. The Problem With Threads
    8. Serialization Sets: A Dynamic Dependence-Based Parallel Execution Model
    9. IPC considered harmful for multiprocessor workloads
    10. Computer Architecture Performance Evaluation Methods (You must be logged into NYU network)
    11. Effective Performance Measurement and Analysis of  Multithreaded Applications
    12. Single-ISA Heterogeneous Multi-Core Architectures for Multithreaded Workload Performance
    13. The Impact of Performance Asymmetry in Emerging Multicore Architectures
    14. Transactional Memory (You must be logged into NYU network)
    15. Unlocking Concurrency


    In many of the labs, we will be using the multi2sim simulator.
    Here are the steps to set it up:
    1. Download this file on your CIMS account.
    2. tar -xvf  multi2sim-4.2.tar.gz
    3. You must now a directory called: multi2sim-4.2
    4. cd multi2sim-4.2
    5. ./configure
    6. make
    7. You must now have a subdirectory called bin
    8. cd bin
    9. The simulator is called m2s  

    lab1: [Due Oct 15th]  You will need memory configuration and cpu configuration  files to this lab.
    If you get errors due to the lack of 32-bit libraries, you can use the following legacy 32-bit machine for compilation.    

    lab2: [Due Oct 17th]  You will use the CIMS machine for this lab.

    lab3 [Due Nov 21st]  You will use  multi2sim simulator and this configuration file.

    Homeworks Assignments 

    HW1 Due Sep 26 - sol -   Comments

    HW2 Due  Oct 24 - sol -   Comments

    HW3 Due Dec 5th  - comments


    You are free to pick your own project, after you discuss its idea with me first.
    However, here is a list of suggested projects that you can pick from. 

    1. Project description report - 5% - Due Oct 3rd
    2. Literature survey report - 10% -  Due Oct 29th
    3. Design and experimental setup report - 10% -  Due Nov 7th
    4. Final report - 15% - Due Dec 5th
    5. Presentation - 10% - Dec 5th and 12th
    Schedule of Presentations
    (Note: Presentation lists are ordered)
    Day 1: Dec 5th
    1. Interconnection aware application:  Jianfeng Lin and Kanwarpreet Randhawa
    2. Linux commands parallelization: Tao Feng and  Yisheng Liao
    3. Intellgent Scalability: Abhinand Sundararajan  and  Anshul Jain
    4. Code Scalability Predictor: Yang Cui
    5. Multi-Dimentional tree parallelization: Yumin Lee
    Day 2: Dec 12th
    1. Program-aware Interconnect: Numair Khan
    2. Best Interconnect Selection: Charles Drews
    3. OpenMP vs Cilk: Shitian Ren
    4. Concurrency in Java and C++: Keyi Chen
    5. Memory Page Replacement: Darshit Dave
    6. Parallel Programming with Python: Shichao An

    Interesting Links (Geeky Stuff)

    If you have an interesting link, please email it to the instructor and it will find its way to this page (with an acknowledgment to you of course!).

    Future Chips (targeting both software and hardware folks interested in parallel programming)

    Designing and Building Parallel Programs

    Multicore info

    The trouble with multicore

    Computer Architecture

    Introduction to parallel computing

    The Landscape of Parallel Computing

    Designing and Building Parallel Programs