Download presentation
Presentation is loading. Please wait.
Published byBrett Phillip Beasley Modified over 9 years ago
1
Fluid Simulation using CUDA Thomas Wambold taw38@drexel.edu CS680: GPU Program Optimization August 31, 2011
2
Overview/Usage Looking at 2D and 3D fluid simulation techniques. Simulate fluid interactions with itself and its environment. I'm mostly looking at it for visual uses: o Video games, movies, etc. More accurate simulations could be used for more scientific modeling. From GPUGems 3
3
Methods Field-based systems o Volume is represented by a grid. o Each block in the gird contains properties such as velocity, density, temperature, and pressure. o Blocks do not move. o An Eulerian view. o I looked more at this system. Particle-based systems o Fluid is represented by large quantities of particles. o Each particle has the same properties as before, but also position. o Particles can move. o A Lagrangian view.
4
From Intel Article. (a) Field-based (b) Particle-based
5
Equations Navier-Stokes equations for incompressable flow o Assumes incompressable, homogeneous o Invompressable - volume of any subregion is constant. o Homogeneous - density of any subregion is constant. Represents velocity field, pressure field. Use numerical integration techniques to solve incrementally. For each iteration of the simulation: o Update velocity with forces in the system. o Transfer velocity between grid cells (advection). o Diffuse velocity based on viscosity. o Update velocity for incompressible fluids. So velocity field is non-divergent.
6
2D Fluid Simulator Sample code from nVidia CUDA SDK. Uses field-based system. Currently 512x512 grid, split grid into 64x64 tiles. Each tile has 64 threads, each processing 64x16 cells. Uses texture memory. Iterations: o Velocities are updated based on mouse movements o Grabs values stored in neighboring cells for advection o Diffusion uses a Fourier Transform (CUFFT) Uses CUDA/OpenGL integration to avoid memory copies.
7
Sequential Fluid Simulator Modified example to not use CUDA Computations are done on the CPU, copied to Vertex Buffer Object to display via OpenGL. Attempted to replace cuFFT library with GSL FFT, but did not get far. Was able to get particles to display on the screen, and they do move around, but very oddly. Still many problems, but it doesn't crash. Some of this could probably be blamed on the memory copies between the CPU and GPU, but not this much.
8
CPU vs CUDA Fluid Simulations Tested on my home machine (didn't want to forward X11 or something): o Intel Core 2 Quad @ 2.8GHz o nVidia GeForce GTX 460 Compute Capability: 2.1 CUDA Cores: 7 multiprocessors X 48 cores = 336 CUDA version never went below 300 FPS CPU version barely got above 5 FPS o This is without doing any FFT for force diffusion. o Slowness could probably be partially blamed on memory copies.
9
2D Fluid Simulator
10
Next Steps/Conclusions Next steps: o Modify nVidia's sample to just use CPU (DONE) o Implement my own 2D simulator. o Explore 3D simulators. Difficulties: o Probably was a bit too ambitious for the time constraints. o I don't have much experience in this, a lot to try to absorb. o Have to worry about rendering, example uses CUDA OpenGL integration. Examples from various conferences show very impressive real-time simulations using the GPU.
11
References In-depth article from Intel with lots of math (both particle, and field- based): http://software.intel.com/en-us/articles/fluid-simulation-for-video-games-part-1/ http://software.intel.com/en-us/articles/fluid-simulation-for-video-games-part-1/ Good article explaining equations about field-based simulation: http://http.developer.nvidia.com/GPUGems/gpugems_ch38.html http://http.developer.nvidia.com/GPUGems/gpugems_ch38.html 3D simulations: http://http.developer.nvidia.com/GPUGems3/gpugems3_ch30.html http://http.developer.nvidia.com/GPUGems3/gpugems3_ch30.html Documentation for SDK example: http://new.math.uiuc.edu/MA198- 2008/schaber2/fluidsGL.pdf http://new.math.uiuc.edu/MA198- 2008/schaber2/fluidsGL.pdf SDK Example: http://developer.nvidia.com/cuda-cc-sdk-code-samples#fluidsGL http://developer.nvidia.com/cuda-cc-sdk-code-samples#fluidsGL
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.