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.
Common commands:
pixi run test # run all tests
pixi run bench_all # run all benchmarksExamples:
pixi run example_lbvh
Runs the GPU LBVH normal-rendering example. It should produce the following image
for a detailed version see roadmap
- Math primitives (Vec, Mat, Quat, Ray, Hit, missing Spatial)
- obj parser (single threaded done)
- GPU sort (Bitonic, Radix, Onesweep, but only uints, missing segmented)
- CPU BVH (Bounds, Triangle BLAS, Sphere BLAS, TLAS)
- GPU BVH (Bounds, Triangle BLAS, Sphere BLAS, TLAS)
- GPU Hash Grid (not started)
- Particle Simulation (not started)
- SPH Fluid Simulation (not started)
- Mesh / Particle Coupling (not started)
- Rigid Body Simulation (not started)
- Batched Simulation Environments (not started)
see sources
- struct gpu buffers, not just dtype buffers
- Parametric Traits (to simplyfy typed bvh)
- enums