CudaChessBot

Kevin Lee and Manik Panwar

Schedule:

  1. Week 1: Come up with outline of the solution and an initial approach to parallelism - DONE
  2. Week 2: Have the sequential implementation working - DONE
  3. Week 3: Parallelise sequential implementation to come up with parallel implementation - WORKING ON THIS v1. Midpoint
  4. Week 4 (1/2): Finish Parallel implementation during Thanksgiving break - Manik and Kevin
  5. Week 4 (1/2): Do profiling tests on the implementation to come up with potential areas of improvement. Iterate.
  6. Week 5 (1/2): BugFixes and Testing for Chess Game - Kevin | BugFixes and Testing for minimax - Manik
  7. Week 5 (1/2): Iterate on implementation to better performance. Stretch Goal: Implement the solution on CPU and see how the performance is affected as compared to GPU w/ CUDA. - Stretch Goal DONE because we started off with this AI implementation
  8. Week 6: Prepare final project writeup and presentation.

Summary

We started off trying to find good c++ implementations of chess but couldn't find something that worked well with how we wanted it to work with the AI in terms of interface. So we finally decided to write our own implementation of Chess in C++ which we finished a few days back. We also parallely worked on the AI and have written a complete implementation of minimax with alpha beta pruning and now all that is left is to convert this CPU AI to a Cuda AI using kernels ( this should be easier now since we have all the logic). We also expect to get more work done this week because of Thanksgiving break.
In terms of goals and deliverables, we have outlined those in the schedule. In particular we did our stretch goal of a CPU implementation first rather than coming up with a Cuda implementation to start off with.
We plan on having a demo of our AI playing chess along with a poster.
One issue that concerns us is measuring performance and whether the benchmark should be a sequential CPU implementation or our Cuda code running on just one thread.