首页 > 图书中心 >图书详情

并行程序设计

通俗易懂,偏重实践,手把手教你编写并行程序。提供课件、大纲、代码

作者:刘轶、杨海龙
定价:69
印次:1-1
ISBN:9787302660965
出版日期:2024.05.01
印刷日期:2024.04.29

介本书是针对“并行程序设计”“并行计算”等课程编写的教材,内容包括并行计算基础知识、共享内存系统的OpenMP和Pthreads多线程编程、消息传递系统的MPI编程、Slurm作业管理系统、GPU等异构系统的CUDA/OpenCL/OpenACC/Athread编程、常用的并行设计与性能优化方法、典型并行应用算法等,另外,还特别增加了针对我国自主研发的申威处理器编程的相关内容。本书涵盖并行程序设计最常用的编程语言/接口、设计与性能优化方法、基础应用算法等内容,一方面反映了OpenMP、MPI等成熟编程语言/接口的新特性,以及GPU异构编程等新型编程接口;另一方面在典型并行应用算法部分尝试用计算机专业人员易于理解的方式介绍典型算法,特别是以线性方程组迭代求解方法中的共轭梯度法为例。本书每章都设置了以编程为主的习题,鼓励读者通过编写程序掌握相关方法。本书适合作为计算机和信息类专业高年级本科生和研究生的教材,也可供高性能计算和并行计算领域的科研人员参考。

more >

前言 近年来,并行编程技术的发展非常迅速,与此同时,社会对并行编程技能的 需求和应用也日益广泛,这主要受到以下几方面因素的推动:首先,多核/众核 处理器、GPU、深度学习处理器等新型体系结构快速发展,其编程方法与传统并 行编程相比有较大的差异,这推动并行编程模型及编程语言/接口出现了诸多变 化;其次,人工智能、云计算、大数据分析等新兴应用对并行计算有着很高的要 求,推动并行编程的应用领域从传统的科学/工程计算向更多的领域拓展;最后, 高性能计算机系统的规模不断增大,异构体系结构已成为主流,这使得高性能应 用软件的并行规模(进程/线程个数)越来越大,且需要适配多种异构体系结构, 给大规模并行程序的编写提出了更高的要求。 目前,国内很多高校都开设了“并行程序设计”和“并行计算”课程,但缺 少系统地、全面地介绍并行编程语言/接口的教材,这也是本书的编写初衷。与已 有的一些并行编程教材和参考书相比,本书在内容编写上注重体现以下几个特点。 1. 注重编程能力训练 编程类课程的首要目标不是让学生记住多少概念或者接口函数,而是真正掌 握编程技能,在面对实际问题时,能够编写满足需求的并行程序。有鉴于此,本书 在介绍并行编程语言/接口时,同步给出了很多示例程序。例如,在介绍并行接口 函数时,除了介绍函数功能和参数外,还给出了调用该函数的示例代码,这种代码 虽然只有几行,但可以帮助初学者更清晰地了解如何在程序中使用该函数;又如, 在介绍每种编程语言/接口的过程中,穿插介绍了多个相对完整的示例程序,可以 帮助读者了解如何在程序中综合使用并行编程接口。此外,每章所附的习题也以编 程为主,考虑到编写完整程序的工作量较大,很多习题只要求写出代码段落,以此 帮助读者掌握并行编程接口的实际用法。 2. 体现编程语言的新特性 一方面,本书在介绍OpenMP、Pthreads、MPI等较为成熟的编程语言/接口 时,注意体现这些语言/接口的新特性,如OpenMP中的task构造、MPI如何使 用多线程,以及单边通信接口等;另一方面,本书单独用一章内容介绍了主流的 CUDA、OpenCL、OpenACC异构编程接口,帮助读者全面了解新型异构体系结 构的并行编程方法。 3. 反映自主高性能处理器的并行编程 我国超算技术在近年来取得了长足的进步,基于自主高性能处理器的高性能 并行程序设计 VIII 计算机系统已经达到世界领先水平。为了满足国内并行编程用户在国产超算系统上编程的 需求、推动国产超算应用生态发展,本书在异构系统并行编程这一章中专门介绍了申威处 理器的Athread编程接口,以及OpenACC在申威处理器上的编程方法。 4. 以简单易懂的方式阐述算法 数值算法不是本书的核心内容,要了解这方面的内容通常可以学习独立的课程和专门 的教材,但在介绍并行编程时,不可避免地会涉及多种常用数值算法。有鉴于此,本书第 6章介绍了一些典型应用算法,考虑到本书的读者主要来自计算机专业,在编写这部分内 容时编者遵守“重在掌握算法思路和原理”的原则,尽量避免算法的形式化描述、推导、 证明等相对晦涩的表述,而试图用相对简单易懂的方式阐述算法原理,以近年来在稀疏线 性方程组求解中应用广泛的共轭梯度法为例,要全面介绍算法的形式化描述、推导及证明 需要使用大量的篇幅,但这反而会影响读者了解这种算法的思路和原理。 下图显示了各章之间,以及它们与并行计算系统之间的关系。总体上编者建议教师按 照第1~6章的顺序开展教学,第6章中部分算法的内容在前面几章已有所涉及,如矩阵乘 法、LU分解等。因此,可以在讲授第2~4章时结合并行应用算法展开这部分内容,或者 将之与编程习题相结合。需要注意的是,第2~4章教学过程中宜选择相对简单的并行应用 算法,以使学生集中精力学习和掌握各种编程语言/接口的使用和编程方法。 随着逐渐成稿,本书先后两年作为北京航空航天大学计算机学院的研究生专业课“并行 程序设计”的内部讲义被使用。在此过程中,多名博士生和硕士生参与了编写工作,包括林 放、孙庆骁、刘静怡、唐世泽、陈邦铎、程衍尚。在此对他们的辛勤工作表示感谢!本书的 立项和出版离不开钱德沛院士和清华大学出版社的大力支持,在此亦表示深深的感谢! 编 者 2024年1月

