图形处理单元上的通用计算(GPGPU)

       图形处理单元上的通用计算(英语:General-purpose computing on graphics processing units,简称GPGPU或GP²U),是利用处理图形任务的图形处理器来计算原本由中央处理器处理的通用计算任务。这些通用计算任务通常与图形处理没有任何关系。由于现代图形处理器有强大的并行处理能力和可编程流水线,令图形处理器也可以处理非图形数据。特别是在面对单指令流多数据流(SIMD)且数据处理的运算量远大于数据调度和传输的需要时,通用图形处理器在性能上大大超越了传统的中央处理器应用程序。

一、GPGPU Definition

A General-Purpose Graphics Processing Unit (GPGPU) is a graphics processing unit (GPU) that is programmed for purposes beyond graphics processing, such as performing computations typically conducted by a Central Processing Unit (CPU).

  • What is GPGPU?

GPGPU, also known as GPGPU computing, refers to the increasingly commonplace, modern trend of using GPUs for non-specialized computations in addition to their traditional purpose of computation for computer graphics. Incorporating GPUs for general purposes enhances CPU architecture by accelerating portions of an application while the rest continues to run on the CPU, ultimately creating an overall faster, high-performance application by combining CPU and GPU processing power. 
       Harnessing the power of GPUs for general purposes can be accomplished via parallel computing platforms, which allow software developers and engineers to access graphics cards and write programs that enable GPUs to manage any task that can be parallelized.

  • GPU vs GPGPU

Essentially all modern GPUs are GPGPUs. A GPU is a programmable processor on which thousands of processing cores run simultaneously in massive parallelism, where each core is focused on making efficient calculations, facilitating real-time processing and analysis of enormous datasets. While GPUs were originally designed primarily for the purpose of rendering images, GPGPUs can now be programmed to direct that processing power toward addressing scientific computing needs as well.

If a graphics card is compatible with any particular framework that provides access to general purpose computation, it is a GPGPU. The primary difference is that where GPU computing is a hardware component, GPGPU is fundamentally a software concept in which specialized programming and equipment designs facilitate massive parallel processing of non-specialized calculations.

  • What is GPGPU Acceleration?

GPGPU acceleration refers to a method of accelerated computing in which compute-intensive portions of an application are assigned to the GPU and general-purpose computing is relegated to the CPU, providing a supercomputing level of parallelism. While highly complex calculations are computed in the GPU, sequential calculations can be performed in parallel in the CPU. 
       Frameworks for GPGPU accelerated computing can be created by any language that allows the code running on the CPU to poll a GPU shader for return values. GPGPU acceleration creates an overall faster application by migrating data into graphical form for the GPU to process and analyze, leading to insightful GPU-Accelerated Analytics.

  • How to Use GPGPU

Writing GPU enabled applications requires a parallel computing platform and application programming interface (API) that allows software developers and software engineers to build algorithms to modify their application and map compute-intensive kernels to the GPU. GPGPU supports several types of memory in a memory hierarchy for designers to optimize their programs. GPGPU memory is used for transferring data between device and host -- shared memory is an efficient way for threads in the same block to share their runtime and data. A GPU Database uses GPU computation power to analyze massive amounts of information and return results in milliseconds.

GPGPU-Sim, developed at the University of British Columbia, provides a detailed simulation model of a contemporary GPU running CUDA and/or OpenCL workloads. Some open-source GPGPU benchmarks containing CUDA codes include: Rodinia benchmarks, SHOC, Tensor module in Eigen 3.0 open-source C++ template library for linear algebra, and SAXPY benchmark. Metal GPGPU, an Apple Inc. API, is a low-level graphics programming API for iOS and macOS but it can also be used for general-purpose compute on these devices.
       NVIDIA revolutionized the GPGPU and accelerated computing in 2007 with its creation of the Compute Unified Device Architecture (CUDA), the de facto computing language for image processing and algorithms.

  • GPGPU in CUDA

The CUDA platform is a software layer that gives direct access to the GPU's virtual instruction set and parallel computational elements for the execution of compute kernels. Designed to work with programming languages such as C, C++, and Fortran, CUDA is an accessible platform, requiring no advanced skills in graphics programming, and available to software developers through CUDA-accelerated libraries and compiler directives. CUDA-capable devices are typically connected with a host CPU and the host CPUs are used for data transmission and kernel invocation for CUDA devices.

The CUDA model for GPGPU accelerates a wide variety of applications, including GPGPU AI, computational science, image processing, numerical analytics, and deep learning. The CUDA Toolkit includes GPU-accelerated libraries, a compiler, programming guides, API references, and the CUDA runtime.

  • Does OmniSci Offer a GPGPU Solution?

The OmniSci platform provides an ecosystem of tools and solutions that enable users to harness the massive parallelism of GPUs. OmniSciDB, the foundation of the OmniSci platform, is designed to exploit efficient inter-GPU communication infrastructure such as NVIDIA NVLink when available, harnessing the power of GPUs and CPUs and returning SQL query results for enormous datasets in milliseconds.

二、GPGPU数学基础教程

  • Link:https://dev.gameres.com/Program/Visual/3D/GPGPU_math_Tutorial.html

三、从GPU到GPGPU

  • Link:https://www.jianshu.com/p/e72a352a2bd7

