- Roshan Regula
- How many hours did you spend on the following tasks?
- Task 1 (Matrix functions in C): 1 hour
- Task 2 (Writing the Python-C interface): 2 hours
- Task 3 (Speeding up matrix operations): 6 hours
- Was this project interesting? What was the most interesting aspect about it?
- It was a new topic of cs that I had never worked with before so it was definitely interesting. The most interesting part was definitely learning to program in ways that are super relevant to actual industry work like threading.
- What did you learn?
- I learned how difficult of a process it can be to achieve high performance. There is a lot of restarting required to achieve the most optimal solution and that can definitely be infuriating. I also learned that the first solution is almost always the worst one and can always be improved.
- Is there anything you would change?
- I wish the autograder tokens were higher since the hive machine speeds were not the same as the AG speeds. Its not like knowing the speed of your code would have helped fix your code. Relying on the AG was necessary for this project so more tokens would have been better. Also would have appreciated a little more emphasis in lab on cache blocking.
-
In one short paragraph, describe your contribution(s) to the project.
- I implemented the initial matrix functions, helped with writing the python-c interface and enhanced the performance of the matrix functions.
-
In one short paragraph, describe your partner's contribution(s) to the project.
- He also helped write the python-c interface, wrote all the tests, and helped with the enhancements.
-
Jai Yarlagadda
- How many hours did you spend on the following tasks?
- Task 1 (Matrix functions in C): 20 minutes
- Task 2 (Writing the Python-C interface):1-2 hours
- Task 3 (Speeding up matrix operations): 5-6 hours
- Was this project interesting? What was the most interesting aspect about it?
- This project was very interesting. I think the most interesting aspect was the ability to choose unique efficient algorithms and then further optimize them using techniques such as pragmas and simds. The fact that we can basically parallelize our way to save tons of time (which is a limited resource) is fascinating to me. Furthermore, the fact that there are ways to utilize our already existing hardware to do so (such as in intel instrisics) is really cool and interesting. We have the power to do so right at our own personal computers.
- What did you learn?
- I learned all the different ways to optimize and parallelize algorithms to work more efficiently. Furthermore, reading apis can be very annoying at times but learning how to better go to these specific resources and utilizing them (python ojects for example) helped me understand better how to use the internet as a very powerful resource in researching.
- Is there anything you would change?
- I believe more hints or tips towards how to properly use some of the libraries would have helped (such as unpacking tuples).
- In one short paragraph, describe your contribution(s) to the project.
- I helped with writing python-c interface, writing and debugging tests and finding some sources of errors, and helping with enhancing performance.
- In one short paragraph, describe your partner's contribution(s) to the project.
- He wrote the initial naive implementation, also helped with python-c interface, and was phenomenal at finding efficient ways to enhance our performance. He was a great partner.