楼主: 图腾部落

CUDA第四期有奖讨论:谈谈你对CUDA的架构的理解(活动已结束)

[复制链接]
论坛徽章:
0
51#
发表于 2010-1-6 22:04 | 只看该作者
  CUDA平台是透过运用显卡内的Unified Shader Processor进行数学运算,透过这项技术,应用软件可利用显卡强大的浮点处理能力进行运算,相较现时最快的处理器仍有十数倍的优势。CUDA平台支援C语言及在科学研究常用的Fortran语言,透过驱动程式的API接口,达成平行运算,若用户拥有超过两张或以上支援CUDA平台的显卡,驱动程式将透过PCI Express总线自动分配工作至不同GPU上,进一步提升效能。
 NVIDIA将在6月17日跟随GeForce GTX 200系列同日发布CUDA2.0平台,加入双精度运算支援,为应用提供更准确的运算结果,以气像预测为例,使用GeForce8800 GTX对比Pentium D 2.8GHz用于WRF模式气像运算,发现 GeForce 8800 GTX 拥有17倍的效能优势,Cost per FLOP则约为1.2X。

使用道具 举报

回复
论坛徽章:
0
52#
发表于 2010-1-6 22:07 | 只看该作者
从CUDA体系结构的组成来说,包含了三个部分:开发库、运行期环境和驱动
开发库是基于CUDA技术所提供的应用开发库。目前CUDA的1.1版提供了两个标准的数学运算库——CUFFT(离散快速傅立叶变换)和CUBLAS(离散基本线性计算)的实现。这两个数学运算库所解决的是典型的大规模的并行计算问题,也是在密集数据计算中非常常见的计算类型。开发人员在开发库的基础上可以快速、方便的建立起自己的计算应用。此外,开发人员也可以在CUDA的技术基础上实现出更多的开发库。
运行期环境提供了应用开发接口和运行期组件,包括基本数据类型的定义和各类计算、类型转换、内存管理、设备访问和执行调度等函数。基于CUDA开发的程序代码在实际执行中分为两种,一种是运行在CPU上的宿主代码(Host Code),一种是运行在GPU上的设备代码(Device Code)。不同类型的代码由于其运行的物理位置不同,能够访问到的资源不同,因此对应的运行期组件也分为公共组件、宿主组件和设备组件三个部分,基本上囊括了所有在GPGPU开发中所需要的功能和能够使用到的资源接口,开发人员可以通过运行期环境的编程接口实现各种类型的计算。

由于目前存在着多种GPU版本的NVIDIA显卡,不同版本的GPU之间都有不同的差异,因此驱动部分基本上可以理解为是CUDA-enable的GPU的设备抽象层,提供硬件设备的抽象访问接口。CUDA提供运行期环境也是通过这一层来实现各种功能的。目前基于CUDA开发的应用必须有NVIDIA CUDA-enable的硬件支持,NVIDIA公司GPU运算事业部总经理Andy Keane在一次活动中表示:一个充满生命力的技术平台应该是开放的,CUDA未来也会向这个方向发展。由于CUDA的体系结构中有硬件抽象层的存在,因此今后也有可能发展成为一个通用的GPGPU标准接口,兼容不同厂商的GPU产品

使用道具 举报

回复
论坛徽章:
0
53#
发表于 2010-1-6 22:08 | 只看该作者
CUDA(Compute Unified Device Architecture)是一个新的基础架构,这个架构可以使用GPU来解决商业、工业以及科学方面的复杂计算问题。它是一个完整的GPGPU解决方案,提供了硬件的直接访问接口,而不必像传统方式一样必须依赖图形API接口来实现GPU的访问。在架构上采用了一种全新的计算体系结构来使用GPU提供的硬件资源,从而给大规模的数据计算应用提供了一种比CPU更加强大的计算能力。CUDA采用C语言作为编程语言提供大量的高性能计算指令开发能力,使开发者能够在GPU的强大计算能力的基础上建立起一种效率更高的密集数据计算解决方案。

使用道具 举报

