26、2000 - 2018 年开源 GPU 项目概览

2000 - 2018 年开源 GPU 项目概览

在计算机硬件发展的历程中,开源 GPU 项目逐渐崭露头角,为行业带来了新的活力和可能性。本文将介绍几个 2000 - 2018 年间具有代表性的开源 GPU 项目。

1. SCRATCH(2017)

2017 年 10 月,来自葡萄牙科英布拉大学和里斯本大学的 Pedro Duarte、Pedro Tomas 和 Gabriel Falcao 在 ACM MICRO - 50‘17 研讨会上展示了关于 SCRATCH 的论文。SCRATCH 是一种软 GPGPU 架构及修剪工具。

当前,高性能和嵌入式超级计算设备与系统中的先进信号处理和人工智能算法受限于功耗。虽然 GPU 在许多计算密集型应用中有助于提高每瓦吞吐量性能,但智能系统的自主性需求要求更高效的、以功耗为导向的定制架构。这种架构需针对每个应用进行专门调整,同时支持遗留代码。

研究人员提出了新的 SCRATCH 框架,该框架能自动识别每个应用内核在指令集和计算单元方面的特定需求,从而生成特定于应用且可在 FPGA 上实现的、精简版的类 GPU 架构。他们的工作基于原始 MIAOW 系统的改进版本,扩展设计以支持 156 条指令,并增强了对双时钟域内快速预取内存系统的支持。

实验结果显示,与原始 MIAOW 系统相比,SCRATCH 在整数和浮点算术基准测试中平均实现了 140 倍的加速和 115 倍的能源效率提升(每焦耳指令数)。与未进行修剪的优化版本相比,也实现了 2.4 倍的加速和 2.1 倍的能源效率提升。

2. Libre - GPU(2018)

2018 年,Luke Kenneth Casson Leighton 在海牙发起了 Libre - GPU 开源项目。Leighton 在研究了超过一百个片上系统(SoC)后,发现没有一个是完全开源的,它们大多存在 GPU 固件、VPU 固件、BIOS 封闭,内置 DRM 电子熔丝,甚至存在明显的 GPL 版权侵犯问题。

Leighton 提出的 libre RISC - V M 类是一款用于移动设备的 100% 开源的 RISC - V + 3D GPU 芯片。该项目旨在提供一个完全免费的开源片上系统。最初设计使用带有扩展的 RISC - V 处理器 ISA 以增强并行处理能力,GPU 本质上基于软件并使用 Khronos Vulkan API 结构。

Leighton 强调这是一个混合 CPU、VPU 和 GPU 的设计,并非专门的独立 GPU,但也有创建独立 GPU 产品的选项。主要目标是设计一个完整的 SoC,将获得开源许可的 VPU 和 GPU 加速指令集成到主 CPU 中,这将大大简化驱动开发、应用集成和调试,降低成本并缩短上市时间。

该项目最初是 RISC - V Vulkan 加速器设计,但由于保密协议和组织问题,Leighton 放弃了 RISC - V 并转向 OpenPOWER ISA。2018 年的原始设计目标较为适度,为 1280 × 720 分辨率、25 FPS 和 5 - 6 GFLOPS,最初设想的应用平台是 Chromebook 类型的笔记本电脑。

在 2021 年 2 月的 FOSDEM 会议上,Leighton 展示了他在混合 CPU/VPU/GPU OpenPOWER 方面的持续工作,并宣布该项目将完全开源,包括硬件设计。2021 年他的重点是开发嵌入式 SoC,而非为 AIB 构建基于 PCIe 的 GPU。对于 Vulkan 实现,他继续使用基于 Rust 的 Kazan 实现,并带有针对 RISC - V 的 Simple - V 扩展等设计元素,以提高 Vulkan 软件实现的效率。

Rust 是一种多范式编程语言,专为性能和安全设计,尤其适用于安全并发编程。它由 Mozilla 员工 Graydon Hoare 在 2006 年发起的个人项目发展而来,2009 年 Mozilla 开始赞助该项目,并于 2010 年宣布。自 2016 年以来,Rust 在 Stack Overflow 开发者调查中多次被评为“最受喜爱的编程语言”。

3. Vortex:RISC - V GPU(2019)

