News for hackers. Stuff that matters.

Show HN: Demo of Agent Based Model on GPU with CUDA and OpenGL (Windows/Linux)

https://github.com/KienTTran/ABMGPU

Demo of agent based model on GPU with CUDA and OpenGL (Windows/Linux)

Agent instances on GPU memory Uses SSBO for instanced objects (with GLSL 450 shaders) CUDA OpenGL interops Renders with GLFW3 window manager Dynamic camera views in OpenGL (pan,zoom with mouse) Libraries installed using vcpkg

(https://github.com/KienTTran/ABMGPU)

( 21 comments | 10 points | on HN )
Re:Show HN: Demo of Agent Based Model on GPU with CUDA and O... by macawfish on Monday December 04, 2023 @04:15PM (#38523187)
What exactly is "agent based model"? What I see is a lot of triangles moving around, but what exactly drives them?
Re:Show HN: Demo of Agent Based Model on GPU with CUDA and O... by ktt8788 on Monday December 04, 2023 @04:44PM (#38523550)
Hi, thank you for your interest. Agent based model is a term refers to an interaction between multiple object (called agent) with its own property. The triangle is one agent in this case and in this example it moves along a random trajectory (just like people in a crowd). Each triangle also has its own color of its population so agents in the same population will have the same color.
Re:Show HN: Demo of Agent Based Model on GPU with CUDA and O... by 3abiton on Monday December 04, 2023 @04:36PM (#38523470)
From my understanding it's the term used for Complex Modelling Systems in Social Sciences.
Re:Show HN: Demo of Agent Based Model on GPU with CUDA and O... by sgt101 on Monday December 04, 2023 @04:57PM (#38523716)
reminds me of the flocking demos 20 years ago...
Re:Show HN: Demo of Agent Based Model on GPU with CUDA and O... by ktt8788 on Monday December 04, 2023 @07:44PM (#38525543)
Thanks. It's a nostalgia app haha.
Re:Show HN: Demo of Agent Based Model on GPU with CUDA and O... by TheHideout on Monday December 04, 2023 @05:53PM (#38524322)
Are the agents independent or are they affected by neighbors? It would be nice to see some classic ABM examples like wolf-sheep population, flocking, and wildfire spread to demonstrate the utility of this.
Re:Show HN: Demo of Agent Based Model on GPU with CUDA and O... by ktt8788 on Monday December 04, 2023 @07:38PM (#38525476)
Right now it's independent. I just want to provide a playground and people can make more with it. Loves your idea though.
Re:Show HN: Demo of Agent Based Model on GPU with CUDA and O... by m-murphy on Monday December 04, 2023 @06:33PM (#38524777)
Are the entities interacting in any way here? That's pretty critical for agent based models as they enable complicated/unexpected emergent behavior from simplified rules due to the interactions of the entities.
Re:Show HN: Demo of Agent Based Model on GPU with CUDA and O... by ktt8788 on Monday December 04, 2023 @07:42PM (#38525525)
Yeah they should be interact to each other. Right now I just started with it and want to share so everyone can take advantage in their ways.
Re:Show HN: Demo of Agent Based Model on GPU with CUDA and O... by m-murphy on Monday December 04, 2023 @06:34PM (#38524792)
Another related project for ABMs utilizing GPUs: https://docs.flamegpu.com/guide/index.html
Re:Show HN: Demo of Agent Based Model on GPU with CUDA and O... by ktt8788 on Monday December 04, 2023 @07:43PM (#38525531)
This is supercool and beyond what I've done. Thanks for sharing.
Re:Show HN: Demo of Agent Based Model on GPU with CUDA and O... by TheEzEzz on Monday December 04, 2023 @06:48PM (#38524968)
Super cool, curious to see where you take this! I did some work on GPGPU for agent simulations for an RTS years ago ( https://www.youtube.com/watch?v=P4fKJIrv0J8 ). Doing things like pathfinding on the GPU gets tricky, especially taking into account how agents affect paths of other agents. Happy to jam anytime if you're brainstorming applications.
Re:Show HN: Demo of Agent Based Model on GPU with CUDA and O... by ktt8788 on Monday December 04, 2023 @07:41PM (#38525510)
This's awesome. Happy to know that you're doing the same.
Re:Show HN: Demo of Agent Based Model on GPU with CUDA and O... by jasonjmcghee on Monday December 04, 2023 @07:00PM (#38525114)
You should work on inter-agent interaction next! It's so much fun.

I have played with this a fair amount and put a couple of my experiments in a repo- both slime mold simulation and "particle life".

Here's the repo: https://github.com/jasonjmcghee/compute-shaders

And a video of the slime mold: https://twitter.com/_jason_today/status/1663378736098738177?...

Re:Show HN: Demo of Agent Based Model on GPU with CUDA and O... by ktt8788 on Monday December 04, 2023 @07:39PM (#38525493)
Wow it's amazing visualization. Thanks for suggestion.
Re:Show HN: Demo of Agent Based Model on GPU with CUDA and O... by posnet on Monday December 04, 2023 @07:57PM (#38525650)
Another fun one, not sure about accuracy, but the visuals are stunning.

https://youtu.be/dSkxvi9igqQ

https://github.com/chrxh/alien/

Re:Show HN: Demo of Agent Based Model on GPU with CUDA and O... by ktt8788 on Monday December 04, 2023 @08:50PM (#38525994)
This is brilliant. Thanks for sharing.
Re:Show HN: Demo of Agent Based Model on GPU with CUDA and O... by moritonal on Monday December 04, 2023 @08:40PM (#38525934)
If you want to create some pretty effects, add the concept of a velocity-texture which is added to agents velocity as they pass over it. Then let the user draw on the texture. Very cheap way to get interactivity. My own version from before compute shades were a thing (https://moritonal.github.io/force-particles/)
Re:Show HN: Demo of Agent Based Model on GPU with CUDA and O... by ktt8788 on Monday December 04, 2023 @08:50PM (#38525998)
Thanks for your advice. I will update more in the next version.
Re:Show HN: Demo of Agent Based Model on GPU with CUDA and O... by westurner on Tuesday December 05, 2023 @12:52AM (#38527552)
Could this work in WebGL and/or WebGPU (and/or WebNN) with or without WASM in a browser?

https://stackoverflow.com/questions/48228192/webgl-compute-s...

https://github.com/conda-forge/glfw-feedstock/blob/main/reci...

pyglfw: https://github.com/conda-forge/pyglfw-feedstock/blob/main/re...

- [ ] glfw recipe for emscripten-forge: https://github.com/emscripten-forge/recipes/tree/main/recipe...

Emscripten porting docs > OpenGL ES 2.0/3.0 *, glfw: https://emscripten.org/docs/porting/multimedia_and_graphics/...

WebGPI API > GPUBuffer: https://developer.mozilla.org/en-US/docs/Web/API/WebGPU_API

gpuweb/gpuweb: https://github.com/gpuweb/gpuweb

https://news.ycombinator.com/item?id=38355444 :

> It actually looks like pygame-web (pygbag) supports panda3d and harfang in WASM

Harfang and panda3d do 3D with WebGL, but FWIU not yet agents in SSBO/VBO/GPUBuffer.

SSBO: Shader Storage Buffer Object: https://www.khronos.org/opengl/wiki/Shader_Storage_Buffer_Ob...

/? WebGPU compute: https://www.google.com/search?q=webgpu+compute

"WebGPU Compute Shader Basics" https://webgpufundamentals.org/webgpu/lessons/webgpu-compute...

Re:Show HN: Demo of Agent Based Model on GPU with CUDA and O... by ktt8788 on Tuesday December 05, 2023 @07:47AM (#38530056)
Basically possible. You have to remove all Cuda code and port C++ code to use glfw with specific library for web. The shader can be reused.