The NVIDIA-Omniverse/PhysX repository is a comprehensive physics simulation ecosystem comprising the PhysX SDK (rigid body dynamics, articulations, vehicle physics), Blast (destruction/fracture), Flow (fluid/fire simulation), and ovphysx (Omniverse integration layer with USD support and Python bindings). It provides real-time physics computation for games, VR, robotics, and virtual production workflows. The architecture features modular SDKs with C/C++ core APIs, C wrappers, and Python bindings, extensible via plugin systems (e.g., OmniPhysX for USD). Key entry points include PhysX scene creation functions, ovphysx tensor binding APIs, Blast authoring tools, and Flow context initialization. Data flows involve defining physics assets, stepping simulations, and extracting results (poses, forces, contacts) or tensor views for ML interop via DLPack. External dependencies include USD, CUDA, Vulkan, Premake, and packman for dependency management. The codebase demonstrates strong engineering practices with RAII patterns, custom allocators, handle-based resource management, and platform abstraction layers.
This repository provides a set of custom memory allocator implementations in C++ (Linear, Stack, Pool, FreeList, and a wrapper for malloc). The allocators are designed for educational purposes, demonstrating how to replace general-purpose malloc with more efficient, specialized allocators. The code is structured around a common base class (`Allocator`) and uses generic linked list data structures (singly and doubly linked, plus a stack-based linked list) to manage free memory blocks. A benchmarking framework (`Benchmark`) measures allocation/free throughput and memory usage. The project is a library/example, not a production service, and is intended to illustrate trade-offs between allocator types. The implementation is clean and well-organized, but lacks tests and modern C++ features, and has not been actively maintained.