2019 年,佐治亚理工学院的研究人员开始研究 GPU 在计算应用中的并行处理能力。他们认为,如果能在 FPGA 中构建 GPU 的 SIMD 功能,可能会降低成本并提供更灵活的计算机加速器。同时,他们希望将设计和支持软件开源,于是发起了 Vortex 项目,即用于架构研究的可重构 RISC - V GPGPU 加速器。

由于 GPU 的 ISA 和软件栈的复杂性,公共领域中开源 GPU 基础设施较少。研究人员首先提出了对 RISC - V 的 ISA 扩展,以支持 GPGPU 和图形处理。该扩展的主要目标是最小化 ISA 更改,从而使对开源生态系统的相应更改也最小化,以创建可持续的开发生态系统。

为了证明最小扩展的 RISC - V ISA 的可行性,他们在 FPGA 上实现了 Vortex 的完整软件和硬件栈。Vortex 是一个基于 PCIe 的软 GPU,支持 OpenCL 和 OpenGL,可用于机器学习、图分析和图形渲染等多种应用。研究人员预测,在 Altera Stratix 10 FPGA 上,Vortex 最多可扩展到 32 个核心,并在 200 MHz 时提供 25.6 GFLOPS 的峰值性能。

Vortex 希望利用围绕 RISC - V 快速发展的开源社区以及开源的 LLVM 和 POCL 编译器,为 GPGPU 计算提供整体解决方案。他们计划在未来扩展 Vortex 的编译器和运行时软件,以支持 CUDA 和 Vulkan API,并支持 ASIC 设计流程,为芯片制造提供路线图。

4. RV64X(2019)

由 Atif Zafar 博士领导的一群爱好者提出了一组新的用于 3D 图形和媒体处理的图形指令。这些指令基于 RISC - V 基本向量指令集构建,以分层扩展的方式添加了对特定图形数据类型的支持,可实现融合的 CPU - GPU ISA。该团队自称为 RV64X 组,因为指令长度为 64 位(尽管数据路径为 32 位宽,但 32 位不足以支持强大的 ISA)。

商业 GPU 在满足一些特殊需求(如双相 3D 视锥体裁剪、自适应高性能计算(任意位深度 FFT)和硬件 SLAM)方面效果不佳。RV64X 组认为合作可以提供灵活的标准,减少原本需要的 10 - 20 人年的工作量,并有助于交叉验证以避免错误。

该设计的动机是创建一个小而高效的设计,具有自定义可编程性和可扩展性,提供低成本的 IP 所有权和开发,且不与商业产品竞争。它可以在 FPGA 和 ASIC 目标上实现,并且是免费和开源的。初始设计针对低功耗微控制器,符合 Khronos Vulkan 标准,并支持其他 API(如 OpenGL、DirectX 等)。

RV64X 设计采用 RISC - V 核心和 GPU 功能单元,对程序员而言,64 位长的指令被编码为标量指令,编程模型看似是 SIMD,编译器会从预定义的标量操作码生成 SIMD。设计包括可变发射、预测 SIMD 后端、向量前端、精确异常处理、分支阴影等。无需 RPC/IPC 调用机制在 CPU 和 GPU 内存空间之间传输 3D API 调用。

该设计使用 Vblock 格式,类似于 VLIW,指令块前缀有寄存器标签,子块包含向量长度、重排、向量和宽度覆盖以及预测等信息。它支持标量(8、16、24 和 32 位定点和浮点)和超越函数(如 sincos、atan、pow 等),向量(RV32 - V)支持 2 - 4 元素(8、16 或 32 位/元素)的向量操作以及用于 3D 图形渲染管道的特殊指令。

RV64X 参考实现包括:
- 指令/数据 SRAM 缓存(32 KB)
- 微代码 SRAM(8 KB)
- 双功能指令解码器:硬连线实现 RV32V 和 X,微代码指令解码器用于自定义 ISA
- 四向量 ALU(32 位/ALU,定点/浮点)
- 136 位寄存器文件(1K 元素)
- 特殊功能单元
- 纹理单元
- 可配置的本地帧缓冲区

RV64X 设计具有融合统一的 CPU - GPU ISA、可配置的自定义数据类型寄存器以及基于用户定义的 SRAM 微代码的应用自定义硬件扩展等新颖特性,适用于自定义光栅化阶段、光线追踪、机器学习和计算机视觉等领域。该设计既可以作为独立的图形微控制器,也可以作为可扩展的着色器单元,数据格式支持 FPGA 原生或 ASIC 实现。

