Open design GPU: Difference between revisions

wikademia>Eme
Created page with '{{wh}) ==See also== * Open computer * Open cell phone * Open CPU * Open memory * Open SSD'
 
No edit summary
 
(5 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{wh})
'''Open design GPU''' is the idea of a graphics processing unit whose design is shared in the open, so that anyone can study it, build it, improve it, and teach with it. A GPU draws the screen, plays video, and runs heavy parallel math. Almost all are closed. The original notes here asked for fast floating point, chips for mobile devices, desktops, and laptops, and fanless low-power operation. This page builds on those ideas.
__NOTOC__
== What a GPU does ==


A GPU is a specialized circuit that speeds up graphics and image work. Graphics splits into many small independent jobs, so a modern GPU holds hundreds or thousands of calculation units that run at once. The same layout suits other heavy tasks, such as scientific computing and training neural networks.<ref name="wpgpu">[https://en.wikipedia.org/wiki/Graphics_processing_unit Graphics processing unit, Wikipedia]</ref>


==See also==
Speed in floating point is the core of the job. Floating point is the number format for fractions and very large or very small values. Shading a pixel, moving a 3D model, and multiplying a neural network matrix all become huge counts of these operations. Open designs let students study the trade-offs between precision, speed, and chip area.
* [[Open computer]]
 
* [[Open cell phone]]
== What open can mean ==
* [[Open CPU]]
 
* [[Open memory]]
Open has layers. A project can be open in one layer and closed in another.
* [[Open SSD]]
 
* Open instruction set: the machine language is published. AMD, for example, publishes machine-readable specifications of its GPU instruction sets.<ref name="isa">[https://gpuopen.com/amd-isa-documentation/ AMD GPU ISA documentation, GPUopen]</ref>
* Open hardware description: the design is released in a language such as Verilog, so others can simulate it or place it on an FPGA.
* Open drivers and documentation: the control software is public. When manuals are missing, developers often learn the hardware by clean-room reverse engineering.<ref name="wpfoss">[https://en.wikipedia.org/wiki/Free_and_open-source_graphics_device_driver Free and open-source graphics device driver, Wikipedia]</ref>
* Open manufacturing data: a process design kit models a foundry process for design tools. The SkyWater kit for a 130 nm process is published under the Apache 2.0 license.<ref name="sky">[https://github.com/google/skywater-pdk SkyWater PDK, GitHub]</ref>
* Open boards: the circuit board design is shared.
 
A fully open GPU would be open in every layer.
 
== Real projects ==
 
* '''Open Graphics Project.''' It set out to design an open graphics card. Its OGD1 was a passively cooled PCI card built around an FPGA, shipped from September 2010. The project expected to need about US$2,000,000 to start production of a custom chip.<ref name="ogp">[https://en.wikipedia.org/wiki/Open_Graphics_Project Open Graphics Project, Wikipedia]</ref>
* '''Nyuzi.''' An experimental GPGPU processor with a SystemVerilog design, an emulator, and an LLVM based compiler.<ref name="nyuzi">[https://github.com/jbush001/NyuziProcessor Nyuzi processor, GitHub]</ref>
* '''MIAOW.''' An open implementation of the AMD Southern Islands GPU instruction set.<ref name="miaow">[https://github.com/VerticalResearchGroup/miaow MIAOW, GitHub]</ref>
* '''Vortex.''' A full-stack open GPGPU built on RISC-V. A 2021 paper reported an FPGA version with 32 cores and a peak of 25.6 GFlops at 200 MHz.<ref name="vortex">[https://github.com/vortexgpgpu/vortex Vortex GPGPU, GitHub]</ref> This is a research design, not a rival to commercial cards.
* '''Libre-SOC.''' A hybrid CPU, VPU, and GPU in one processor, based on OpenPOWER with added vector style instructions. Its first target is a low-power mobile chip with a 2.5 watt budget. It is not a dedicated GPU.<ref name="libresoc">[https://libre-soc.org/3d_gpu/ Libre-SOC 3D GPU page]</ref>
* '''VeriGPU.''' A plan for an open machine learning GPU that uses the 16-bit brain floating point format to keep chip area low. The author does not intend to build the chip himself.<ref name="verigpu">[https://github.com/hughperkins/VeriGPU VeriGPU, GitHub]</ref>
 
Most open progress has come in software. Nouveau builds free drivers for NVIDIA GPUs, and its NVK driver is a conformant Vulkan 1.4 implementation as of December 2024.<ref name="nouveau">[https://nouveau.freedesktop.org/ Nouveau project page]</ref> In 2014 Broadcom released documentation for the VideoCore IV graphics core used in the Raspberry Pi, but the firmware stayed closed.<ref name="videocore">[https://en.wikipedia.org/wiki/VideoCore VideoCore, Wikipedia]</ref> An open driver can still run on a closed chip.
 
== Hard problems ==
 
* Cost. Chip manufacturing is expensive. Open design kits and shared runs such as Tiny Tapeout aim to lower the price of small experiments.<ref name="tt">[https://tinytapeout.com/ Tiny Tapeout]</ref>
* Software size. A usable GPU needs compilers, a kernel driver, and graphics and compute libraries. The Vortex authors say this complexity is one reason open GPU work is rare.<ref name="vortex" />
* Patents. The patents on S3 Texture Compression were a major obstacle to open source implementations. They expired in 2017 and 2018.<ref name="s3tc">[https://en.wikipedia.org/wiki/S3_Texture_Compression S3 Texture Compression, Wikipedia]</ref> This page is not legal advice.
* Memory bandwidth. A processor can only use data as fast as memory delivers it, and real rates fall below the advertised maximum.<ref name="mb">[https://en.wikipedia.org/wiki/Memory_bandwidth Memory bandwidth, Wikipedia]</ref>
 
== Fanless and low power ==
 
Phones and laptops have small batteries and little room for cooling, so efficiency matters. Putting the processor, GPU, memory interfaces, and display circuits on one chip removes the power spent driving fast links between chips.<ref name="videocore" /> Libre-SOC states that above about 4 watts a chip needs metal packages and more careful thermal design.<ref name="libresoc" /> The passively cooled OGD1 shows that a fanless board is possible.
 
One idea for discussion is a scalable core. A small configuration could serve a fanless phone or silent laptop, and a larger one with more cores could serve a desktop. Vortex already lets a builder choose the number of cores, warps, and threads.<ref name="vortex" /> This is a proposal, not a product. See also [[Open silent laptop|Open silent laptop]] and [[Open design solid state laptop|Open design solid state laptop]].
 
== Discussion questions, essay ideas, and learning related AI prompt ideas ==
 
Discussion questions
 
* What is the difference between an open driver and an open chip?
* Which is the larger barrier to an open GPU, manufacturing cost or software size?
 
Essay ideas
 
* Compare the five layers of openness and argue which should come first.
* Describe a fanless laptop graphics chip and the trade-offs it needs.
 
AI prompt ideas
 
* Explain how a GPU differs from a CPU for a high school student, then quiz me with five questions.
* Compare Nyuzi, MIAOW, Vortex, Libre-SOC, and VeriGPU in a table and list which claims I should verify at the project sites.
 
== Learning, teaching, and research ==
 
A teacher can start with the layers of openness and ask students to place each project from the list in the right layer. A student can read the Nyuzi or Vortex source and trace how one instruction moves from the compiler to the simulator. Project ideas include running a published design in simulation or measuring how memory bandwidth limits a simple program. Research directions include small instruction set extensions for graphics, reduced precision formats, open firmware, and designs that stay within a few watts. Check project sites for current status.
 
== Readings from Wikipedia ==
 
* [[Wikipedia:Graphics processing unit|Graphics processing unit]]
* [[Wikipedia:General-purpose computing on graphics processing units|General-purpose computing on graphics processing units]]
* [[Wikipedia:Floating-point arithmetic|Floating-point arithmetic]]
* [[Wikipedia:Performance per watt|Performance per watt]]
* [[Wikipedia:Open-source hardware|Open-source hardware]]
* [[Wikipedia:Free and open-source graphics device driver|Free and open-source graphics device driver]]
* [[Wikipedia:Mesa (computer graphics)|Mesa]]
* [[Wikipedia:RISC-V|RISC-V]]
* [[Wikipedia:Field-programmable gate array|Field-programmable gate array]]
 
== See also ==
 
{{Col}}
* [[Open design computer|Open computer]]
* [[Open cell phone|Open cell phone]]
* [[Open design CPU|Open CPU]]
* [[Open design memory|Open memory]]
* [[Archive:Open SSD|Open SSD]]
{{break}}
* [[Open design electronics|Open design electronics]]
* [[Open design tablet computer|Open design tablet computer]]
* [[Open silent laptop|Open silent laptop]]
* [[Open design|Open design]]
{{colend}}
 
== External links ==
 
* [https://docs.mesa3d.org/ Mesa 3D Graphics Library]
* [https://nouveau.freedesktop.org/ Nouveau project]
* [https://vortex.cc.gatech.edu/ Vortex project site]
* [https://libre-soc.org/3d_gpu/ Libre-SOC 3D GPU]
* [https://tinytapeout.com/ Tiny Tapeout]
 
== References ==
 
<references />
 
[[Category:Open technology]]
[[Category:Open design]]
[[Category:Open design electronics]]