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.