基于MATLAB的GPU编程pdf下载

基于MATLAB的GPU编程百度网盘pdf下载

作者:
简介:基于MATLAB的GPU编程
出版社:
出版时间:2019-05
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

内容简介

  《基于MATLAB的GPU编程》面向的读者群主要是想在保留MATLAB优点的同时利用GPU编程实现加速的科研人员、工程师或学生。书中对各种工具箱和函数做了清晰的梳理,不仅是对当前MATLAB文档的有益补充,而且提供了大量来自不同领域的应,用实例。
  《基于MATLAB的GPU编程》首先介绍支持GPU计算的MATLAB工具箱,这使得程序可以直接在GPU上运行,而不需要太多关于GPU编程的知识。接着介绍了MATLAB内置的GPU计算功能,包括在多核或不同计算机系统中利用GPU的方法。最后介绍了一些高阶主题。如在MATLAB中引入CUDA代码,以优化现有的GPU应用。
  《基于MATLAB的GPU编程》特点:
  ●介绍支持GPU的MATLAB工具箱及函数,如并行计算工具箱、通信系统工具箱、神经网络工具箱以及统计和机
  器学习工具箱等。
  ●讲解如何在不使用另一门编程语言(如CUDA C/C++或CUDA Fortran)的情况下加速计算密集型的MATLAB
  应用。
  ●涵盖图像处理、信号处理、统计学等不同领域的实例,帮助读者快速理解GPU编程的关键概念。

作者简介

  尼古劳斯·普洛斯卡斯(Nikolaas Ploskas),希腊西马其顿大学信息与通信工程系助理教授,曾在美国卡内基一梅隆大学化学工程系从事博士后研究,研究方向包括运筹学、并行编程、GPU编程和决策支持系统。
  
  尼古劳斯·萨马拉斯(Nikolaos Samaras),希腊马其顿大学应用信息系教授,研究方向包括线性/非线性优化、网络优化以及高性能计算和GPU编程。
  
  张帆,北京化工大学信息科学与技术学院教授、博导,曾获北京高校青年英才计划资助。张帆博士从2008年开始从事GPU并行计算研究,201 4年获国家留学基金委全额资助,赴美国伊利诺伊大学香槟分校(UIUC)进行高性能计算方面的访问学习。长期致力于SAR数据模拟、高性能计算、图像处理等方面的研究,主持国家自然科学基金等科研项目20余项,发表学术论文70余篇。目前担任《IEEE Access》的副主编,以及《IEEETGRS》《雷达学报>等期刊的审稿人。
  
  倪军,北京化工大学信息科学与技术学院博士生,IEEE北京化工大学学生分会主席,研究方向包括极化SAR分类、高性能计算、人工智能。
  
  李征,北京化工大学信息科学与技术学院教授、博导,曾获教育部新世纪优秀人才支持计划资助。重点研究智能化软件工程,是中国基于搜索的软件工程研讨会(CSBSE)的发起人。单篇论文被引超过500次,主持多项国家和省部级项目。

内页插图

精彩书评

  ★“随着GPU编程的普及,这本专业、详细且可读性强的书籍将备受欢迎,成为任何一个想利用GPU将自己的MATLAB程序进行并行化的程序员的必读之作。”
  —— Yair Altman,《Accelerating MATLAB Performance》的作者

目录

译者序
推荐序
前言
关于作者
第1章 引言 1
1.1 并行编程 1
1.1.1 并行计算导引 1
1.1.2 并行计算机的类别 4
1.1.3 并行计算机的内存架构 6
1.2 GPU编程 7
1.3 CUDA架构 7
1.4 为什么在MATLAB中进行GPU编程,什么情况下使用GPU编程 11
1.5 本书的组织结构 15
1.6 本章回顾 16
第2章 入门准备 17
2.1 硬件要求 17
2.2 软件要求 19
2.2.1 NVIDIA CUDA 工具包 19
2.2.2 MATLAB 26
2.3 本章回顾 29
第3章 并行计算工具箱 30
3.1 产品描述与目标 30
3.2 并行for循环(parfor) 32
3.3 单程序多数据(spmd) 43
3.4 分布式数组和共分布式数组 47
3.5 交互式并行开发(pmode) 52
3.6 GPU计算 53
3.7 集群和作业调度 53
3.8 本章回顾 57
第4章 基于MATLAB的GPU编程介绍 58
4.1 基于MATLAB的GPU编程特性 58
4.2 GPU数组 59
4.3 基于GPU的MATLAB内置函数 66
4.4 基于GPU的MATLAB逐元素操作 78
4.5 本章回顾 91
第5章 基于MATLAB工具箱的GPU编程 92
5.1 通信系统工具箱 92
5.2 图像处理工具箱 109
5.3 神经网络工具箱 112
5.4 相控阵系统工具箱 131
5.5 信号处理工具箱 136
5.6 统计和机器学习工具箱 137
5.7 本章回顾 142
第6章 多GPU并行 143
6.1 在指定GPU设备上定义和运行代码 143
6.2 多GPU运算举例 150
6.3 本章回顾 166
第7章 运行CUDA或PTX代码 168
7.1 CUDA C编程简介 168
7.2 在GPU上通过MATLAB运行CUDA或PTX代码的步骤 172
7.3 示例:向量加法 180
7.4 示例:矩阵乘法 182
7.5 本章回顾 185
第8章 包含CUDA代码的MATLAB MEX函数 186
8.1 MATLAB MEX文件简介 186
8.2 在GPU上执行MATLAB MEX函数的步骤 191
8.3 示例:向量加法 198
8.4 示例:矩阵乘法 201
8.5 本章回顾 204
第9章 CUDA加速库 205
9.1 引言 205
9.2 cuBLAS 206
9.3 cuFFT 210
9.4 cuRAND 213
9.5 cuSOLVER 216
9.6 cuSPARSE 219
9.7 NPP 223
9.8 Thrust 227
9.9 本章回顾 229
第10章 代码分析与GPU性能提升 230
10.1 MATLAB分析 230
10.2 CUDA分析 242
10.3 提升GPU性能的最佳实践 246
10.4 本章回顾 251
参考文献 252

