# User:Bdhunter

From REU@MU

## Overview

My research project involves studying GPU algorithms for linear transformations (matrix multiplaction, matrix factorization, vector addition, etc), which take advantage of the GPU's ability to do heavy parallel computing. The goal is to find optimal CPU and GPU work distributions in terms of time and power consumption and apply the findings to a larger scale, most notably supercomputers. I am doing this under the supervision of Professor Rong Ge.

## Project Timeline

**Week 1**

- Get familiarized with campus and computer lab
- Meet faculty mentor
- Review software and literature
- Begin preliminary testing

**Week 2**

- Use current programs to collect results on power consumption
- Read literature on power consumption and optimization
- Test different problem sizes
- Record and graph data

**Week 3**

- Analyze results with group
- Discuss ways to improve performance
- Further testing on performance and power consumption
- Focus on CPUs

**Week 4**

- Read literature on CPU and GPU power consumption
- Find the best libraries to use
- Start testing optimal clock speeds

**Week 5**

- Make conclusions about CPU speeds
- Explore performance on square and non-square matrices
- Present findings so far

**Week 6**

- Start testing with different GPU frequencies
- Look for ways of running CPU only
- Test CPU only for optimal speed

**Week 7**

- Draw conclusions about CPU only speed
- Draw conslusions about using GPUs
- Work on a dynamic schedule to save energy

**Week 8**

- Test out dynamic schedule vs a static schedule
- Compare performance and energy over various matrix sizes

**Week 9**

- Finalize results and compile data
- Make poster

**Week 10**

- Complete final paper
- Poster presentation
- Wrap up

## Weekly Log

**First Week**

- Tuesday - Campus tour
- Tuesday - Paperwork
- Tuesday - Meet mentor
- Wednesday - Read up on workload distribution of the LU algorithm
- Thursday - Run initial tests of dgetrf program for LU factorization
- Friday - Used current software to collect results on power usage

**Second Week**

- Monday - Work towards finishing data collection
- Tuesday - Review metrics for testing programs
- Wednesday - Compile results and graph data
- Thursday - Discuss with group
- Thursday - Read and modify testing source code for time calculations
- Friday - Begin looking into PLASMA
- Friday - Read up on MORSE implementation

**Third Week**

- Monday - Finish installing the MORSE library for testing
- Monday - Begin informal testing of MORSE with focus on time and Gflops/sec
- Tuesday - Create documentation on running MORSE and PLASMA tests
- Tuesday - Collect power data for running MORSE tests with 1 GPU
- Tuesday - Collect power data for MORSE running only the CPU
- Tuesday - Begin data collection of MORSE tests experimenting with different CPU speeds
- Wednesday - Create a program to calculate total energy including subdivisions of CPU and GPU energy
- Thursday - Analyze data and discuss with mentor
- Thursday - Fix errors in testing environment
- Friday - Assimilate data into graphical representations for a visual on time and energy efficiency

**Fourth Week**

- Monday - Discuss data from CPU tests with mentor
- Monday - Look for patterns in the power distribution of the MORSE and MAGMA methods and compare
- Tuesday - Test MORSE and MAGMA libraries to see which is faster
- Tuesday - Analyze source code, power results, and any other resource to determine difference
- Wednesday - Run power consumption tests on MORSE and MAGMA, compare results
- Wednesday - Read a paper on LU-factorization using GPUs from MORSE website
- Thursday - Make conclusions on MAGMA and MORSE (MAGMA is faster)
- Thursday - Discuss results with mentor
- Thursday - Keep studying MORSE throughout program to see if it works better for large matrices
- Friday - Create scripts for testing MAGMA method with variable CPU speeds
- Friday - Begin initial data collection on MAGMA optimization

**Fifth Week**

- Monday - Format data on CPU speeds into graphs, draw conclusions
- Tuesday - Retest MAGMA vs. MORSE libraries on square and non-square matrices, draw conclusions
- Wednesday - Work on presentation with other project members
- Thursday - Presentations
- Friday - Learn how to change GPU frequencies
- Friday - Write script to run GPU tests and collect data

**Sixth Week**

- Monday - Discuss GPU results with mentor, compare with CPU results
- Tuesday - Begin writing driver program to run MAGMA libraries on 16 threads and no GPUs
- Tuesday - Review makefile implementation
- Wednesday - Go over alternative ways to approach the driver program
- Thursday - Further analysis of the MAGMA library makefiles and build process
- Friday - Research the MORSE library implementation as a substitute
- Friday - Look into StarPU and determine if overhead is small

**Seventh Week**

- Monday - Write a script to collect data for 16 threads and no GPUs
- Monday - Collect data and graph the results
- Tuesday - Discuss results with mentor, note the variation in tests
- Tuesday - Conclude that running several tests and averaging them could give better results
- Wednesday - Start writing script to average results
- Thursday - Run script to average the data for 12 runs
- Friday - Discuss new results with mentor
- Friday - Run scripts again for a larger matrix size over the weekend

**Eighth Week**

- Monday - Finish data collection and graph the results
- Tuesday - Begin working on dynamic schedule
- Wednesday - Compare dynamic schedule to static schedule
- Thursday - Discuss results with mentor
- Thursday - Note the low performance and begin looking into that
- Friday - Read up on MAGMA and K20 GPU
- Friday - Work with implementing new functions to help with overhead

**Ninth Week**

- Monday - Create scripts for new test to run 6 iterations at 4 problem sizes
- Tuesday - Create scripts to run these tests for different GPU frequencies
- Tuesday - Make power draw graphs for the runs
- Wednesday - Make final poster and submit
- Thursday - Discuss new results with mentor
- Thursday - Formulate new dynamic schedule test
- Friday - Run dynamic test vs static test at 4 problem sizes

**Tenth Week**

- Monday - Discuss results of dynamic schedule with mentor
- Monday - Run final tests and compile results
- Tuesday - Poster presentations
- Wednesday - Submit all data to mentor
- Wednesday - Begin paper
- Thursday - Final presentation
- Thursday - Finish rough draft of paper
- Friday - Final surveys
- Friday - Submit final draft of paper