ASSIGNMENT 5 Reduction kernel


Rate this product

In this assignment, you will implement a reduction kernel with the following optimizations applied:
memory coalescing, eliminating control divergence, and using shared memory. You do not need to apply
thread coarsening.
Unlike the reduction pattern implemented in class, your implementation should follow the pattern
illustrated below. No credit will be given if you use the reduction pattern implemented in class (since the
code is already available in the slides).
Your kernel is expected to work for any set of input dimensions so make sure to handle boundary
conditions correctly. You should test your implementation on small input sizes, since the default large
input size may pass because of rounding even if boundary conditions are not handled correctly.
1. Place the files provided with this assignment in a single directory. The files are:
 contains setup and sequential code
 where you will implement your code (you should only modify this file)
 common.h: for shared declarations across and
 timer.h: to assist with timing
 Makefile: used for compilation
2. Edit where TODO is indicated to implement the reduction kernel.
3. Compile your code by running: make
4. Test your code by running: ./reduction
 If you are using the HPC cluster, do not forget to use the submission system. Do not run
on the head node!
 For testing on different input sizes, you can provide your own values for input size as
follows: ./reduction <N>
Submit your modified file via Moodle by the due date. Do not submit any other files or
compressed folders.


There are no reviews yet.

Be the first to review “ASSIGNMENT 5 Reduction kernel”

Your email address will not be published. Required fields are marked *

Scroll to Top