Abhinav’s status report

Abhinav’s status report:

September 23rd 2023

During the week all of us as a team worked on the slide deck and then helped Rene with rehearsing his slides. I was mainly in charge of the code analysis, graphical display and work distribution part of the slides. I feel like we as a team are in a better position after having created the Gantt chart and are now equipped to be able to stay on track. During class we were looking at the other team’s proposals and critiquing them.

Over the week have also been conducting more in depth research about parallel techniques employed to execute the N-body simulation and also the tradeoffs. I have also been brushing up my C++ coding skills and have further looked into achieving parallelism through HLS on Vitis. I am responsible for setting up the graphical display so I looked into how running a program on the ARM core would work. Ideally we want to use Python to create a visualization of our simulation. I also looked into how we can connect our FPGA board to a monitor via its Mini DisplayPort.

September 30th 2023

During the week Rene and I worked together towards performing code analysis and also rewrote the sequential code for our implementation. We timed the sequential code to see which part was algorithmically limited and which part of the code was limited by lack of parallelism. We also decided to parallelize the all pairs algorithms because we thought trying to parallelize barnes hut on the FPGA would not be feasible in terms of the LUTs that we have available as it requires a lot higher LUT usage to store individual tree data. We also fixed ourselves to some constants which we did not during the time of the proposal like we finalized on using 10k particles for our simulation. I think we are on track right now and for next week I’ll be working our figuring out the hardware resources, i.e. getting data in/our of the FPGA

I also spent time with the team developing the design proposal presentation and I am also the one who is going to be presenting it so I also spent time going over the presentation and doing practice runs of it.

Please list the particular ECE courses (if any) that covered the engineering science and mathematics principles your team used to develop your design ? If there are no courses please tell us how you learned those principles over the last week ?

I used principles taught in 18418 which taught me about parallel programming and that’s where I initially learned about the N body simulation. I also learned about FPGA’s and HLS during 18240. Other than both of these classes whatever extra knowledge I asked Yuhe’s who was more than helpful to provide information about the Ultra96V2 and if anything else was needed I would fall back onto the documentation and manuals for Ultra96V2

october 7th 2023

So this week we had the design presentation, I presented on Monday so over the weekend we were working on refining our slide deck and I was working on presenting the slides themselves. On Monday and Wednesday we were peer reviewing other people’s presentations. 

During the week other than in class I spend time trying to figure out hardware resources and writing code for our parallel implementation. What we are trying to do is making our C++ naive implementation run on the FPGA so that we can get the utilization report which can help tell us the number of LUTs we are bound by and also the time it is taking to run our simulation. This is what Rene and I spent most of our time doing this week and I think we are close to finishing our code. I am also looking at things like hardware resources and working with them by discussing stuff with Yuhe like how getting data onto the ARM using Wi-Fi. 

We are on track for this week and next week we hope that we can write more C++ code and possibly make it run on the FPGA.

october 21th 2023

This week was mainly spent doing 2 major things. I was looking into graphic softwares on Python to see different ways to simulate the particle movements in Python. There are many different software ranging from the standard more well documented and easier to use software like Matplotlib to more complicated ones which might be a little harder to use for our particular use case. The other thing was working on the design report which also took up a bulk of our time because it was a longer sized report. But I think writing the report itself helps us iron out a lot of details about our project, especially confirming our LUT count and our simulation size being reasonable. I think we are on track for the week and for the coming we would like to dive deeper into Vitis HLS (creating our project directory plus maybe starting some parallelism techniques.)

As you’ve now established a set of sub-systems necessary to implement your project, what new tools are you looking into learning so you are able to accomplish your planned tasks?

The major tools that I plan to learn are vitis HLS which is going to be the main tool in helping us achieve our end product. 

october 28th 2023

This week I focused on auto generation of test cases for our simulation. I wrote a python script which produces the initial values and puts them into a .txt file which then is read by a C++ testing script, also helped Yuhe and Rene work on fixed point and BRAM optimizations.. I am on track for this week’s gantt chart and for next week would like to integrate my testing environment with the tests that we are currently working on. 

NOVEMBER 4th 2023

This week we started off by discussing the ethical implications of our project and engaged in some invigorating discussions. Then our team worked on presenting a demo for next week. I mainly worked on test generation for the N-body simulation, the test verification for the simulation and also the graphical simulation. For the week I am on track and should be prepared for the demo next week. For the next week my plan is integrate the graphical simulation with the build and to then further parallelize our code, some adjustments in the test verification files due to use the use of fixed point integers might also be needed which will be done next week.

11th November 2023

This week we had our demo so we worked on making the presentation for the demo on Sunday. On Monday and Wednesday we had our demos. I developed the graphical display system, and also worked on test verification to make sure the results we were getting were correct or not. I had made a few changes to the graphical display system and presented the updated version on wednesday. We are on track for this week and my plan for next week is to further develop the graphical simulation code and finish the test verification code. 

In response to the ABET #6 we have 2 verifiable goals that our final project needs to reach. One of them being an accuracy measure of 90-90% and also a 10x speedup as well. Measuring the speedup is easy enough because we just have a timing code which measures the amount of time the computation took and then we compare it with our reference code to see the speedup. To verify our accuracy, we have roughly made sure that the numbers look correct but I am currently working on a comprehensive solution ideally a script which is able to compare our results with a reference solution and tell us the accuracy.

18th November 2023

This I focused on the graphical display script. I looked into migrating the script from Python to C++ so that instead of reading from a file we can have the C++ code a part of our project and it should we able to read directly from memory so it would cut down the time for the file I/O needed. I during the class I brainstormed and implemented a test verification script. Coming up with a way to accurately measure our output is sort of difficult because of the different vectors involved. But we came up with the strategy and have been working on implementing it. (Running this code in Python takes way longer than expected) For next week my goal is to work on more of the same but it is also thanksgiving, for Monday I want to test out the script once the DP cable arrives.

2nd December 2023

This week I mainly worked on getting the graphic display to work on the display. During the course of the week I wrote an C++ implementation of the graphical display and then also spent a lot of time trying to get the FPGA connected to the monitor and to be able to run the graphing software on the monitor itself. Faced a lot of issues with this, it is hard to install libraries on petalinux without any internet connection and even once they are installed to get the FPGA’s GPU core integrated is difficult. Also worked on the presentation for next week. Goal for next week is for the presentation to go smoothly and practice with Yuhe. Also need to fix a few errors which are stopping us from using the graphical interface on the ARM core of the FPGA. We are mostly on track with our implementation (25x speedup) just need to make sure the last subsystem is integrated.

9th December

Today, significant strides were made in the development of our Capstone project’s server-side infrastructure. The setup of an Amazon Web Services EC2 instance was enhanced, laying the groundwork for our application’s deployment. A Flask web application was refined, enhancing its capability to handle file uploads dynamically, render animations, and present a clean, user-friendly interface for file navigation and downloads. The integration of a static file handler within Flask has also been seamlessly implemented, allowing for the secure and efficient retrieval of uploaded files. Stylistic improvements were applied to our web pages, ensuring a professional aesthetic that aligns with the overall user experience goals of the project. With all core functionalities operating as expected and the backend infrastructure in place, we are on track. The progress made thus far has been substantial and we really look forward to Monday. We are on track in the sense that everything is done, and we will be working on the final paper for next week.