回复
求职 : 运营总监
论坛徽章:
5334
季节之章:春
日期:2012-10-18 11:31:282014年世界杯参赛球队: 比利时
日期:2014-06-17 14:51:542014年世界杯参赛球队: 希腊
日期:2014-06-17 14:52:18土豪章
日期:2014-06-17 14:56:11季节之章:夏
日期:2012-10-18 11:31:28季节之章:秋
日期:2012-10-18 11:31:28保时捷
日期:2014-01-16 15:25:49生肖徽章:鼠
日期:2014-12-29 16:57:00季节之章:冬
日期:2012-10-18 11:31:28奥运会纪念徽章:跆拳道
日期:2012-08-15 14:36:06
54#
发表于 2010-1-7 09:00 | 只看该作者
CUDA™ 工具包是一种针对支持CUDA功能的GPU(图形处理器)的C语言开发环境。CUDA开发环境包括:
  · nvcc C语言编译器
  · 适用于GPU(图形处理器)的CUDA FFT和BLAS库
  · 分析器
  · 适用于GPU(图形处理器)的gdb调试器(在2008年3月推出alpha版)
  · CUDA运行时(CUDA runtime)驱动程序(目前在标准的NVIDIA GPU驱动中也提供)
  · CUDA编程手册
  CUDA开发者软件开发包(SDK)提供了一些范例(附有源代码),以帮助使用者开始CUDA编程。这些范例包括:
  · 并行双调排序
  · 矩阵乘法
  · 矩阵转置
  · 利用计时器进行性能评价
  · 并行大数组的前缀和(扫描)
  · 图像卷积
  · 使用Haar小波的一维DWT
  · OpenGL和Direct3D图形互操作示例
  · CUDA BLAS和FFT库的使用示例
  · CPU-GPU C—和C++—代码集成
  · 二项式期权定价模型
  · Black-Scholes期权定价模型
  · Monte-Carlo期权定价模型
  · 并行Mersenne Twister(随机数生成)
  · 并行直方图
  · 图像去噪
  · Sobel边缘检测滤波器
  · MathWorks MATLAB®
  新的基于1.1版CUDA的SDK 范例现在也已经发布了。
  技术功能
  · 在GPU(图形处理器)上提供标准C编程语言
  · 为在支持CUDA的NVIDIA GPU(图形处理器)上进行并行计算而提供了统一的软硬件解决方案
  · CUDA兼容的GPU(图形处理器)包括很多:从低功耗的笔记本上用的GPU到高性能的,多GPU的系统。
  · 支持CUDA的GPU(图形处理器)支持并行数据缓存和线程执行管理器
  · 标准FFT(快速傅立叶变换)和BLAS(基本线性代数子程序)数值程序库
  · 针对计算的专用CUDA驱动
  · 经过优化的,从中央处理器(CPU)到支持CUDA的GPU(图形处理器)的直接上传、下载通道
  · CUDA驱动可与OpenGL和DirectX图形驱动程序实现互操作
  · 支持Linux 32位/64位以及Windows XP 32位/64位 操作系统
  · 为了研究以及开发语言的目的,CUDA提供对驱动程序的直接访问,以及汇编语言级的访问
  NVIDIA进军高性能计算领域,推出了Tesla&CUDA高性能计算系列解决方案,CUDA技术,一种基于NVIDIA图形处理器(GPU)上全新的并行计算体系架构,让科学家、工程师和其他专业技术人员能够解决以前无法解决的问题,作为一个专用高性能GPU计算解决方案,NVIDIA把超级计算能够带给任何工作站或服务器,以及标准、基于CPU的服务器集群
  CUDA是用于GPU计算的开发环境,它是一个全新的软硬件架构,可以将GPU视为一个并行数据计算的设备,对所进行的计算进行分配和管理。在CUDA的架构中,这些计算不再像过去所谓的GPGPU架构那样必须将计算映射到图形 API(OpenGL和Direct 3D)中,因此对于开发者来说,CUDA的开发门槛大大降低了。CUDA的GPU编程语言基于标准的C语言,因此任何有C语言基础的用户都很容易地开发 CUDA的应用程序。
  由于GPU的特点是处理密集型数据和并行数据计算,因此CUDA非常适合需要大规模并行计算的领域。目前CUDA除了可以用C语言开发,也已经提供FORTRAN的应用接口,未来可以预计CUDA会支持C++、Java、Python等各类语言。可广泛的应用在图形动画、科学计算、地质、生物、物理模拟等领域。
  2008年NVIDIA推出CUDA SDK2.0版本,大幅提升了CUDA的使用范围。使得CUDA技术愈发成熟
  目前,支持CUDA的GPU销量已逾1亿,数以千计的软件开发人员正在使用免费的CUDA软件开发工具来解决各种专业以及家用应用程序中的问题。这些应用程序从视频与音频处理和物理效果模拟到石油天然气勘探、产品设计、医学成像以及科学研究,涵盖了各个领域。 目前市面上已经部署了超过一亿颗支持CUDA的GPU,数以千计的软件开发人员正在使用免费的CUDA软件工具来为各种应用程序加速。
  CUDA 的核心有三个重要抽象概念: 线程组层次结构、共享存储器、屏蔽同步( barrier
  synchronization),可轻松将其作为C 语言的最小扩展级公开给程序员。
  CUDA 软件堆栈由几层组成,一个硬件驱动程序,一个应用程序编程接口(API)
  和它的Runtime, 还有二个高级的通用数学库,CUFFT 和CUBLAS。硬件被设计成支持轻
  量级的驱动和Runtime 层面,因而提高性能。

