FLUID V.3: INTERACTIVE MILLION PARTICLE FLUIDS (2014)

2014. Hoetzlein, R. Fast Fixed-Radius Nearest Neighbors: Interactive Million-Particle Fluids. GPU Technology Conference (GTC) 2014. Santa Clara, CA. Talk slides.
Source code. https://github.com/ramakarl/fluids3

Fluids v.3 (2014) is a large-scale, open source fluid simulator for the CPU and GPU using the Smooth Particle Hydrodynamics method. Fluids is capable of efficient simulation of millions of particles on the GPU at interactive rates. The key innovation in Fluids v.3 is a novel solution to the fixed-radius nearest neighbor problem using 1-radix sorting.

The goal of Fluids v.3 is to enable next-generation software for interdisciplinary research and is at least 8x faster than Fluids v.2, allowing up to 8,000,000 particles. Fluids v.3 is open source, and is intended for the scientific community to have access to a very efficient, large scale fluid simulator for diverse applications.

Features:
– Supports up to 8,000,000 particles (Fluids v.2 limited to 65536)
– Very fast GPU solution, with peak efficiency of 6,000,000 simulated particles per second.
– All calculations on the GPU (unlike Fluids v.2, which did CPU-only integration steps)
– Novel counting-sort search algorithm
– Generic search allows 2x2x2, 3x3x3 and 4x4x4 neighborhood search for optimal performance
– Better memory management, with structure-of-arrays layout.
– Simplified code compared to Fluids v.2

Performance:

Fluids v.3 has been adopted by researchers in physics, hydrodynamics, geology and astronomy.

Leave a Reply

Your email address will not be published. Required fields are marked *

2 thoughts on “FLUIDS V.3: INTERACTIVE MILLION PARTICLE FLUIDS

  1. Hi DJ,
    The sorting is done on GPU. Those steps are: 1) insert, 2) prefix sum, 3) copy. Each step is done with a hardware thread per particle, which enables millions of particles in parallel on GPU. There is also CPU code for comparison which does the same thing using a for loop (sequentially).
    Rama

  2. Hello. My name is DJ Byun. I’m a vfx artist. Reading your article, I have a question. Where do we run the counting sort? Is it running per thread(per particle) in GPU or is it running once in CPU?