To implement the GPU-based particle simulation, I used NVIDIA's CUDA architecture. By writing kernels, I was able to utilize thousands of threads to simulate particles in parallel efficiently.
The simulation outputs a BMP image that shows the particles' interaction with the paper. Particles are assigned a starting position and a downward velocity, and if they hit the paper, the corresponding area turns red.
You can access the GitHub repository for the CUDA particle simulation here.