使用道具 举报

回复
论坛徽章:
12
生肖徽章2007版:鸡
日期:2008-01-02 17:35:532010新春纪念徽章
日期:2010-03-01 11:04:582010年世界杯参赛球队:尼日利亚
日期:2010-02-05 11:56:10祖国60周年纪念徽章
日期:2009-10-09 08:28:00生肖徽章2007版:猪
日期:2009-03-10 21:17:25CTO参与奖
日期:2009-01-15 11:42:46生肖徽章2007版:鼠
日期:2008-01-02 17:35:53生肖徽章2007版:牛
日期:2008-01-02 17:35:53生肖徽章2007版:虎
日期:2008-01-02 17:35:53生肖徽章2007版:兔
日期:2008-01-02 17:35:53
55#
发表于 2010-1-7 09:12 | 只看该作者
看到了很多在CUDA的架构有所理解的前辈的高见
对于指导我学习很有帮助
由于我上手CUDA没有多长时间
不发表评鉴了
义务的帮顶

使用道具 举报

回复
论坛徽章:
21
2010新春纪念徽章
日期:2010-03-01 11:08:292012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:252012新春纪念徽章
日期:2012-02-13 15:12:25版主3段
日期:2012-05-15 15:24:11马上有车
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有对象
日期:2014-02-19 11:55:142012新春纪念徽章
日期:2012-02-13 15:12:25
56#
发表于 2010-1-7 10:24 | 只看该作者

回复 #62 OpenGPU 的帖子

回复 #53 yyfn风辰 的帖子

所以,只是针对特定领域,而不是通用领域

:〉

你说得很对,要不把你qq号给我,以后讨论!?

使用道具 举报

回复
论坛徽章:
44
2014年世界杯参赛球队: 俄罗斯
日期:2014-07-26 22:46:302014年世界杯参赛球队: 俄罗斯
日期:2014-07-17 17:21:422014年世界杯参赛球队: 俄罗斯
日期:2014-07-26 22:45:562014年世界杯参赛球队: 俄罗斯
日期:2014-07-26 22:45:562014年世界杯参赛球队: 俄罗斯
日期:2014-07-26 22:45:562014年世界杯参赛球队: 俄罗斯
日期:2014-07-26 22:45:56衰神
日期:2015-04-02 09:52:14股神
日期:2015-04-02 09:23:14股神
日期:2015-07-01 16:41:14铁扇公主
日期:2015-11-26 14:43:11
57#
发表于 2010-1-7 14:24 | 只看该作者
自己的帖子自己删了

使用道具 举报

回复
招聘 : Linux运维
论坛徽章:
235
紫蜘蛛
日期:2007-09-26 17:05:46玉兔
日期:2007-09-26 17:05:05现任管理团队成员
日期:2011-05-07 01:45:08玉兔
日期:2006-08-29 20:38:48紫蜘蛛
日期:2007-09-26 17:05:34阿斯顿马丁
日期:2013-11-19 10:38:16奔驰
日期:2013-10-16 09:08:58红旗
日期:2014-01-09 11:57:39路虎
日期:2013-08-13 14:52:35林肯
日期:2015-05-19 13:01:16
58#
发表于 2010-1-7 19:37 | 只看该作者
不懂,进来学习

