Table of Contents

Submission

Read about the Honor Code

You are required to read our CSC4700 syllabus and the Honor Code before submitting assignments. Do this now before proceeding to the final step.

Submitting the Assignment

Once you’ve finished everything, you are ready to submit your work. You are submitting your assignment results as commits that have to be pushed to the github repository. The section about staging and committing changes in VSCode gives you a good introduction on how to do this.

Here is a list of things you’re expected to submit as part of this assignment:

  • Warmup
    • Generate the roofline graphs
  • More Warmup
    • Modify the code for two_norm_r in work/include/matrix_operations.cpp
    • Modify the code for two_norm_s in work/include/matrix_operations.cpp
    • Fix the implementation of partitioned_two_norm_a in work/more_warmup/norm/pnorm.hpp
    • Complete the function partitioned_two_norm_a in work/more_warmup/normfnorm.hpp
    • Complete the body of cyclic_two_norm in work/more_warmup/normcnorm.hpp
    • Complete the implementation recursive_two_norm_a in work/more_warmup/normrnorm.hpp
    • Implement the safe-to-implement parallel algorithms as the appropriate overloaded member functions in work/include/CSCMatrix.hpp and work/include/CSRMatrix.hpp
    • Answer the questions in results/answers.md
  • Parallelism
    • Using HPX, parallelize the norm functions in the file work/include/norms.hpp
    • Answer the questions in results/answers.md
  • Buddhabrot
    • Implement a thread-safe queue using a mutex and a condition variable
    • Change your Buddhabrot implementation from Assignment 2 to use threads and the concurrent queue for parallelization
      • Implement the producer function generate_buddhabrot_trajectories
    • Add a new command line option -t/--threads to specify the number of threads to use
      • Add verification of the new command line argument
    • Answer the questions in results/answers.md
    • Add the generated Buddhabrot images bb512.bmp and bb768.bmp for the following command lines as part of your submission:

      ./build/buddhabrot -s 512 -p 1000000 -i 1000 -t 4 -o ../results/bb512.bmp 
      ./build/buddhabrot --size 768 --points 1000000 --iters 5000 --threads 2 --output ../results/bb768.bmp 
      

Please also note, that once you push to your repository, Github will compile and run your code automatically. This will result in a green check mark being added to the home page of your repository, telling you that all tests have successfully passed. If you see a red cross instead, then one or more of the tests in your code have failed and you will have to debug your code. Simply commit and push again once you have fixed the problems.

There is also an introduction to Git available that describes the overall concepts and the use of Git from a command line. It also answers some frequently asked questions.

We have a Github tutorial you might want to have a look at as well.

Last but not least, you can have a look at this document if you are interested in knowing more about Github Classroom.

And that’s it! You’re done!