Skip to content

jgsimard/bajo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

249 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

bajo

bajo = low (... level) = batch mojo

Bajo is a work-in-progress, pure-Mojo simulation engine designed for Reinforcement Learning (RL) environments, spatial computing, and physics simulations. The end goal is to run thousands of environments concurrently with high throughput on a single GPU, similar to frameworks like NVIDIA Warp and the Madrona Engine.

Because Mojo is still relatively new, I am currently building out the foundational GPU primitives required for physics simulations from scratch.

Pixi tasks

Common commands:

pixi run test              # run all tests
pixi run bench_all         # run all benchmarks

Examples:

pixi run example_lbvh

Runs the GPU LBVH normal-rendering example. It should produce the following image lbvh example

Roadmap

for a detailed version see roadmap

  1. Math primitives (Vec, Mat, Quat, Ray, Hit, missing Spatial)
  2. obj parser (single threaded done)
  3. GPU sort (Bitonic, Radix, Onesweep, but only uints, missing segmented)
  4. CPU BVH (Bounds, Triangle BLAS, Sphere BLAS, TLAS)
  5. GPU BVH (Bounds, Triangle BLAS, Sphere BLAS, TLAS)
  6. GPU Hash Grid (not started)
  7. Particle Simulation (not started)
  8. SPH Fluid Simulation (not started)
  9. Mesh / Particle Coupling (not started)
  10. Rigid Body Simulation (not started)
  11. Batched Simulation Environments (not started)

Literature & References

see sources

Things I wish to be added to mojo

  1. struct gpu buffers, not just dtype buffers
  2. Parametric Traits (to simplyfy typed bvh)
  3. enums

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages