热门标签 | HotTags
当前位置:  开发笔记 > 程序员 > 正文

图形处理单元GPU的特点和编程模式

GPU和中央处理单元(CPU)是完全不同的计算架构。前者最初是旨在加速视频数据处理。近年来,GPU已成为专门为并行计算设计的硬件组件。让我们用一个例子来说明这一点。假设我们希望在书

GPU和中央处理单元(CPU)是完全不同的计算架构。前者最初是旨在加速视频数据处理。近年来,GPU已成为专门为并行计算设计的硬件组件。让我们用一个例子来说明这一点。假设我们希望在书中查找一个特定的单词。如果任务交给了CPU,它会从第一页到最后一页完整地阅读这本书,以查找单词,因为CPU是串行处理器,并按顺序进行搜索。然而,如果我们使用GPU,它是一个并行处理器,它将书分成大量部分,并同时读取所有部分。即使每个部分的读取速度都比CPU慢,整本书的读取时间也要短得多。将图形处理器用于非图形目的称为图形处理单元(GPGPU)上的通用计算。

最好的处理器之一Intel Core IV由八个内核组成,其中四个是通过超线程技术模拟的虚拟内核,用于改进计算的并行化。对于物理上存在的每个进程核,操作系统寻址两个虚拟处理器,然后尽可能在它们之间共享工作负载。同时,廉价的图形卡呈现了一种由10倍的核心IV组成的结构。例如,在Nvidia GTX 295中,480个线程或处理器被组合。如此大量的处理器赋予GPU巨大的并行计算能力。GPU在快速傅立叶变换计算(Moreland and Angel,2003)、信号处理(Fung and Mann,2004)、数字图像处理(Jeong等人,2011)、分子计算(蒙特卡洛和分子动力学模拟)(Ivan等人,2008;Alerstam等人,2008)等方面也有广泛的应用。Nvidia的王牌是CUDA,是一种并行计算体系结构,可通过多种编程语言供用户使用。换句话说,CUDA提供了使用GPU进行计算编程的机会。

GeForce:这是Nvidia设计的一系列GPU,用于本研究。GPU架构由芯片上的多个流处理器组成;参见图1(a)。它们被分组在分层组织的多处理器集群中;参见图1(b)。设备和主机分别是GPU和CPU。换句话说,大多数计算和数据都被卸载到设备(GPU)上,每个设备都有自己的随机存取存储器(RAM)。CPU和GPU的RAM分别称为动态RAM和设备存储器。每个多处理器都有一个可从其每个处理器访问的共享内存。此外,每个多处理器都有一个更大的内存空间,称为全局内存;参见图1(c)。全局存储器是主机和设备之间传输读/写或R/W信息的主要工具。通常,本地内存有一个小而快的空间,用于从全局内存调用数据,而线程存储在它们的本地寄存器中。根据图1(c),线程可以访问本地和全局存储器。此外,一些缓存被设置为加速对其存储器的访问。常量由主机初始化,并且对所有线程都可见。

 

 

 

 

图1.CUDA编程模型。(a) 调用执行模型,显示全局GPU结构,通过该结构,它能够并行化命令(SP对于流处理器是即时的);(b) 具有全局、常量和纹理内存不同部分的CUDA设备内存分配的详细图像,以及(c)线程和块分配的示意图,该示意图将内核描述为不同块和网格中的线程集合(具有修改,采用自Nvidia,2008)。

 名为kernel的操作用于以并行模式执行应用程序的各个部分,可以在不同的数据集上独立执行多次。因此,它相当于从主机调用并在设备上运行的函数。线程块是通过本地内存共享数据并同步执行工作的线程的集合。但是,不同块中的线程不能一起工作。一组块表示网格,如图1(c)所示。在任何时候,内核上的几个线程都会被执行;它们被称为线程块的网格。线程和块具有它们自己的标识,例如块ID,一维或二维,以及线程ID,其为1D、2D或3D,这简化了高速处理的存储器寻址。

应该指出的是,CUDA和CPU的线程之间存在一些差异。例如,CUDA线程非常轻量级,这是由于很少的创建开销和即时切换。CUDA并行使用数千个线程,而可用的CPU只能使用少数线程。该架构如图2所示。CUDA的主要步骤总结如下(见图2)。首先,在主机和设备上分别分配内存。然后,通过使用CUDA应用程序编程接口(API),将来自主机的数据复制到设备中,然后定义线程和块的数量。接下来,在每个线程上,内核函数与其他内核上的函数并行执行。最后,使用CUDA API将设备中的数据复制到主机上。

尽管GPU具有所有优点,但它也有一些局限性。例如,由于在当前可用的GPU中,一个块中的所有线程同时工作,因此让每个线程执行不同的操作是低效的。一旦其中一个完成了工作,我们就向它提供新数据。换句话说,在由多个网格点组成的第一组中,GPU执行并行计算。由于馈入GPU的组没有任何冲突,因此模拟很容易完成。然后,下一组网格点被传输到GPU。使用网格点组的一个优点是避免CPU和GPU之间的数据传输,因为两者之间的数据带宽传输相对较低,这使得在两者之间传输最小数据量至关重要。

 

来源 

[1] Tahmasebi P, Sahimi M, Mariethoz G, 等. Accelerating geostatistical simulations using graphics processing units (GPU)[J]. Computers & Geoscience, Elsevier, 2012.



推荐阅读
  • 非公版RTX 3080显卡的革新与亮点
    本文深入探讨了图形显卡的进化历程,重点介绍了非公版RTX 3080显卡的技术特点和创新设计。 ... [详细]
  • 2018年3月31日,CSDN、火星财经联合中关村区块链产业联盟等机构举办的2018区块链技术及应用峰会(BTA)核心分会场圆满举行。多位业内顶尖专家深入探讨了区块链的核心技术原理及其在实际业务中的应用。 ... [详细]
  • 本文详细介绍了如何在Ubuntu系统中下载适用于Intel处理器的64位版本,涵盖了不同Linux发行版对64位架构的不同命名方式,并提供了具体的下载链接和步骤。 ... [详细]
  • 探索电路与系统的起源与发展
    本文回顾了电路与系统的发展历程,从电的早期发现到现代电子器件的应用。文章不仅涵盖了基础理论和关键发明,还探讨了这一学科对计算机、人工智能及物联网等领域的深远影响。 ... [详细]
  • FinOps 与 Serverless 的结合:破解云成本难题
    本文探讨了如何通过 FinOps 实践优化 Serverless 应用的成本管理,提出了首个 Serverless 函数总成本估计模型,并分享了多种有效的成本优化策略。 ... [详细]
  • 本文将介绍如何编写一些有趣的VBScript脚本,这些脚本可以在朋友之间进行无害的恶作剧。通过简单的代码示例,帮助您了解VBScript的基本语法和功能。 ... [详细]
  • 资源推荐 | TensorFlow官方中文教程助力英语非母语者学习
    来源:机器之心。本文详细介绍了TensorFlow官方提供的中文版教程和指南,帮助开发者更好地理解和应用这一强大的开源机器学习平台。 ... [详细]
  • 数据库内核开发入门 | 搭建研发环境的初步指南
    本课程将带你从零开始,逐步掌握数据库内核开发的基础知识和实践技能,重点介绍如何搭建OceanBase的开发环境。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 深入探讨CPU虚拟化与KVM内存管理
    本文详细介绍了现代服务器架构中的CPU虚拟化技术,包括SMP、NUMA和MPP三种多处理器结构,并深入探讨了KVM的内存虚拟化机制。通过对比不同架构的特点和应用场景,帮助读者理解如何选择最适合的架构以优化性能。 ... [详细]
  • 本文将详细介绍如何在Linux操作系统中执行PHP脚本,包括环境配置、命令使用及验证方法。对于需要在Linux环境下开发或部署PHP应用的用户来说,这是一篇非常实用的文章。 ... [详细]
  • 本文探讨了现代信号处理系统的核心组件,包括数据转换、数据交互和数据处理。详细介绍了AD/DA转换、串/并转换、编解码转换等技术,并讨论了FPGA在信号处理中的应用及其实现方法。 ... [详细]
  • vivo发布iQOO 11系列:搭载骁龙8 Gen2与多项创新技术
    vivo正式推出iQOO 11系列智能手机,该系列搭载最新的高通骁龙8 Gen2处理器,并引入多项创新技术,致力于为用户提供卓越的性能和游戏体验。 ... [详细]
  • 在Java中,this是一个引用当前对象的关键字。如何通过this获取并显示其所指向的对象的属性和方法?本文详细解释了this的用法及其背后的原理。 ... [详细]
  • 本文详细介绍了网络存储技术的基本概念、分类及应用场景。通过分析直连式存储(DAS)、网络附加存储(NAS)和存储区域网络(SAN)的特点,帮助读者理解不同存储方式的优势与局限性。 ... [详细]
author-avatar
前前后后zzyyix
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有