GPU编程入门:CUDAC实战与首个核函数

5星 · 超过95%的资源 需积分: 10 15 下载量 69 浏览量 更新于2024-09-11 收藏 229KB PDF 举报
"GPU并行计算实战" 在《GPU并行计算实战》中,作者旨在引导读者逐步掌握GPU编程,从而成为并行计算领域的专家。本书的起点是CUDAC(CUDA C),一种用于利用NVIDIA GPU的强大计算能力的编程语言。在开始之前,读者应该已经了解GPU的计算潜力,并配置好了一个能够编译和运行CUDAC代码的开发环境。即使没有这些背景知识,书中的实例和解释也足以让读者快速入门。 第3章详细介绍了CUDAC的基础知识,包括本章的学习目标: 1. 编写CUDAC代码:读者将学会如何编写针对GPU执行的程序。 2. 主机与设备的区别:理解为主机(CPU)编写的代码与为设备(GPU)编写的代码之间的差异是至关重要的,因为它们在执行上下文中不同。 3. 运行设备代码:学习如何在GPU上执行代码,这是GPU并行计算的核心。 4. 设备内存的使用:掌握如何在GPU的内存空间中存储和访问数据。 5. 查询CUDA设备信息:了解如何获取系统中支持CUDA的GPU的详细信息,这对于优化和调试程序是必要的。 在3.2节中,作者通过实际的代码示例来讲解CUDAC。首先,展示了一个标准的“Hello,World!”程序,用以说明CUDAC与C语言的相似性。尽管这个例子可以在主机CPU上独立运行,但它引入了主机与设备的概念,即CPU(主机)和GPU(设备)。 随后,书中引入了核函数(Kernel)的概念,这是CUDAC的核心特性。核函数是可以在GPU上并行执行的函数,可以处理大量数据并行任务。作者通过逐步改进“Hello,World!”示例,展示了如何在GPU设备上执行代码,以此来突出核函数的使用。 3.2.2小节中,读者可以看到核函数调用的初步介绍,这是GPU并行计算的关键部分。随着代码的增加,读者将逐步了解到如何在GPU上运行更复杂的操作,利用其并行计算能力进行高效的数值计算和其他计算密集型任务。 这本书提供了一个逐步深入的教程,不仅教授CUDAC语法,还强调了并行计算的思想和实践,为读者成为GPU编程专家奠定了坚实的基础。
2009-10-19 上传
《GPU高性能计算之CUDA》实例。 GPU高性能计算系列丛书的第一本《GPU高性能计算之CUDA》已经出版,由张舒,褚艳利,赵开勇,张钰勃所编写。本书除了详细介绍了CUDA的软硬件架构以及C for CUDA程序开发和优化的策略外,还包含有大量的实例供读者学习参考用。 下表是各个实例的介绍列表。 文件夹 对应书中章节 备注 ACsearch_DPPcompact_with_driver 5.2.2 AC多模式匹配算法 asyncAPI 2.5 异步API调用示例 bandwidthTest 2.3.6 带宽测试 Bitonic 5.1.1 双调排序网络 conjugateGradient 5.2.1 共轭梯度算法,CUBLAS实现 cudaMPI 2.7.3 CUDA+MPI管理GPU集群 cudaOpenMP 2.7.2 CUDA+OpenMP管理多GPU deviceQuery 2.1.4 设备查询 histKernel 2.4.3 亮度直方图统计 matrixAssign 2.1.4 矩阵赋值 matrixMul 4.7.1 矩阵乘法,利用shared memory matrixMul_Berkeley 4.7.1 矩阵乘法,利用register reduction 4.7.2 并行归约(缩减)程序 scan 5.1.2 Scan算法,例如计算前缀和 scanLargeArray 5.1.2 Scan算法,可以处理大数组 simpleCUBLAS 5.1.3 CUBLAS库的简单应用 simpleCUFFT 5.1.4 CUFFT库的简单应用 simpleD3D9 2.6.2 CUDA与Direct3D 9互操作 simpleD3D10 2.6.2 CUDA与Direct3D10互操作 simpleGL 2.6.1 CUDA与OpenGL互操作 simpleMultiGPU 2.7.1 多设备控制 simpleStreams 2.5.2 流的使用演示 simpleTexture 2.3.8 简单的纹理使用 simpleTextureDrv 2.3.8 简单的纹理使用,驱动API 实现 sortingNetworks 5.1.1 双调排序网络,处理大数组 threadMigration 2.7.1 通过上下文管理和设备管理功能实现多设备并行计算 timing 4.2.1 设备端测时 transpose 4.7.3 矩阵转置 transposeDiagonal 4.7.3 矩阵转置,考虑partition conflict VectorAdd 2.2.3/2.3.4 矢量加 VectorAddDrv 2.2.3/2.3.4 矢量加,驱动API实现 【备注】以上工程,均在Windows XP 64-bit + Tesla C1060 + CUDA 2.3 + VS2005环境下测试通过。