目前大多数图形处理器主要针对高端应用,如游戏、高频交易、计算机视觉和机器学习等。而对于诸如信息亭、广告牌、赌场游戏、玩具、机器人、家电、可穿戴设备、工业人机界面、信息娱乐系统、汽车仪表盘等主流应用,缺乏可扩展的图形核心。RV64X 团队认为,RISC - V 的图形扩展将解决可扩展性和多语言编程的负担,推动更多用例创新。

团队计划建立讨论论坛,并立即着手构建一个带有指令集模拟器的示例实现,使用开源 IP 进行 FPGA 实现,并将自定义 IP 设计为开源项目。

开源 GPU 项目的意义

开源 GPU 项目借鉴了开源软件社区的成功经验。开源软件是根据许可证发布的计算机软件,版权持有者授予用户使用、研究、修改和分发软件及其源代码的权利。Khronos 及其不断增长的 API 和工具库就是开源软件的一个优秀范例,它通过吸引各方参与来开发倡议、标准和定义,形成了强大而持久的行业标准。

开源 GPU 项目希望效仿这种模式并取得成功,为计算机硬件领域带来更多的创新和发展机会。随着这些项目的推进,我们有望看到更多高效、灵活且开源的 GPU 解决方案出现,满足不同领域的多样化需求。

总的来说,这些开源 GPU 项目在不同方面进行了探索和创新,为未来 GPU 技术的发展奠定了基础。无论是在功耗优化、架构设计、指令集扩展还是应用场景拓展方面,都展现出了巨大的潜力。相信在开源社区的共同努力下,GPU 技术将迎来更加繁荣的发展。

以下是这些项目的对比表格:
| 项目名称 | 发起时间 | 主要特点 | 应用场景 | 性能表现 |
| ---- | ---- | ---- | ---- | ---- |
| SCRATCH | 2017 年 | 自动识别应用内核需求,生成精简架构,基于 MIAOW 改进 | 高性能和嵌入式超级计算 | 平均 140 倍加速,115 倍能源效率提升 |
| Libre - GPU | 2018 年 | 混合 CPU、VPU 和 GPU,使用 Vulkan API,后转向 OpenPOWER ISA | 移动设备、Chromebook 类型笔记本 | 初始目标 1280 × 720 分辨率、25 FPS 和 5 - 6 GFLOPS |
| Vortex | 2019 年 | 基于 RISC - V ISA 扩展,支持 OpenCL 和 OpenGL | 机器学习、图分析、图形渲染 | 最多 32 个核心,200 MHz 时 25.6 GFLOPS 峰值性能 |
| RV64X | 2019 年 | 融合 CPU - GPU ISA,支持多种图形指令和数据类型 | 3D 图形和媒体处理、主流应用 | - |

下面是一个简单的 mermaid 流程图,展示这些项目的发展时间线:

graph LR
    A[SCRATCH 2017] --> B[Libre - GPU 2018]
    B --> C[Vortex 2019]
    C --> D[RV64X 2019]

这些开源 GPU 项目的发展,反映了计算机硬件领域对开放、创新和高效的追求。它们不仅为研究人员提供了实验和探索的平台,也为开发者和用户带来了更多的选择和可能性。未来,我们期待这些项目能够不断发展和完善,为计算机图形处理和计算领域带来更多的突破。

2000 - 2018 年开源 GPU 项目概览