前言/序言

MATLAB是面向科学计算的高级语言,在很多科学领域它都作为一个快速的原型设计工具而被广泛使用。很多研究人员和公司使用MATLAB来解决计算密集型问题,并用它来加快代码运行速度。MATLAB提供了并行计算工具箱,让用户可以使用多核处理器、计算机集群和GPU来解决计算密集型问题。
随着硬件的发展,在过去的十几年里GPU已经普及开来,并广泛应用在计算密集型问题上。目前主要有两个关于GPU的编程模型—CUDA和OpenCL,其中CUDA更加成熟稳定。程序员可以通过使用CUDA C编写C/C++代码或使用PGI的CUDA Fortran编写Fortran代码等途径来使用CUDA架构。
本书采用的是另外一种使用CUDA架构的方法,适用的人群是学生、科研人员和工程师,他们使用MATLAB开发或维护应用程序,并希望在保留MATLAB优点的同时利用GPU编程实现加速。本书适用于对MATLAB编程有一定的经验但是不一定熟悉并行架构的读者,致力于帮助读者通过GPU来优化MATLAB程序,使其能够充分利用硬件优势来加速。
对于每个概念,本书都提供了示例,以便读者能够将理论运用到实际中。由于MATLAB使用者的专业背景不同,本书是以教程式学习方法为主,而不采用案例式学习方法。因此,本书的示例重点在于GPU实用编程技术,而不是特定的应用领域。所提供的例子包括图像处理、信号处理、优化、通信系统、统计学等多个领域的常见问题。
虽然有关GPU计算的MATLAB文档非常有用,但是文档对于GPU编程的具体实现问题并没有进行深入的讨论,从而使其对程序开发的指导作用非常有限。自2010年MATLAB支持GPU编程功能以来,已经开发了各种函数和工具箱,但是这些信息比较分散,本书的目的就是填补这个空白。另外,本书提供了很多来自不同科学领域的实际例子来阐述MATLAB的GPU功能。具有CUDA C/C++编程经验的读者也能够通过利用MATLAB中的CUDA C/C++代码或通过分析和优化GPU应用来获取更多的知识。
本书主要从两个方面着手进行介绍:
第一,MATLAB为GPU编程所提供的一系列功能。这一方面将分为三个部分:
支持GPU的MATLAB内置函数(依赖并行计算工具箱)。
GPU的逐元素操作(不依赖并行计算工具箱)。
除了并行计算工具箱外,支持GPU的其他MATLAB内置函数工具箱,包括通信系统工具箱、图像处理工具箱、神经网络工具箱、相控阵系统工具箱、信号处理工具箱以及统计和机器学习工具箱等。
第二,当MATLAB不能在GPU上执行现有的代码段或者用户想要使用CUDA提供的加速库时,可以将MATLAB代码与CUDA C/C++代码相链接。
本书的主要目标群体是:
学过GPU编程课程并想用MATLAB实现并行的本科生或研究生。
使用MATLAB开发或者维护应用程序并想使用GPU加速MATLAB代码的科研工作者。
希望在MATLAB中加速其计算密集型程序而无须用其他语言(如CUDA C/C++或CUDA Fortran)进行代码重写的工程师。
非常感谢MathWorks通过MathWorks Book Program提供的MATLAB学术许可,也感谢NVIDIA Academic Partnership提供的硬件支持,特别感谢Ioannis Athanasiadis提供的MATLAB工具箱的GPU功能实现与实例展示,最后感谢家人多年来对我们工作的支持与关怀。

Nikolaos Ploskas
Nikolaos Samaras