[GPGPU]图形处理单元上的通用计算相关推荐

  1. CUDA是Nvidia开发的一种并行计算平台和编程模型,用于在其自己的GPU(图形处理单元)上进行常规计算

    https://baike.baidu.com/item/CUDA/1186262?fr=aladdin CUDA是Nvidia开发的一种并行计算平台和编程模型,用于在其自己的GPU(图形处理单元)上 ...

  2. 《Real Time Rendering》第三章 图形处理单元

    历史上,硬件图加速器出现于管线的末端,首先是运行三角面扫描线的光珊化.紧接着的下一代硬件沿管线上溯,到一些更上级的层次,一些应用程序阶段的算法亦被囊括在硬件加速器的范围内.致力于使用硬件唯一的好处是其 ...

  3. 3维线程格 gpu_图形处理单元(GPU)

    图形处理单元(GPU) 1. GraphicsProcessingUnit(GPU) GPU就是图形处理单元是NVIDIA在1999年发布的GeForce256显卡中提出的概念.GPU是一组高度可并行 ...

  4. 《Real-Time Rendering 4th Edition》全文翻译 - 第3章 图形处理单元(GPU)(下)3.7 ~ 3.10

    赶在 2019 结束之前把第三章结束,提前祝大家新年快乐! 实时渲染(第四版)Real-Time Rendering (Fourth Edition) 第3章 图形处理单元(GPU) Chapter ...

  5. 《Real-Time Rendering 4th Edition》全文翻译 - 第3章 图形处理单元(GPU)(中)3.4 ~ 3.6

    不闹情绪了--好好学习,拯救世界-- 实时渲染(第四版)Real-Time Rendering (Fourth Edition) 第3章 图形处理单元(GPU) Chapter 3 The Graph ...

  6. 关于Linux Ubuntu20.04.4 如何在图形界面上切换用户

    由于在做关于hadoop的作业时,需要在图形界面上切换用户来启动eclipse从而实现在hdp用户下来进行操作,我们都知道如果只在命令行中切换用户,只需要使用以下命令 su - hdp 但是在命令行中 ...

  7. Matlab系列之二维图形(上)

    Matlab系列之二维图形(上) 简要 绘制基础 plot 文字标注 (1) 添加图形标题 (2)添加坐标轴标注 (3)图例 (4)文本注释 示例 程序 结果 线型.点型和颜色 坐标轴设置 示例 结果 ...

  8. Real-Time Rendering 翻译 3.图形处理单元

    历史上,图形硬件是从渲染管线的末端功能开始发展,最开始进行三角形的光栅化操作.经过成功的迭代,图形硬件从后往前接管渲染管线的功能,直达应用阶段直接向硬件提交数据.硬件相对于软件的唯一优势是速度,但速度 ...

  9. Real-Time Rendering 4th Edition 实时渲染第四版 第三章 图形处理单元(The Graphics Processing Unit)

    3.5 The Vertex Shader(顶点着色器) 顶点着色器是图3.2中展示的功能性管线中的第一个阶段.由于这是第一个直接在编程者控制下的阶段,故而需要注意在这个阶段前发生了一些数据操作.在被 ...

最新文章

  1. php中序列化与反序列化
  2. Linux调试技术介绍
  3. 个人信息管理系统代码_学生信息管理系统(springboot + vue)
  4. AWS Lambda现已支持.NET Core 2.0
  5. java将字符串转换成可执行代码
  6. 操作系统之(一篇文章让你简单搞定:什么是进程和线程)
  7. 高性能Web动画和渲染原理系列(2)——渲染管线和CPU渲染
  8. (12)FPGA时钟设计原则
  9. netty : websocketx.WebSocketHandshakeException: not a WebSocket handshake request: missing upgrade
  10. 计算机上怎么带源地址ping,怎么带源地址去ping服务器
  11. Android studio成品源码项目计步器锻炼跑步步数,该计步器实现了实时计步,设定计划提醒
  12. LaTeX 下载和安装
  13. 关于使用keil5软件进行stm32的简单嵌入编程
  14. [渝粤教育] 中国地质大学 工业通风及除尘 复习题 (2)
  15. 在PB中存图片入数据库及显示图片
  16. 2020 CM-BERT: Cross-Modal BERT for Text-Audio Sentiment Analysis
  17. 人脸识别 年龄 matlab,基于年龄变化的人脸识别
  18. 模拟电子技术 半导体基本知识 个人笔记
  19. android系统语言切换及系统烧写默认语言设置
  20. 为何NB-LOT 覆盖比较广

热门文章

  1. 【Python网络爬虫】爬虫常见加密解密算法
  2. 小程序云开发报出Error: errCode: -404011 cloud function execution error | errMsg: clou……错误
  3. 社保html源码,社保查询.html
  4. Python 不完全LU分解
  5. 按照lfw pairs.txt的格式生成自己的pairs.txt
  6. python queue 查询是否在队列中_Python queue队列
  7. java随笔三,真正的class大总结
  8. 中段尾段全段什么意思_什么头什么尾?汽车改装排气时有的换全段,中尾段,尾段,分别都有什么效果?...
  9. Borax.Lunardate:中国农历日期
  10. API监控:你应该衡量什么?