爆款云主机2核4G限时秒杀,88元/年起!
查看详情

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
热门活动
  • 618智算钜惠季 爆款云主机2核4G限时秒杀,88元/年起!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 首保服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
      • 文档
      • 控制中心
      • 备案
      • 管理中心

      GPU及GPU通用计算编程模型简介

      首页 知识中心 云计算 文章详情页

      GPU及GPU通用计算编程模型简介

      2023-05-31 08:45:09 阅读次数:460

      CUDA,GPU

      以下内容来自网络总结:

               NVIDIA公司在1999年发布GeForce256时首先提出GPU(图形处理器)的概念,随后大量复杂的应用需求促使整个产业蓬勃发展至今。

          GPU英文全称Graphic Processing Unit,中文翻译为”图形处理器”。GPU从诞生之日起就以超越摩尔定律的速度发展,运算能力不断提升。业界很大研究者注意到GPU进行计算的潜力,于2003年SIGGRAPH大会上提出了GPGPU(General-purposecomputing on graphics units)的概念。GPU逐渐从由若干专用的固定功能单元(Fixed Function Unit)组成的专用并行处理器向以通用计算资源为主,固定功能单元为辅的架构转变。

          尽管GPU计算已经开始崭露头角,但GPU并不能完全替代X86解决方案,很多操作系统、软件以及部分代码现在还不能运行在GPU上,所谓的GPU+CPU异构超级计算机也并不是完全基于GPU进行计算。一般而言适合GPU运算的应用有如下特征:运算密集、高度并行、控制简单、分多个阶段执行,符合这些条件或者是可以改写成类似特征的应用程序,就能够在GPU上获取较高的性能。

          GPU是显示卡的“心脏、大脑”,也就相当于CPU在电脑中的作用,它决定了该显卡的档次和大部分性能,同时也是2D显示卡和3D显示卡的区别依据。2D显示芯片在处理3D图像和特效时主要依赖CPU的处理能力,称为“软加速”。3D显示芯片是将三维图像和特效处理功能集中在显示芯片内,也即所谓的“硬件加速”功能。显示芯片通常是显示卡上最大的芯片(也是引脚最多的)。现在市场上的显卡大多采用NVIDIA(英伟达)和AMD两家公司的图形处理芯片。

      GPU通用计算编程模型:

          GPU通用计算通常采用CPU+GPU异构模式,由CPU负责执行复杂逻辑处理和事务处理等不适合数据并行的计算,由GPU负责计算密集型的大规模数据并行计算。这种利用GPU强大处理能力和高带宽弥补CPU性能不足的计算方式以发挥计算机潜在性能,在成本和性价比方面有显著地优势。在2007年NIVDIA推出CUDA(Compute Unified DeviceArchitecture,统一计算设备架构)之前,GPU通用计算受硬件可编程性和开发方式的制约,开发难度较大。2007年以后,CUDA不断发展的同时,其他的GPU通用计算标准也被相继提出,如由Apple提出Khronos Group最终发布的OpenCL,AMD推出的Stream SDK,Microsoft则在其最新的Windows7系统中集成了DirectCompute以支持利用GPU进行通用计算。

          CUDA是一种将GPU作为数据并行计算设备的软硬件体系,硬件上NVIDIA GeForce8系列以后的GPU(包括GeForce、ION、Quadro、Tesla系列)已经采用支持CUDA的架构,软件开发包上CUDA也已经发展到CUDA Toolkit3.2(截止到2010年11月),并且支持Widows、Linux、MacOS三种主流操作系统。CUDA采用比较容易掌握的类C语言进行开发,而且正在开发适用于CUDA架构的用于科学计算的Fortran版本。无论是CUDA C-语言或是OpenCL,指令最终都会被驱动程序转换成PTX(Parallel ThreadExecution,并行线程执行,CUDA架构中的指令集,类似于汇编语言)代码,交由显示核心计算。

      CUDA编程模型将CPU作为主机(Host),GPU作为协处理器(co-processor)或者设备(Device)。在一个系统中可以存在一个主机和若干个设备。CPU、GPU各自拥有相互独立的存储地址空间:主机端内存和设备端显存。CUDA对内存的操作与一般的C程序基本相同,但是增加了一种新的pinned memory;操作显存则需要调用CUDA API存储器管理函数。一旦确定了程序中的并行部分,就可以考虑把这部分计算工作交给GPU。运行在GPU上的CUDA并行计算函数称为kernel(内核函数)。一个完整的CUDA程序是由一系列的设备端kernel函数并行步骤和主机端的串行处理步骤共同组成的。这些处理步骤会按照程序中相应语句的顺序依次执行,满足顺序一致性。

      CUDA SDK提供的API分为CUDA runtime API(运行时API)和CUDA driver API(驱动程序API)。CUDA runtime API在CUDA driver API的基础上进行了封装,隐藏了一些实现细节,编程更加方便。CUDA runtime API函数前都有CUDA前缀。CUDA driver API是一种基于句柄的底层接口,可以加载二进制或汇编形式的kernel模块,指定参数并启动运算。CUDA driver API编程复杂,但有时能通过直接操作硬件的执行实现一些更加复杂的功能或者获得更高的性能。由于它使用的设备端代码是二进制或者汇编代码,因此可以在各种语言中调用。CUDA driver API所有函数的前缀为cu。另外CUDA SDK也提供了CUFFT(CUDA Fast Fourier Transform,基于CUDA的快速傅立叶变换)、CUBLAS(CUDA Basic Linear Algebra Subprograms,基于CUDA的基本矩阵与向量运算库)和CUDPP(CUDA Data Parallel Primitives,基于CUDA的常用并行操作函数)等函数库,提供了简单高效的常用函数供开发者直接使用。

      从CUDA Toolkit3.0开始支持NVIDIA最新的Fermi架构,最大程度上利用Fermi架构在通用计算方面的优势。CUDA 3.0也开始支持C++的继承和模板机制提高编程灵活性,同时CUDA C/C++内核现在以标准ELF格式进行编译,开始支持硬件调试,还增加了一个新的Direct3D、OpenGL统一协作API,支持OpenGL纹理和Direct3D 11标准,支持所有的OpenCL特征。

      NVIDIA宣布最新版并行计算开发工具CUDA 6,相比此前的CUDA5.5有着革命性的巨大进步。CUDA 6的关键特性包括:同一寻址,可直接访问CPU内存、GPU显存,无需在彼此之间手动拷贝数据,可在大量编程语言中更简单地添加GPU加速支持。

      OpenCL(Open Computing Language,开放计算语言)是一个为异构平台编写程序的框架,此异构平台可由CPU、GPU或其他类型的处理器组成。OpenCL由用于编写kernels(在OpenCL设备上运行的函数)的语言(基于C99)和一组用于定义并控制平台的API组成。OpenCL提供了基于任务分区和数据分区的并行计算机制。

      OpenCL最初由Apple公司开发,Apple拥有其商标权,并在与AMD,IBM,Intel和NVIDIA技术团队的合作之下初步完善。随后,Apple将这一草案提交至Khronos Group。2008年6月16日,Khronos的通用计算工作小组成立。5个月后的2008年11月18日,该工作组完成了OpenCL 1.0规范的技术细节。该技术规范在由Khronos成员进行审查之后,于2008年12月8日公开发表。2010年6月14日,OpenCL1.1 发布。

      OpenCL也是基于C的一个程式语言,分为Platform Layer、Runtime、Compiler三个部分:Platform Layer用来管理计算装置,提供初始化装置的界面,并用来建立compute contexts和work-queues。Runtime用来管理资源,并执行程序的kernel。Compiler则是ISO C99的子集合,并加上了OpenCL特殊的语法。在OpenCL的执行模型中,有所谓的Compute Kernel和Compute Program。Compute Kernel基本上类似于CUDA定义的kernel,是最基本的计算单元;而Compute Program则是Compute Kernel和内建函数的集合,类似一个动态函数库。很大程度上OpenCL与CUDA Driver API比较相像。

      自从2008年12月NVIDIA在SIGGRAPHAsia大会上在笔记本电脑上展示全球首款OpenCL GPU演示以来,AMD、NVIDIA、Apple、RapidMind、Gallium3D、ZiiLABS、IBM、Intel先后发布他们自己的OpenCL规范实现(当一台机器上存在不同厂家的支持OpenCL的设备时,这样也给开发应用程序带来不统一的一些麻烦)。除了AMD和NVIDIA,其他厂商如S3、VIA等也纷纷发布他们支持OpenCL的硬件产品。

      OpenCL是第一个面向异构系统通用目的并行编程的开放式、免费标准,也是一个统一的编程环境,便于软件开发人员为高性能计算服务器、桌面计算系统、手持设备编写高效轻便的代码,而且广泛适用于多核心处理器(CPU)、图形处理器(GPU)、Cell类型架构以及数字信号处理器(DSP)等其他并行处理器,在游戏、娱乐、科研、医疗等各种领域都有广阔的发展前景,AMD-ATI、NVIDIA现在的产品都支持OPEN CL。

      Directcompute是一种由Microsoft开发和推广的用于GPU通用计算的应用程序接口,集成在Microsoft DirectX内,允许Windows Vista或Windows 7平台上运行的程序利用GPU进行通用计算。虽然DirectCompute最初在DirectX 11 API中得以实现,但支持DX10的GPU可以利用此API的一个子集进行通用计算(DirectX 10内集成Directcompute 4.0,DirectX 10.1内集成Directcompute 4.1),支持DirectX11的GPU则可以使用完整的DirectCompute功能(DirectX 11内集成Directcompute 5.0)。Directcompute和OpenCL都是开放标准,得到NVIDIA CUDA架构和ATI Stream技术的支持。

      Windows 7增加了视频即时拖放转换功能,可以将电脑中的视频直接转换到移动媒体播放器上,如果电脑中的GPU支持Directcompute,那么这一转换过程就将由GPU完成。其转换速度将达到CPU的5-6倍。Internet Explorer 9加入了对Directcompute技术的支持,可以调用GPU对网页中的大计算量元素做加速计算,另外Excel2010、Powerpoint2010均提供Directcompute技术支持。

      AMD的流计算模型其实也包含了流处理器架构和相应的软件包。AMD在2007年12月发布运行在Windows XP系统下的Steam SDK v1.0, 此SDK采用了Brook+作为开发语言,Brook+是AMD对斯坦福大学开发的Brook语言(基于ANSI C)的改进版本。Stream SDK为开发者提供对系统和平台开放的标准以方便合作者开发第三方工具。软件包包含了如下组件:支持Brook+的编译器,支持流处理器的设备驱动CAL(Compute Abstraction Layer),程序库ACML(AMD CoreMath Library)以及内核函数分析器。

      在Stream编程模型中,在流处理器上执行的程序称为kernel(内核函数),每个运行在SIMD引擎的流处理器上的kernel实例称为thread(线程),线程映射到物理上的运行区域称为执行域。流处理器调度线程阵列到线程处理器上执行,直到所有线程完成后才能运行下一个内核函数。

      Brook+是流计算的上层语言,抽象了硬件细节,开发者编写能够运行在流处理器上的内核函数,只需指定输入输出和执行域,无需知道流处理器硬件的实现。Brook+语言中两个关键特性是:Stream和Kernel。Stream是能够并行执行的相同类型元素的集合;Kernel是能够在执行域上并行执行的函数。Brook+软件包包含brcc和brt。brcc是一个源语言对源语言的编译器,能够将Brook+程序翻译成设备相关的IL(IntermediateLanguage),这些代码被后续链接、执行。brt是一个可以执行内核函数的运行时库,这些库函数有些运行在CPU上,有些运行在流处理器上。运行在流处理器上的核函数库又称为CAL(Compute Abstraction Layer)。CAL是一个用C编写的设备驱动库,允许开发者在保证前端一致性的同时对流处理器核心从底层进行优化。CAL提供了设备管理、资源管理、内核加载和执行、多设备支持、与3D 图形API交互等功能。同时,Stream SDK也提供了常用数学函数库ACML(AMD Core Math Library)供开发者快速获得高性能的计算。ACML包括基本完整的线性代数子例程、FFT运算例程、随机数产生例程和超越函数例程。

      面对NVIDIA在GPU通用计算上的不断创新,AMD也不甘示弱,不断改进自己的Stream SDK。截止到2010年11月,AMD发布了Stream SDK v2.2,能够在WindowsXP SP3、Windows 7和部分Linux发行版上运行,开始支持OpenCL 1.1规范和双精度浮点数操作。

      版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://blog.csdn.net/fengbingchun/article/details/19619491,作者:fengbingchun,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。

      上一篇:计算机操作系统学习笔记

      下一篇:dremio 集群部署模式

      相关文章

      2025-04-18 08:02:09

      CUDA从入门到精通(二)——NVCC编译器介绍

      nvcc(NVIDIA CUDA Compiler)是 NVIDIA CUDA 编程工具链中的编译器驱动程序。它负责将基于 CUDA C/C++ 编写的代码编译成能够在 NVIDIA GPU 上执行的程序。

      2025-04-18 08:02:09
      CPU , CUDA , GPU , 代码 , 编译
      2025-04-18 08:02:09

      CUDA从入门到精通(一)——基于CUDA的异构并行计算

      CUDA从入门到精通(一)——基于CUDA的异构并行计算

      2025-04-18 08:02:09
      CUDA , GPU , 任务 , 线程 , 编程 , 计算
      2025-04-18 08:02:09

      CUDA从入门到精通(三)——CUDA编程示例

      CUDA(Compute Unified Device Architecture)是由 NVIDIA 提供的一种并行计算平台和编程模型。它允许开发者利用 NVIDIA GPU 的并行计算能力,编写可以在 GPU 上高效运行的代码,从而加速计算密集型任务。

      2025-04-18 08:02:09
      CUDA , GPU , 内存 , 程序 , 线程 , 释放
      2025-03-11 09:35:06

      Android 性能优化-过度绘制的实际解决措施

      Android 性能优化-过度绘制的实际解决措施

      2025-03-11 09:35:06
      GPU , gt , 像素 , 绘制
      2025-02-13 08:34:32

      pytorch深度学习前查看显卡,用nvidia-smi和nvidia-smi查看 -q查看电脑和服务器里的GPU参数情况以及一些英文参数指的意思

      pytorch深度学习前查看显卡,用nvidia-smi和nvidia-smi查看 -q查看电脑和服务器里的GPU参数情况以及一些英文参数指的意思

      2025-02-13 08:34:32
      GPU , 性能
      2024-11-21 09:55:25

      第一个GPU训练程序

      第一个GPU训练程序

      2024-11-21 09:55:25
      GPU , 程序运行 , 训练
      2024-11-06 07:16:52

      numpy加速包——Cupy

      numpy加速包——Cupy

      2024-11-06 07:16:52
      GPU , numpy , 数组
      2024-09-25 10:15:01

      如何在 GPU 上加速数据科学

      数据科学家需要算力。无论您是用 pandas 处理一个大数据集,还是用 Numpy 在一个大矩阵上运行一些计算,您都需要一台强大的机器,以便在合理的时间内完成这项工作。

      2024-09-25 10:15:01
      GPU
      2024-09-25 10:14:34

      k8s调用GPU

      k8s调用GPU

      2024-09-25 10:14:34
      GPU , k8s
      2024-05-20 09:53:58

      如何查看当前位置显存使用情况

      只要你能使用cuda,那么就可以直接使用头文件: #include "cuda_runtime_api.h"

      2024-05-20 09:53:58
      c++ , CUDA
      查看更多
      推荐标签

      作者介绍

      天翼云小翼
      天翼云用户

      文章

      33561

      阅读量

      5237000

      查看更多

      最新文章

      CUDA从入门到精通(一)——基于CUDA的异构并行计算

      2025-04-18 08:02:09

      查看更多

      热门文章

      CUDA从入门到精通(一)——基于CUDA的异构并行计算

      2025-04-18 08:02:09

      查看更多

      热门标签

      系统 测试 用户 分布式 Java java 计算机 docker 代码 数据 服务器 数据库 源码 管理 python
      查看更多

      相关产品

      弹性云主机

      随时自助获取、弹性伸缩的云服务器资源

      天翼云电脑(公众版)

      便捷、安全、高效的云电脑服务

      对象存储

      高品质、低成本的云上存储服务

      云硬盘

      为云上计算资源提供持久性块存储

      查看更多

      随机文章

      CUDA从入门到精通(一)——基于CUDA的异构并行计算

      • 7*24小时售后
      • 无忧退款
      • 免费备案
      • 专家服务
      售前咨询热线
      400-810-9889转1
      关注天翼云
      • 旗舰店
      • 天翼云APP
      • 天翼云微信公众号
      服务与支持
      • 备案中心
      • 售前咨询
      • 智能客服
      • 自助服务
      • 工单管理
      • 客户公告
      • 涉诈举报
      账户管理
      • 管理中心
      • 订单管理
      • 余额管理
      • 发票管理
      • 充值汇款
      • 续费管理
      快速入口
      • 天翼云旗舰店
      • 文档中心
      • 最新活动
      • 免费试用
      • 信任中心
      • 天翼云学堂
      云网生态
      • 甄选商城
      • 渠道合作
      • 云市场合作
      了解天翼云
      • 关于天翼云
      • 天翼云APP
      • 服务案例
      • 新闻资讯
      • 联系我们
      热门产品
      • 云电脑
      • 弹性云主机
      • 云电脑政企版
      • 天翼云手机
      • 云数据库
      • 对象存储
      • 云硬盘
      • Web应用防火墙
      • 服务器安全卫士
      • CDN加速
      热门推荐
      • 云服务备份
      • 边缘安全加速平台
      • 全站加速
      • 安全加速
      • 云服务器
      • 云主机
      • 智能边缘云
      • 应用编排服务
      • 微服务引擎
      • 共享流量包
      更多推荐
      • web应用防火墙
      • 密钥管理
      • 等保咨询
      • 安全专区
      • 应用运维管理
      • 云日志服务
      • 文档数据库服务
      • 云搜索服务
      • 数据湖探索
      • 数据仓库服务
      友情链接
      • 中国电信集团
      • 189邮箱
      • 天翼企业云盘
      • 天翼云盘
      ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
      公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
      • 用户协议
      • 隐私政策
      • 个人信息保护
      • 法律声明
      备案 京公网安备11010802043424号 京ICP备 2021034386号