FJava: Fork Join for Java

By: Ankit Agarwal and Iosef Kaver


Schedule

  • Thursday, April 2nd:
    • Create project website. DONE
    • Finish project specification. DONE
  • Week of April 5th-April 11th:
    • Design of the FJava API. DONE
    • Design and implement several test suites. Problems may include:
      • Sorting. DONE
      • Matrix Multiplication. DONE
      • For-loop chunking (applications may include map, filter, reduce). DONE
      • Fibonacci. DONE
      • Karatsuba DONE
    • Understand different scheduling and work stealing algorithms. DONE
    • Naive implementation based on the API, with no job stealing. DONE
    • Implement sync, add task. DONE
    • Implemented full version of the API, with two work stealing algorithms: Sender Initiated Deques and Receiver Initiated Deques. DONE
  • Week of April 12th, April 18th: Thursday, April 16th: Project checkpoint
    • Reevaluate design of the API. Make changes if needed. DONE
    • Read research paper on a some scheduling and work stealing algorithms. DONE
    • Finish implementation with at least one scheduling and work stealing algorithm. DONE
    • Evaluate system performance and understand the bottlenecks. DONE
  • Week of April 19th, April 26th:
    • Implement and experiment with other scheduling and work stealing algorithms. DONE
    • Start work on building the metric collection framework. DONE
    • Investigate Guava Stopwatch issue. DONE
    • Get the code running on the GHC or Unix machines. DONE
    • Collect metrics in the GHC and Unix machines. Make appropriate changes with the results. DONE
    • Investigate scalability of the framework with a higher number of cores. Does the framework work well in a 10 core machine? DONE
  • Week of April 27th, May 3rd:
    • Test the new work stealing algorithm. Try different scheduling policies. DONE
    • Finish work on metric collection framework. DONE
    • Evaluate system performance and fine tune different parameters. DONE
  • Week of May 4th, May 11th: Project presentation
    • Try to finish stretch goals.
    • Polish final write up.
    • Create final graphs for the presentation.
    • Setup for the demo.