|CS 758 Course Wiki: Fall 2016||Main »
CS 758: Programming Multicore Processors (Fall 2016)
You should do this assignment alone. No late assignments.
Filelist for the assignment:
The purpose of this assignment is for you to familiarize yourself with Transactional Memory extensions to C++ and to apply them to the concurrent queues of Homework 5.
You will be using the machine named adsl-sl01.cs.wisc.edu. This is a single socket Skylake system with four cores and 8 threads. Usage procedure is detailed on piazza!
You should use GCC 6.1 for this assignment.
Step 2: Concurrent queues with Transactional Memory
For this problem, you will use C++ transactional memory support to implement a circular fixed-sized queue. As we did last time, do this in stages. You should make sure your implementation works with
TM1-4 could be the same implementation. As you are working, try to understand how the constraints on the queue---fixed size and circular---help your transactional memory implementations. Also, think about how the transactional memory hardware works when trying to understand how it will perform.
For simplicity, you may assume that the number of producer or consumer threads are always in powers of two, and that the total number of operations is always divisible exactly by the number of producers/consumers.
Problem 3: Analysis of Fixed Size Queues For this analysis, set the number of operations as 1000000 (1 zero less than HW5), queue size as 1000, and run each experiment on adsl-sl01 nodes for 3 iterations. For each graph, make sure the axes are named correctly, have title, captions and legends as needed, and in general, are self-sufficient. Use only std::memory_order_seq_cst for this portion.
Remember to rerun all of your HW5 implementations on the new machine for accurate comparison!
Tips and Tricks
What to Hand In
Please turn this homework in on paper at the beginning of lecture. You must include:
Important: Include your name on EVERY page.
|Page last modified on October 24, 2016, at 06:12 PM, visited times|