NEWORLD / src /README.md
Factor Studios
Upload 32 files
55055c7 verified
# Virtual GPU (vGPU) Project
This project aims to build a fully functional software-defined GPU (vGPU) using Python, without relying on any physical GPU hardware or existing low-level graphics APIs (like CUDA, Metal, Vulkan, or OpenGL). The vGPU is designed to simulate the behavior of a real GPU, including its core components, memory hierarchy, and parallel processing capabilities.
## Project Goals
* **Software-Defined Hardware**: Replace traditional GPU hardware components with pure software abstractions.
* **Massive Parallelism Simulation**: Simulate 50,000 processing cores and 800 Streaming Multiprocessors (SMs).
* **High-Bandwidth Memory Abstraction**: Implement a 500GB GDDR7 memory abstraction using symbolic memory management.
* **Graphical and AI Processing**: Capable of processing graphical logic, AI matrix operations, and rendering output.
* **Modular Architecture**: Designed with distinct modules for clear separation of concerns and extensibility.
## Modules Overview
This project is structured into several key modules, each responsible for a specific aspect of the vGPU's functionality:
* `vgpu.py`: The core GPU processor, managing overall state, workload distribution, and the main GPU tick cycle.
* `vram.py`: The video memory module, abstracting 500GB of GDDR7 memory using symbolic representation and efficient data handling.
* `driver.py`: The CPU-to-GPU command interpreter, responsible for receiving and queuing commands from a virtual CPU.
* `render.py`: The pixel renderer, implementing the software raster pipeline for drawing primitives and images.
* `ai.py`: The simulated AI accelerator, handling matrix and vector operations using the vGPU's simulated parallelism.
* `shader.py`: Provides a mechanism for simulating programmable shader logic.
* `display.py`: The output system, handling the presentation of rendered frames to a display (e.g., WebSocket to JS canvas, GUI window, or image files).
* `bus.py`: Simulates memory movement and data transfer logic between different logical components.
## Getting Started
Further instructions on setting up the environment, running examples, and contributing will be provided as the project develops.