- 1、本文档共25页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
cuda专用课件
* * 本课程得到 Intel?大学合作计划支持 课程网站: /multicore/index.html ? David Kirk/NVIDIA and Wen-mei W. Hwu Taiwan, June 30-July 2, 2008 ? David Kirk/NVIDIA and Wen-mei W. Hwu Taiwan, June 30-July 2, 2008 CUDA编程模型 华南理工大学 陈虎 博士 tommychen74@ GPU与CPU的差异 GPU(Graphics Process Unit) 面向计算密集型和大量数据并行化的计算 大量的晶体管用于计算单元 通用CPU 面向通用计算 大量的晶体管用于Cache和控制电路 DRAM Cache ALU Control ALU ALU ALU DRAM CPU GPU GPU与CPU的峰值速度比较 1 Based on slide 7 of S. Green, “GPU Physics,” SIGGRAPH 2007 GPGPU Course. /s2007/slides/15-GPGPU-physics.pdf 第一代GPU结构(GeForce 6800) 第二代GPU(GeForece 8800) GeForce 8800的主要技术参数 晶体管数目(百万) 681 工艺 90nm 芯片面积(mm2) 470 工作主频(GHZ) 1.5 峰值速度(Gflops) 576 处理器数目 128 片上存储器容量(KB) 488 功耗(W) 150 16个流多处理器(SM) 每个SM中包含了8个流处理器SP 每个SP包含一个乘加单元 每个SM管理了24个线程簇(warp),共有768个线程 采用单线程多数据(Single-thread, Multiple-data)技术 每个周期在8个SP上并行执行一个线程簇 GF8800的存储层次结构 层次 容量 (KB) 延迟 (ns) 局部存储器 16 26 L1 Cache 5 280 L2 Cache 32 370 DDR 510 GeForce 8800 GPU最适合做什么? 对多个数据进行同一种运算(STMD适用) 一次存储器访问,多次运算(外部DDR访问开销高,局部存储器容量较小) 浮点计算比例高(特别是单精度浮点) 典型计算:物理模拟,线性代数计算 应用领域: 计算生物学 图像处理 CUDA编程模型 Nvidia公司开发的编程模型 可以和VC 8.0集成使用 下载地址: /object/cuda_get.html CUDA工具链 NVCC C/C++ CUDA Application PTX to Target Compiler G80 … GPU Target code PTX Code Virtual Physical CPU Code float4 me = gx[gtid]; me.x += me.y * me.z; ld.global.v4.f32 {$f1,$f3,$f5,$f7}, [$r9+0]; mad.f32 $f1, $f5, $f3, $f1; 链接时的动态库: The CUDA runtime library (cudart) The CUDA core library (cuda) CUDA中的线程 线程: CUDA中的基本执行单元; 硬件支持,开销很小; 所有线程执行相同的代码(STMD) 每个线程有一个唯一的标识ID——threadIdx 若干线程还可以组成块(Block) 线程块可以呈一维、二维或者三维结构 Device Grid 1 Block (0, 0) Block (1, 0) Block (2, 0) Block (0, 1) Block (1, 1) Block (2, 1) Block (1, 1) Thread (0, 1) Thread (1, 1) Thread (2, 1) Thread (3, 1) Thread (4, 1) Thread (0, 2) Thread (1, 2) Thread (2, 2) Thread (3, 2) Thread (4, 2) Thread (0, 0) Thread (1, 0) Thread (2, 0) Thread (3, 0) Thread (4, 0) CUDA存储器分配 cudaMalloc() 在全局存储器中分配空间 两个参数: 地址指针 空间大小 cudaFree() 在全局存储器中回收空间 参数 回收空间地址指针 Grid Global Memory Block (0, 0) Shared Memory Thread (0, 0) Registers
文档评论(0)