使用道具 举报

回复
论坛徽章:
183
2008版在线时间
日期:2010-06-01 00:01:32奥运纪念徽章
日期:2013-07-18 13:55:12大众
日期:2013-09-29 21:57:31大众
日期:2013-11-19 14:51:47凯迪拉克
日期:2013-12-06 09:40:33奔驰
日期:2013-12-10 08:41:56优秀写手
日期:2013-12-18 09:29:122014年世界杯参赛球队:巴西
日期:2014-06-12 16:34:36
59#
发表于 2010-1-7 19:50 | 只看该作者
利用CUDA技術,配合適當的軟體(例如MediaCoder[7]),就可以利用顯示核心進行高清視頻編碼加速。視頻解碼方面,同樣可以利用CUDA技術實現。此前,NVIDIA的顯示核心本身已集成PureVideo單元。可是,實現相關加速功能的一個微軟API-DXVA,偶爾會有加速失效問題。所以利用CoreAVC配合CUDA,變相在顯示核心上實現軟體解碼,解決兼容性問題[8]。另外,配合適當的引擎,顯示核心就可以計算光線跟蹤。NVIDIA就放出了自家的Optix實時光線跟蹤引擎,透過CUDA技術利用GPU計算光線跟蹤

使用道具 举报

回复
论坛徽章:
183
2008版在线时间
日期:2010-06-01 00:01:32奥运纪念徽章
日期:2013-07-18 13:55:12大众
日期:2013-09-29 21:57:31大众
日期:2013-11-19 14:51:47凯迪拉克
日期:2013-12-06 09:40:33奔驰
日期:2013-12-10 08:41:56优秀写手
日期:2013-12-18 09:29:122014年世界杯参赛球队:巴西
日期:2014-06-12 16:34:36
60#
发表于 2010-1-7 19:51 | 只看该作者
一、CUDA编译流程简介

Nvcc是一种编译器驱动,通过命令行选项可以在不同阶段启动不同的工具完成编译工作,其目的在于隐藏了复杂的CUDA编译细节,并且它不是一个特殊的CUDA编译驱动而是在模仿一般的通用编译驱动如gcc,它接受一定的传统编译选项如宏定义,库函数路径以及编译过程控制等。CUDA程序编译的路径会因在编译选项时设置的不同CUDA运行模式而不同,如模拟环境的设置等。nvcc封装了四种内部编译工具,即在C:\CUDA\bin目录下的nvopencc(C:\CUDA\open64\bin),ptxas,fatbin,cudafe。Nvcc的工作流程说明如下:

首先是对输入的cu文件有一个预处理过程,这一过程包括的步骤有将该源文件里的宏以及相关引用文件扩展开,然后将预编译已经产生的与C有关的CUDA系统定义的宏扩展开,并合并分支编译的结果。

预处理后,首先将预处理的结果送给CUDA前端,即CUDAfe。通过CUDAfe分离源文件,然后调用不同的编译器分别编译。cudafe被称为CUDA frontend,会被调用两次,完成两个工作:一是将主机代码与设备代码分离,生成gpu文件,二是对gpu文件进行dead code analysis,传给nvopencc。 Nvopencc生成ptx文件传给ptxas,最后将cubin或ptx传给fatbin。

同时,在编译阶段CUDA源代码对C语言所扩展的部分将被转成regular ANSI C的源文件,也就可以由一般的C编译器进行更多的编译和连接。也即是设备代码被编译成ptx(parallel thread execution)代码或二进制代码,host代码则以C文件形式输出,在编译时可将设备代码链接到所生成的host代码,将其中的cubin对象作为全局初始化数据数组包含进来,但此时,kernel执行配置也要被转换为CUDA运行启动代码,以加载和启动编译后的kernel。在使用CUDA驱动API时,可单独执行ptx代码或cubin对象,而忽略nvcc编译得到的host代码。

另外,Nvcc的各个编译阶段以及行为是可以通过组合输入文件名和选项命令进行选择的。它是不区分输入文件类型的,如object, library or resource files,仅仅把当前要执行编译阶段需要的文件传递给linker。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表