You are highly encouraged to use a code version management tool such as git. This will help you to code in a team and keep track of your progress.
However, do not upload your code to public repositories. If you want to use version management for collaboration, make sure to use private repositories.
We highly recommend using Georgia Tech's Enterprise Github installation at https://github.gatech.edu/
We will also be hosting the framework code for the programming assignment on there. If you find any issues with the code framework and we have to make changes, we will publish those changes in that GitHub repository additionally to sending out the updated framework.
All the code is located at the root level of the project.
There are multiple header and .cpp files, your implementation will go into the following files:
evaluator.cpp
: Implement the sequential algorithm for polynomial evaluation to the function declaration inevaluator.h
mpi_evaluator.cpp
: Implement the parallel algorithm for polynomial evaluation to the function declaration inmpi_evaluator.h
utils.cpp
: Implement any utility functions you need while implementing your algorithms put the function declarations inutils.h
Other files containing code that you should not change are:
main.cpp
: Implements code for the main executablepoly-eval
. This does input/output reading and calling of the actual functions.io.h
: implements IO functions and random input generationconst.h
: contains constants used in the application
Utility scripts (you may play around with these to generate your own custom input):
generate_input.py
: Python script to generate inputs. You can modify this code to generate different inputs.check_output.py
: Checks whether the output fromjacobi
is correct, by comparing the output with pythons numpy implementation.
In order to compile everything, simply run
make all
./poly-eval sample-constants.txt sample-values.txt
mpirun -np 3 ./poly-eval sample-constants.txt sample-values.txt