A small, easy-to-use open source database of over 2000 GPUs with architecture, manufacturing, API support and performance details sourced from TechPowerUp.
DBGPU is available on PyPI and can be installed with pip:
pip install dbgpuIn order to be as minimal as possible (the package is only 170kb compressed,) some features are only available as additional dependencies. To install any additional package, use pip install dbgpu[package]:
dbgpu[tabulate]will install tabulate for pretty-printing tables.dbgpu[fuzz]will install thefuzz for fuzzy searching.dbgpu[build]will install requests, beautifulsoup4 and tqdm for building the database.dbgpu[socks]will install PySocks for SOCKS proxy support.dbgpu[all]will install all optional dependencies.
fromdbgpuimportGPUDatabasedatabase=GPUDatabase.default()
spec=database["GeForce GTX 1080"]
# Using fuzzy search (slower):# spec = database.search("GTX 1080")print(spec)This is the output without tabulate available; see below for an example with it installed.
----------------
GeForce GTX 1080
----------------
GPU Name: GP104
Manufacturer: NVIDIA
Architecture: Pascal
Foundry: TSMC
Process Size: 16 nm
Transistor Count: 7.2 billion
Transistor Density: 22.9 million/mm²
Die Size: 314 mm²
Chip Package: BGA-2150
Release Date: 2016-05-27
Generation: GeForce 10
Bus Interface: PCIe 3.0 x16
Base Clock: 1,607 MHz
Boost Clock: 1,733 MHz
Memory Clock: 1,251 MHz
Memory Size: 8.0 GB
Memory Type: GDDR5X
Memory Bus: 256 bit
Memory Bandwidth: 320.3 GB/s
Shading Units: 2,560
Texture Mapping Units: 160
Render Output Processors: 64
Streaming Multiprocessors: 20
Tensor Cores: Unknown
Ray Tracing Cores: Unknown
L1 Cache: 48.0 KB
L2 Cache: 2.0 MB
Thermal Design Power: 180 W
Board Length: 267 mm
Board Width: 112 mm
Board Slot Width: Dual-slot
Suggested PSU: 450 W
Power Connectors: 1x 8-pin
Display Connectors: 1x DVI, 1x HDMI 2.0, 3x DisplayPort 1.4a
DirectX Version: 12.1
OpenGL Version: 4.6
Vulkan Version: 1.3
OpenCL Version: 3.0
CUDA Version: 6.1
Shader Model Version: 6.7
Pixel Rate: 110.9 GPixel/s
Texture Rate: 277.3 GTexel/s
Half Float Performance: 138.6 GFLOP/s
Single Float Performance: 8.9 TFLOP/s
Double Float Performance: 277.3 GFLOP/sAvailable fields and their types are:
classGPUSpecification:
manufacturer: MANUFACTURER_LITERAL# Manufacturer of the GPUname: str# Common name of the GPUgpu_name: str# Name of the GPU as per the manufacturergeneration: str# GPU generation, e.g. "GeForce 30"base_clock_mhz: Optional[float] # Base clock speed in MHzboost_clock_mhz: Optional[float] # Boost clock speed in MHzarchitecture: Optional[str] # Architecture of the GPU, e.g. "Ampere"foundry: Optional[str] # Foundry where the GPU was manufacturedprocess_size_nm: Optional[int] # Process size in whole nanometerstransistor_count_m: Optional[float] # Number of transistors in the GPU (in millions)transistor_density_k_mm2: Optional[float] # Transistor density in thousands of transistors per square millimeterdie_size_mm2: Optional[float] # Die size in square millimeterschip_package: Optional[str] # Package of the GPU chiprelease_date: Optional[date] # Release date of the GPUbus_interface: Optional[str] # Bus interface of the GPUmemory_clock_mhz: Optional[float] # Memory clock speed in MHzmemory_size_gb: Optional[float] # Size of the GPU memory in GBmemory_bus_bits: Optional[int] # Memory bus width in bitsmemory_bandwidth_gb_s: Optional[float] # Memory bandwidth in GB/smemory_type: Optional[str] # Type of the GPU memory, e.g. "GDDR6"shading_units: int# Number of shading units in the GPUtexture_mapping_units: int# Number of texture mapping units (TMUs) in the GPUrender_output_processors: int# Number of render output processors (ROPs) in the GPUstreaming_multiprocessors: int# Number of streaming multiprocessors (SMs) in the GPUtensor_cores: int# Number of tensor cores in the GPUray_tracing_cores: int# Number of ray tracing cores in the GPUl1_cache_kb: float# L1 cache size in KBl2_cache_mb: float# L2 cache size in MBthermal_design_power_w: Optional[int] # Thermal design power in wattsboard_length_mm: Optional[float] # Length of the GPU board in millimetersboard_width_mm: Optional[float] # Width of the GPU board in millimetersboard_slot_width: Optional[str] # The number of slots the GPU occupiessuggested_psu_w: Optional[int] # Suggested power supply unit in wattspower_connectors: Optional[str] # Power connectors required by the GPU, variantdisplay_connectors: Optional[str] # Display connectors available on the GPU, variantdirectx_major_version: Optional[int] # DirectX major version supported by the GPUdirectx_minor_version: Optional[int] # DirectX minor version supported by the GPUopengl_major_version: Optional[int] # OpenGL major version supported by the GPUopengl_minor_version: Optional[int] # OpenGL minor version supported by the GPUvulkan_major_version: Optional[int] # Vulkan major version supported by the GPUvulkan_minor_version: Optional[int] # Vulkan minor version supported by the GPUopencl_major_version: Optional[int] # OpenCL major version supported by the GPUopencl_minor_version: Optional[int] # OpenCL minor version supported by the GPUcuda_major_version: Optional[int] # CUDA major version supported by the GPUcuda_minor_version: Optional[int] # CUDA minor version supported by the GPUshader_model_major_version: Optional[int] # Shader model major version supported by the GPUshader_model_minor_version: Optional[int] # Shader model minor version supported by the GPUpixel_rate_gpixel_s: Optional[float] # Pixel fill rate in GPixel/stexture_rate_gtexel_s: Optional[float] # Texture fill rate in GTexel/shalf_float_performance_gflop_s: Optional[float] # Half-precision floating point performance in GFLOPSsingle_float_performance_gflop_s: Optional[float] # Single-precision floating point performance in GFLOPSdouble_float_performance_gflop_s: Optional[float] # Double-precision floating point performance in GFLOPSTo use your own database:
fromdbgpuimportGPUDatabasedatabase=GPUDatabase.from_file("path/to/database.json")Supported formats are JSON, CSV and PKL. The PKL format is the fastest to load and is recommended for large databases.
$ dbgpu lookup "GeForce GTX 1080"# Using fuzzy search (slower):# dbgpu lookup GTX1080 --fuzzy
╒═══════════════════════════════════════════════════════════════════════╕
│ GeForce GTX 1080 │
├───────────────────────────────────────────────────────────────────────┤
│ GPU Name | GP104 │
│ Manufacturer | NVIDIA │
│ Architecture | Pascal │
│ Foundry | TSMC │
│ Process Size | 16 nm │
│ Transistor Count | 7.2 billion │
│ Transistor Density | 22.9 million/mm² │
│ Die Size | 314 mm² │
│ Chip Package | BGA-2150 │
│ Release Date | 2016-05-27 │
│ Generation | GeForce 10 │
│ Bus Interface | PCIe 3.0 x16 │
│ Base Clock | 1,607 MHz │
│ Boost Clock | 1,733 MHz │
│ Memory Clock | 1,251 MHz │
│ Memory Size | 8.0 GB │
│ Memory Type | GDDR5X │
│ Memory Bus | 256 bit │
│ Memory Bandwidth | 320.3 GB/s │
│ Shading Units | 2,560 │
│ Texture Mapping Units | 160 │
│ Render Output Processors | 64 │
│ Streaming Multiprocessors | 20 │
│ Tensor Cores | Unknown │
│ Ray Tracing Cores | Unknown │
│ L1 Cache | 48.0 KB │
│ L2 Cache | 2.0 MB │
│ Thermal Design Power | 180 W │
│ Board Length | 267 mm │
│ Board Width | 112 mm │
│ Board Slot Width | Dual-slot │
│ Suggested PSU | 450 W │
│ Power Connectors | 1x 8-pin │
│ Display Connectors | 1x DVI, 1x HDMI 2.0, 3x DisplayPort 1.4a │
│ DirectX Version | 12.1 │
│ OpenGL Version | 4.6 │
│ Vulkan Version | 1.3 │
│ OpenCL Version | 3.0 │
│ CUDA Version | 6.1 │
│ Shader Model Version | 6.7 │
│ Pixel Rate | 110.9 GPixel/s │
│ Texture Rate | 277.3 GTexel/s │
│ Half Float Performance | 138.6 GFLOP/s │
│ Single Float Performance | 8.9 TFLOP/s │
│ Double Float Performance | 277.3 GFLOP/s │
╘═══════════════════════════════════════════════════════════════════════╛This is the output with tabulate available; see above for an example without it installed.
Here is a potentially useful bash one-liner to look up the local machine, assuming the availability of the nvidia-smi tool:
dbgpu lookup "$(nvidia-smi --query-gpu=name --format=csv,noheader | awk '{$1=""; print $0}'| cut -c2-)"When installing from PyPI, the latest database is included. If you want to build the database yourself, you can use the dbgpu command line tool:
dbgpu buildNote that requests are limited to 4 per minute to be courteous to TechPowerUp's servers. With over 2000 GPUs, a full build will take over 10 hours, with most of it spent waiting.
For that reason, if you need to build your own database, it's recommended to limit the build to a specific manufacturer and/or year range, e.g.:
dbgpu build --manufacturer NVIDIA --start-year 2023Pass --help for more options.
Usage: dbgpu build [OPTIONS]
Builds a database of GPUs from TechPowerUp.
Options:
-o, --output PATH Output file path. [default: /home/benjamin/mini
conda3/envs/enfugue/lib/python3.10/site-
packages/dbgpu/data.pkl]
-m, --manufacturer TEXT GPU manufacturers to include. Pass multiple
timesfor multiple manufacturers. [default:
NVIDIA, AMD, Intel, ATI, 3dfx, Matrox, XGI,
Sony]
-y, --start-year INTEGER Start year for GPU database. [default: 1986]
-Y, --end-year INTEGER End year for GPU database. [default: 2024]
-d, --courtesy-delay FLOAT Delay in seconds between requests. [default:
15.0]
-p, --proxy TEXT HTTPS proxy URL.
-t, --timeout FLOAT Timeout in seconds.
-r, --retry-max INTEGER Maximum number of retries. [default: 5]
-R, --retry-delay FLOAT Delay in seconds between retries. [default:
15.0]
--help Show this message and exit.DBGPU is licensed under the MIT License. See LICENSE for more information.
This project is not affiliated with TechPowerUp, but could not exist without their website. If you find this project useful, please consider supporting them.