more >
扫描二维码
下载APP了解更多

同系列产品more >

人工智能应用的数学基础(微课版)

刘帅 付维娜 代建华
定 价:69元

查看详情
信息检索与搜索引擎(微课版)

闫琰、班晓娟、刘煜豪
定 价:49元

查看详情
算法设计与问题求解(第2版·微课版)...

邓泽林、李峰
定 价:59元

查看详情
数据结构与问题求解(C++版·微课版)...

邓泽林、李峰
定 价:59元

查看详情
工程概论(下册)

栾英姿,赵江
定 价:59元

查看详情
图书分类全部图书
more >
  • "u 本书注重并行编程能力训练,在介绍并行编程语言/接口时,同步给出了很多示例代码和例子程序,帮助读者更清晰地了解如何在程序中使用这些编程接口,进而编写出满足需求的并行程序。
    u 本书内容涵盖了主流的并行编程语言/接口,包括多线程编程接口OpenMP和Pthreads、消息传递接口MPI,以及CUDA、OpenCL、OpenAcc等异构编程接口。
    本书介绍了面向我国自主申威处理器架构的Athread编程接口,可以帮助读者学习掌握如何在我国自主超算系统上编写并行程序。
    "

more >
  • 目录

    第 1 章 

    并行程序设计概述

    .

    ........................................................................1

    1.1 并行性概述 ..................................................................................................1

    1.2 如何衡量计算速度 ......................................................................................3

    1.3 并行计算系统基本知识 ..............................................................................6

    1.3.1 弗林分类 .........................................................................................6

    1.3.2 共享内存系统与消息传递系统 .....................................................8

    1.3.3 几种常见的并行计算系统 ...........................................................10

    1.3.4 互连网络 .....

精彩书评more >

标题

评论

版权所有(C)2023 清华大学出版社有限公司 京ICP备10035462号 京公网安备11010802042911号

联系我们 | 网站地图 | 法律声明 | 友情链接 | 盗版举报 | 人才招聘