新書推薦:

《
流动的白银(一部由白银打开的人类文明发展史)
》
售價:HK$
63.8

《
饮食的谬误:别让那些流行饮食法害了你
》
售價:HK$
63.8

《
三千年系列:文治三千年+武治三千年+兵器三千年
》
售價:HK$
197.3

《
甲骨文常用字字典(精) 新版
》
售價:HK$
74.8

《
赖世雄经典英语语法:2025全新修订版(赖老师经典外语教材,老版《赖氏经典英语语法》超32000条读者好评!)
》
售價:HK$
65.8

《
影神图 精装版
》
售價:HK$
140.8

《
不止于判断:判断与决策学的发展史、方法学及判断理论
》
售價:HK$
74.8

《
人才画像、测评、盘点、管理完全应用手册
》
售價:HK$
54.8
|
內容簡介: |
本书首先介绍了并行计算工具箱和其他用于GPU计算的MATLAB工具箱,这使得应用程序可以直接移植到GPU上,而不需要大量的GPU编程知识。接下来介绍MATLAB的内置的、支持GPU的特性,包括在多核或不同的计算机系统中利用GPU的方法。*后介绍了一些进阶主题,如在MATLAB中引入CUDA代码,以优化现有的GPU应用。书中通过例子和源代码来说明每个概念,以便读者可以立即将它们应用到自己的开发中。
|
目錄:
|
译者序
推荐序
前言
关于作者
第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 MATLAB26
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 cuBLAS206
9.3 cuFFT210
9.4 cuRAND213
9.5 cuSOLVER216
9.6 cuSPARSE219
9.7 NPP223
9.8 Thrust227
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编写CC++代码或使用PGI的CUDA Fortran编写Fortran代码等途径来使用CUDA架构。
本书采用的是另外一种使用CUDA架构的方法,适用的人群是学生、科研人员和工程师,他们使用MATLAB开发或维护应用程序,并希望在保留MATLAB优点的同时利用GPU编程实现加速。本书适用于对MATLAB编程有一定的经验但是不一定熟悉并行架构的读者,致力于帮助读者通过GPU来优化MATLAB程序,使其能够充分利用硬件优势来加速。
对于每个概念,本书都提供了示例,以便读者能够将理论运用到实际中。由于MATLAB使用者的专业背景不同,本书是以教程式学习方法为主,而不采用案例式学习方法。因此,本书的示例重点在于GPU实用编程技术,而不是特定的应用领域。所提供的例子包括图像处理、信号处理、优化、通信系统、统计学等多个领域的常见问题。
虽然有关GPU计算的MATLAB文档非常有用,但是文档对于GPU编程的具体实现问题并没有进行深入的讨论,从而使其对程序开发的指导作用非常有限。自2010年MATLAB支持GPU编程功能以来,已经开发了各种函数和工具箱,但是这些信息比较分散,本书的目的就是填补这个空白。另外,本书提供了很多来自不同科学领域的实际例子来阐述MATLAB的GPU功能。具有CUDA CC++编程经验的读者也能够通过利用MATLAB中的CUDA CC++代码或通过分析和优化GPU应用来获取更多的知识。
本书主要从两个方面着手进行介绍:
第一,MATLAB为GPU编程所提供的一系列功能。这一方面将分为三个部分:
支持GPU的MATLAB内置函数(依赖并行计算工具箱)。
GPU的逐元素操作(不依赖并行计算工具箱)。
除了并行计算工具箱外,支持GPU的其他MATLAB内置函数工具箱,包括通信系统工具箱、图像处理工具箱、神经网络工具箱、相控阵系统工具箱、信号处理工具箱以及统计和机器学习工具箱等。
第二,当MATLAB不能在GPU上执行现有的代码段或者用户想要使用CUDA提供的加速库时,可以将MATLAB代码与CUDA CC++代码相链接。
本书的主要目标群体是:
学过GPU编程课程并想用MATLAB实现并行的本科生或研究生。
使用MATLAB开发或者维护应用程序并想使用GPU加速MATLAB代码的科研工作者。
希望在MATLAB中加速其计算密集型程序而无须用其他语言(如CUDA CC++或CUDA Fortran)进行代码重写的工程师。
非常感谢MathWorks通过MathWorks Book Program提供的MATLAB学术许可,也感谢NVIDIA Academic Partnership提供的硬件支持,特别感谢Ioannis Athanasiadis提供的MATLAB工具箱的GPU功能实现与实例展示,最后感谢家人多年来对我们工作的支持与关怀。
Nikolaos Ploskas
Nikolaos Samaras
|
|