Alice’s Status Report – 04/30/2022

Turns out the numbers that I had gotten for Chamfer distance were off and they were even closer than I expected to the reference :). I got support for multiple spheres working and I was able to come up with a new visualization to confirm the fluid simulation traces matched as well.

My goal for this upcoming week is to re-generate all of the reference fluid simulations, record those and get log files, and then get log files from the FPGA fluid simulations and get Chamfer distance numbers. I also want to use the new visualization method to compare the fluid simulations as point clouds for easier visual verification. This will also provide as a nice graphic for all of our presentation materials.

We’ve more or less locked down our final code version,  just need to verify everything and document all of our hardware improvements with timing numbers. Feeling great that our project finally has something visual for results 🙂

Alice’s Status Report – 04/23/2022

The FPGA finally produces visually appealing fluid simulation output! I has to fix some nearest neighbors code and then I spent the majority of this week getting collisions of fluid particles to work.

We constrained the voxel space to [-4,4), [-6,2), [-4,4). The original algorithm uses voxels of the same size as the particle, but this would require us to make an array of size 65536, which requires approximately 1500 BRAMs when the max limit is 438. Therefore we decided to make the voxels 8 times bigger. I initially thought this would make the fluid explode due to an increased number of particles influencing each other, but we tested this and it was fine.

Currently Jeremy and Ziyi are working on the optimizations, so my primary goal for next week is to get numbers for quantitative accuracy.

Team Status Report for 04/16/2022

We were unfortunately set back this week since we were not able to meet in person and had to rely on remote work/communication, and Jeremy was busy recovering from Covid. Though we were set back this week, it’s not a huge loss for us since we’ve allocated a good amount of slack and we were able to piggy back on the work we got done from last week. We’re confident we’re still on track to complete our project.

We were able to make some good progress this week even though we didn’t accomplish everything we wanted to. Ziyi was able to get the hardware/software interface working and got the existing build to run on the FPGA, and did some good work on build configurations as well. Jeremy and Alice made good progress on fixing bugs in the algorithm as well.

No changes were made to the schedule.

Alice’s Status Report for 04/16/2022

Last week my goal was to work on some optimizations for the build. However, I had to shift my attention to what Jeremy was working on with the nearest neighbors. Since hardware needs to have known memory sizes for everything, it makes it challenging to discretize the 3D world space and partition the fluid particles accordingly, so we are currently trying to bound the possible fluid simulation positions. However, right now we still have a bit of work to do with re-working how we read particles in (in case they get dropped) and making sure the output is reasonable. My goal for next week is to finish up getting the algorithm to work correctly in hardware and then work on optimizations.

I definitely feel slightly behind since our team was not able to meet in person at all this week and communication has been slow. However, it seems like Jeremy will be able to meet in person again soon and we’ll be able to get back on track.

Alice’s Status Report – 04/10/22

Last week we were rushing to finish the build for the interim demo, and I was unable to complete the evaluation script. This week I was able to do so. I also read up a lot on unrolling, pipelining, and other optimizations outlined here: https://docs.xilinx.com/r/en-US/ug1399-vitis-hls/HLS-Pragmas

This upcoming week I’ll be working on adding said pragmas for optimizations. I’ll also be helping to verify that the Vitis HLS project provides reasonable fluid simulation output once Ziyi finishes the interface work to get an output text file from the FPGA.

We had a really great push at the beginning of this week. I’m optimistic that we can achieve our goals.

Team Status Report for 04/02/2022

This week’s focus was entirely on getting the Vitis HLS build to work. We made really great progress with converting all the floating point numbers and operations to fixed point ones, stripping the code even further of unnecessary functions, and converting all the math operations from std to hls ones.

We’ve managed to get almost everything working, except for random number generation when making the particles. The goal for the rest of today and tomorrow is to get the Vitis HLS build completely working (which is a must for the interim demo) and have some way of sending the output from the FPGA code to the host computer, which can then render and evaluate the fluid against the baseline CPU version.

New Schedule:

Alice’s Status Report for 04/02/2022

In my last update, the main goal I wanted to tackle was getting the evaluation script to work with the fluid simulation output. Unfortunately, I was not able to accomplish this as all of my time for this week was spent on working with Ziyi and Jeremy to get the Vitis HLS build working.

We’ve been in the lab nearly every day, and thankfully we are really close to being done. We just have some issues with random number generation for the initial positions of the particles, and dealing with some last minute replacements of std math functions with hls functions.

The demo is Monday, and while we are in an OK spot I am still a bit worried about it. I’m staying up all night today to aim to get it working by tonight in case we run into new issues tomorrow.

Alice’s Status Report for 03/26/2022

In my last update, the main goal I wanted to tackle was getting Scotty3D to read from a text file of particle positions and be able to step through the simulation frames. I was able to fully accomplish this goal for this week, and additionally gained a good understanding of scene loading code in the codebase. I anticipate this will be handy for nice-to-have features if we have the time.

The next major goal for me is to get the FPGA to send the particle position data over UART (serial USB) to Scotty3D and step through the simulation. I realized once I got the simulation working from the text file that a real-time demo will be significantly more compelling, since a pre-computed simulation does not give an accurate visual perception of how much the FPGA can accelerate the fluid simulation. To clarify, real-time demo is not in our MVP, but since Ziyi and Jeremy are still working through build issues I believe this is the most important task that I can be working on right now.

However, since the Vitis HLS project is not working yet (which is necessary for me to do the above), my goal for next week will be to get the Chamfer Distance evaluation script working with the Scotty3D fluid simulation outputs.

I’ve had a really great two weeks so far with progress, and. I am a little concerned that build issues are still taking us this long to work through, but since we’ve stripped down Scotty3D to just the core simulation files on the FPGA I’m feeling OK about us getting the Vitis HLS build completely working in the near future.

Alice’s Status Report for 03/19/2022

In my last update, the main goal I wanted to tackle was figuring out what to put on the FPGA, since we were discovering some crashing issues when loading the CPU too much and also installation issues regarding OpenGL. So we decided to make an architecture change, such that the FPGA platform will only perform the fluid simulation algorithm. In other words, it will take an array of 3D positions and output an array of 3D positions for each frame, and save that to a file such that a host computer that is able to run Scotty3D can load in the simulation file and play the fluid simulation.

The major task I accomplished for this week was stripping the fluid simulation code of extraneous dependencies such that the number of files loaded into the Vitis HLS would be minimal. I also worked with Jeremy and Ziyi to rewrite portions of the code that were using modern C++ features, and am currently working on loading a text file of 3D positions into keyframes for the animatino. I am making good progress already and am confident that I can finish this for next week.

Next week will be critical since we have a demo coming up, so in addition to getting the text file loaded into Scotty3D I will be working on figuring out the FPGA–> host computer communication. Since we have finally gotten the Vitis HLS project to build, I am feeling great about our progress going forward.

Team Status Report for 02/26/2022

Currently the significant risk that we are facing is figuring out where to do the rendering now. It risks an architecture change. We have multiple contingency plans and are currently evaluating the risk/reward/effort of all of these (we are meeting again tomorrow to finalize our decision).

The most important task for the project at this stage is to address the above and get some MVP form of Scotty3D running so we can complete other tasks.

No changes were made to the schedule, as we believe we can catch up during Spring Break and with some hopefully provided slack days. Changes to the system design have not been made for now.