开源 GPU 项目的技术亮点分析
  1. 指令集与架构创新

    • SCRATCH :其核心亮点在于能够自动识别应用内核的指令集和计算单元需求,进而生成定制化的精简架构。这种架构的生成方式充分考虑了资源和功耗限制,使得在不同应用场景下都能实现高效的性能表现。例如,在检测到内核中的整数和浮点指令后,架构会进行针对性的修剪,以支持相应的功能单元类型,从而提高能源效率和计算速度。
    • RV64X :基于 RISC - V 基本向量指令集构建的 64 位图形指令集是一大创新。它以分层扩展的方式添加了对特定图形数据类型的支持,实现了融合的 CPU - GPU ISA。这种设计不仅能够满足 3D 图形和媒体处理的需求,还具备可扩展性,适用于多种应用场景。同时,其采用的 Vblock 格式类似于 VLIW,通过指令块前缀的寄存器标签和子块信息,为指令执行提供了更多的上下文和灵活性。
  2. 软件与硬件的协同优化

    • Vortex :通过在 FPGA 上实现完整的软件和硬件栈,展示了软件与硬件协同工作的优势。它提出的对 RISC - V 的 ISA 扩展,在最小化 ISA 更改的同时,实现了 GPGPU 和图形处理功能。这种设计使得开源生态系统的更改最小化,有利于创建可持续的开发生态系统。同时,Vortex 支持 OpenCL 和 OpenGL 等多种 API,可用于机器学习、图分析和图形渲染等多种应用,体现了软件与硬件的紧密结合。
    • Libre - GPU :使用 Khronos Vulkan API 结构,将 GPU 设计为软件基础,与 CPU、VPU 进行混合设计。这种方式简化了驱动开发、应用集成和调试过程,降低了成本并缩短了上市时间。同时,在 Vulkan 实现中使用基于 Rust 的 Kazan 实现,并带有针对 RISC - V 的 Simple - V 扩展,进一步提高了软件实现的效率。
开源 GPU 项目的应用前景
  1. 主流应用市场的拓展
    • 目前大多数商业 GPU 主要针对高端应用,而开源 GPU 项目如 RV64X 则着眼于主流应用市场。像信息亭、广告牌、赌场游戏、玩具、机器人、家电、可穿戴设备、工业人机界面、信息娱乐系统、汽车仪表盘等领域,对图形处理有一定需求,但缺乏可扩展的图形核心。RV64X 的设计可以满足这些领域的需求,为这些应用提供高效、低成本的图形解决方案。
  2. 新兴技术领域的支持
    • 在机器学习、计算机视觉、光线追踪等新兴技术领域,开源 GPU 项目也具有重要的应用前景。例如,Vortex 可用于机器学习和图分析,其在 FPGA 上的可扩展性和高性能表现为这些领域的研究和应用提供了有力支持。RV64X 的融合 CPU - GPU ISA 设计以及对自定义硬件扩展的支持,使其能够很好地应用于光线追踪和机器学习等领域,为这些新兴技术的发展提供了新的思路和方法。
开源 GPU 项目面临的挑战
  1. 技术实现难度
    • 尽管这些开源 GPU 项目提出了许多创新的设计理念,但在实际技术实现过程中面临着诸多挑战。例如,在 FPGA 上实现复杂的 GPU 功能,需要解决硬件资源分配、时序优化、信号处理等一系列技术难题。同时,要实现软件与硬件的高效协同工作,也需要对编译器、驱动程序等进行深入的优化和开发。
  2. 市场竞争压力
    • 商业 GPU 市场已经相对成熟,NVIDIA、AMD 等巨头占据了大部分市场份额。开源 GPU 项目要在市场上立足,需要在性能、成本、兼容性等方面具备竞争力。然而,商业 GPU 厂商拥有强大的研发实力和资金支持,能够不断推出高性能的产品。开源 GPU 项目需要在技术创新的基础上,加强市场推广和应用开发,才能在激烈的市场竞争中获得一席之地。
未来发展趋势展望
  1. 技术融合与创新
    • 未来的开源 GPU 项目可能会进一步融合多种技术,如人工智能、量子计算等。例如,将人工智能算法应用于 GPU 的资源管理和性能优化,或者探索量子计算在 GPU 加速中的应用。同时,不断进行架构和指令集的创新,以满足不断增长的计算需求和新兴应用场景的要求。
  2. 社区合作与生态建设
    • 开源项目的成功离不开社区的支持和合作。未来,开源 GPU 项目将更加注重社区建设,吸引更多的开发者、研究人员和企业参与。通过社区的力量,共同推动项目的发展,完善软件和硬件生态系统,提高项目的影响力和市场竞争力。
总结

开源 GPU 项目在 2000 - 2018 年间取得了显著的进展,多个项目在指令集、架构、软件与硬件协同等方面进行了创新和探索。这些项目不仅为计算机硬件领域带来了新的活力和可能性,也为不同领域的应用提供了更多的选择和解决方案。然而,开源 GPU 项目也面临着技术实现难度和市场竞争压力等挑战。未来,随着技术的不断发展和社区的不断壮大,开源 GPU 项目有望在技术融合、市场拓展和生态建设等方面取得更大的突破,为计算机图形处理和计算领域的发展做出更大的贡献。

以下是一个表格,总结开源 GPU 项目的技术亮点和应用前景:
| 项目名称 | 技术亮点 | 应用前景 |
| ---- | ---- | ---- |
| SCRATCH | 自动识别需求生成精简架构,提高能源效率和计算速度 | 高性能和嵌入式超级计算 |
| Libre - GPU | 混合设计,使用 Vulkan API,简化开发流程 | 移动设备、Chromebook 类型笔记本 |
| Vortex | 基于 RISC - V ISA 扩展,软件硬件协同优化 | 机器学习、图分析、图形渲染 |
| RV64X | 融合 CPU - GPU ISA,支持多种图形指令和数据类型 | 3D 图形和媒体处理、主流应用 |

下面是一个 mermaid 流程图,展示开源 GPU 项目未来的发展趋势:

graph LR
    A[技术融合与创新] --> B[社区合作与生态建设]
    B --> C[市场拓展与应用开发]
    C --> D[开源 GPU 项目成功发展]

通过对这些开源 GPU 项目的研究和分析,我们可以看到开源技术在计算机硬件领域的巨大潜力。相信在未来,开源 GPU 项目将不断发展壮大,为推动整个行业的进步做出重要贡献。

【Koopman】遍历论、动态模态分解和库普曼算子谱特性的计算研究(Matlab代码实现)内容概要:本文围绕【Koopman】遍历论、动态模态分解和库普曼算子谱特性的计算研究展开,重点介绍基于Matlab的代码实现方法。文章系统阐述了遍历理论的基本概念、动态模态分解(DMD)的数学原理及其与库普曼算子谱特性之间的内在联系,展示了如何通过数值计算手段分析非线性动力系统的演化行为。文中提供了完整的Matlab代码示例,涵盖数据驱动的模态分解、谱分析及可视化过程,帮助读者理解并复现相关算法。同时,文档还列举了多个相关的科研方向和技术应用场景,体现出该方法在复杂系统建模与分析中的广泛适用性。; 适合人群:具备一定动力系统、线性代数与数值分析基础,熟悉Matlab编程,从事控制理论、流体力学、信号处理或数据驱动建模等领域研究的研究生、博士生及科研人员。; 使用场景及目标:①深入理解库普曼算子理论及其在非线性系统分析中的应用;②掌握动态模态分解(DMD)算法的实现与优化;③应用于流体动力学、气候建模、生物系统、电力系统等领域的时空模态提取与预测;④支撑高水平论文复现与科研项目开发。; 阅读建议:建议读者结合Matlab代码逐段调试运行,对照理论推导加深理解;推荐参考文中提及的相关研究方向拓展应用场景;鼓励在实际数据上验证算法性能,并尝试改进与扩展算法功能。
本系统采用微信小程序作为前端交互界面,结合Spring Boot与Vue.js框架实现后端服务及管理后台的构建,形成一套完整的电子商务解决方案。该系统架构支持单一商户独立运营,亦兼容多商户入驻的平台模式,具备高度的灵活性与扩展性。 在技术实现上,后端以Java语言为核心,依托Spring Boot框架提供稳定的业务逻辑处理与数据接口服务;管理后台采用Vue.js进行开发,实现了直观高效的操作界面;前端微信小程序则为用户提供了便捷的移动端购物体验。整套系统各模块间紧密协作,功能链路完整闭环,已通过严格测试与优化,符合商业应用的标准要求。 系统设计注重业务场景的全面覆盖,不仅包含商品展示、交易流程、订单处理等核心电商功能,还集成了会员管理、营销工具、数据统计等辅助模块,能够满足不同规模商户的日常运营需求。其多店铺支持机制允许平台方对入驻商户进行统一管理,同时保障各店铺在品牌展示、商品销售及客户服务方面的独立运作空间。 该解决方案强调代码结构的规范性与可维护性,遵循企业级开发标准,确保了系统的长期稳定运行与后续功能迭代的可行性。整体而言,这是一套技术选型成熟、架构清晰、功能完备且可直接投入商用的电商平台系统。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值