发表于2024-11-25
由英特尔的技术专家撰写,是目前为止全面、系统地讲解在英特尔至强处理器和至强融核协处理器上进行并行应用开发的专著
《Intel Xeon Phi协处理器高性能编程指南》所采用的方法兼容了对未来编程模式的支持,书中所阐述的统一、标准和灵活的编程模式,对于未来作为独立处理器使用的MIC众核产品同样适用。
晒单就送世界超级计算机天河二号机时(仅限于本书代码测试)
即日起,凡购买本书并 @北京并行科技有限公司 微博晒书,或微信朋友圈晒书并发送晒书截图至 北京并行科技有限公司官方微信,即可获得天河二号相应测试机时(仅限于本书代码测试),体验500强排行榜中位居冠军的超级计算机!领取方式可详询@北京并行科技有限公司 微博。
《Intel Xeon Phi协处理器高性能编程指南》由英特尔的技术专家撰写,是目前为止全面、系统地讲解在英特尔至强处理器和至强融核协处理器上进行并行应用开发的专著。
《Intel Xeon Phi协处理器高性能编程指南》从赛车与至强融核协处理器之间的相似性入手,抽丝剥茧、层层深入,探讨实际案例指导编程应用,并对协处理器向量化、协处理器分载模式、协处理器架构及Linux系统、数学库,以及协处理器采样、计时与优化等进行了详细的解析,是一本详尽的至强融核协处理器使用参考指南。特别是,《Intel Xeon Phi协处理器高性能编程指南》所采用的方法兼容了对未来编程模式的展望和支持,书中所阐述的统一、标准和灵活的编程模式,对于未来作为独立处理器使用的MIC众核产品同样适用。
《Intel Xeon Phi协处理器高性能编程指南》适用于想要系统学习英特尔至强融核协处理器编程的读者,无需借助其他参考书,即可循序渐进、全面掌握。
James Reinders, 英特尔软件总监,首席技术布道师。
Jim Jeffers, 英特尔MIC(集成众核)架构专家。
★2020年左右在限定功耗下实现百万万亿次峰值的超级计算机,是目前世界各国竞相角逐的下一个超级计算界的皇冠,中、美、日、欧等国都制定了雄心勃勃的研制计划。到目前为止,能够实现该目标的计算机体系结构,只有异构众核加速体系结构具有比较清晰的路线图,其他的几个技术路线都有着目前看来难以逾越的技术鸿沟。英特尔顺应这一技术发展趋势,创新性地推出Xeon Phi协处理器,并助力中国国防科技大学团队创新性地提出了微异构的众核加速体系结构,一举夺取了世界TOP 500的2013年6月和11月的两届冠军。由于采用了与Xeon处理器同类别的X86指令集,用户仍然可以使用自己熟悉的MPI和OpenMP进行并行程序设计,极大地降低了使用该处理器的入门成本。但是,如果想更大程度地挖掘Xeon Phi的潜在性能,用户还必须深入了解该处理器的体系结构和更多种类的并行编程模式,本书正好可以满足此类用户的需求。
——张云泉,中国计算机学会高性能计算专业委员会(CCF TCHPC)秘书长
★在Xeon Phi协处理器正式发布之前,我们已经开始使用其试生产硬件,并进行了GeoEast处理系统下的MIC众核并行处理模块移植测试,完成了积分法叠前时间偏移并行模块在MIC上的移植,使用了节点间MPI并行+节点内MIC/CPU协同计算模式(两块MIC卡/节点)。在GeoEast系统集成环境下,该模块MIC版本运行效率是原版本的3.8倍。MIC版本的程序与CPU程序代码完全兼容,因此移植相对比较简单,对程序进行CPU多线程的优化仍然适用于MIC版本程序,而MIC指导语句的使用也简化了程序在MIC上的移植,使程序员更容易掌握,也更容易维护。我们正致力于将更多的计算密集型应用移植到Xeon Phi协处理器上,本书丰富的内容将为我们进行程序的移植提供很好的参考。
——陈维,东方地球物理公司研发中心副总工程师
★Intel的Xeon Phi协处理器为高性能计算领域带来了全新的MIC众核加速解决方案,也给应用优化带来了新的挑战。在ASC超算竞赛中,大学生们的MIC应用优化实践证明了该技术是容易被学习掌握的,并且确实能够给适合的应用带来出色的加速性能。本书详细介绍了高性能程序中应用MIC编程的方法,是非常好的MIC编程参考工具书,我相信读者能够从此书中学习领会到MIC众核编程的精妙之处,从而将该技术应用到科学和工程计算领域,推动中国的高性能计算应用发展。
——刘军,浪潮集团高性能计算总经理 众核体系结构将成为未来主流的处理器体系结构,而以天河2号超级计算机为代表的国际机构已经开始大规
第1章 绪论
1.1 更加并行化
1.2 为什么需要Intel Xeon Phi协处理器
1.3 协处理器平台
1.4 第一款Intel Xeon Phi协处理器
1.5 控制"Ninja鸿沟"于一定范围
1.6 移植与优化的双重优势
1.7 何时使用Intel Xeon Phi协处理器
1.8 实现处理器性能最优
1.9 为何扩展超过100个线程如此重要
1.10 最大化并行程序性能
1.11 评估高度并行执行的能力
1.12 对于GPU是怎么样的
1.13 易于移植,也易于提升性能
1.14 性能移植
1.15 超线程与多线程
1.16 协处理器主要使用模型:MPI和Offload
1.17 编译器和编程模型
1.18 缓存优化
1.19 案例和细节
1.20 更多信息
第2章 高性能封闭追踪测试驱动
2.1 揭开引擎盖:协处理器详解
2.2 发动汽车:与协处理器沟通
2.3 轻松上路:首次运行代码
2.4 开始加速:多线程运行代码
2.5 全速行驶:使用所有核心
2.6 轻松过弯:访存带宽
2.7 高速漂移:内存带宽最大化
2.8 总结
第3章 一场乡间公路友谊赛
3.1 赛前准备:本章重点
3.2 初识赛道:9点模板算法
3.3 起跑线上:9点模板基准程序
3.4 路在前方:运行基准模板代码
3.5 石子路上:向量化而未扩展
3.6 全力比赛:向量化加上规模扩展
3.7 扳手和润滑油:代码微调
3.7.1 基准校正
3.7.2 使用流存储
3.7.3 使用2MB大型存储页
3.8 总结
3.9 更多信息
第4章 都市畅游:实际代码优化案例
4.1 选择方向:基本的扩散算法
4.2 到达路口:计算边界效应
4.3 寻找林荫大道:代码扩展化
4.4 雷霆之路:保证向量化
4.5 剥离:从最内层循环开始
4.6 尝试辛烷含量更高的燃料:利用数据局部性与切片分块提升速度
4.7 高速驾驶认证:高速旅行的总结
第5章 大数据(向量)
5.1 为什么向量化
5.2 如何向量化
5.3 实现向量化的五种方法
5.4 六步向量化方法论
5.5 通过Cache流:布局、对齐、预取数据
5.5.1 为什么数据布局影响向量化性能
5.5.2 数据校准
5.5.3 预取
5.5.4 流存储
5.6 编译器技巧
5.6.1 避免手动展开循环
5.6.2 循环向量化的要求(英特尔编译器)
5.6.3 内联的重要性,简单性能分析的干扰
5.7 编译器选项
5.8 编译器指导指令
5.8.1 SIMD指令
5.8.2 VECTOR与NOVECTOR指令
5.8.3 IVDEP指令
5.8.4 随机数函数向量化
5.8.5 充分向量化
5.8.6 -opt-assume-safe-padding选项
5.8.7 数据对齐
5.8.8 在数组表示法(Array Notation)中权衡向量长度
5.9 使用数组段(Array Section)支持向量化
5.9.1 Fortran数组段
5.9.2 Cilk Plus数组段和元素函数
5.10 查看编译器生成:汇编代码检测
5.10.1 如何找到汇编代码
5.10.2 快速查看汇编代码
5.11 向量化数值结果差异
5.12 总结
5.13 更多信息
第6章 多任务(非多线程)
6.1 OpenMP、Fortran2008、Intel TBB、Intel Cilk Plus、Intel MKL
6.1.1 需在协处理器上创建任务
6.1.2 线程池的重要性
6.2 OpenMP
6.2.1 并行处理模型
6.2.2 指导性语句
6.2.3 OpenMP上的有效控制
6.2.4 嵌套
6.3 Fortran 2008
6.3.1 DO CONCURRENT
6.3.2 DO CONCURRENT以及数据竞争
6.3.3 DO CONCURRENT定义
6.3.4 DO CONCURRENT对比FOR ALL
6.3.5 DO CONCURRENT对比OpenMP"Parallel"
6.4 Intel TBB
6.4.1 发展历史
6.4.2 使用TBB
6.4.3 parallel_for
6.4.4 blocked_range
6.4.5 Partitioners
6.4.6 Parallel_reduce
6.4.7 Parallel_invoke
6.4.8 C + +11相关
6.4.9 TBB总结
6.5 Cilk Plus
6.5.1 发展历史
6.5.2 从TBB借用组件
6.5.3 向TBB提供组件
6.5.4 关键字拼写
6.5.5 cilk_for
6.5.6 cilk_spawn与cilk_sync
6.5.7 Reducers(超对象)
6.5.8 数组表示法与基本函数
6.5.9 Cilk Plus总结
6.6 总结
6.7 更多信息
第7章 分载(Offload)
7.1 两种分载模式
7.2 分载执行与本地执行
7.2.1 非共享内存模式:使用分载编译器指导指令(Pragma)
7.2.2 共享虚拟内存模式:通过共享虚拟内存使用分载
7.2.3 Intel数学函数库(Intel MKL)自动分载
7.3 分载的语言扩展支持
7.3.1 分载的编译器选项和环境变量
7.3.2 分载的共享环境变量
7.3.3 针对多个协处理器分载
7.4 使用编译器指导指令分载
7.4.1 设置协处理器上的变量与函数
7.4.2 指针变量的内存分配与管理
7.4.3 时间优化:坚持分配的另外一个原因
7.4.4 对C/C++目标代码使用编译器指导指令
7.4.5 对Fortran语言中的目标代码使用指导指令
7.4.6 执行单一处理器时不创建代码
7.4.7 英特尔MIC架构预定义宏
7.4.8 Fortran数组
7.4.9 为部分C/C++数组分配内存
7.4.10 为部分Fortran数组分配内存
7.4.11 两变量间的数据转移
7.4.12 分载代码指令使用的限制条件
7.5 在共享虚拟存储器上使用分载
7.5.1 使用共享内存及共享变量
7.5.2 关于共享函数
7.5.3 共享内存管理函数
7.5.4 同步函数执行与异步函数执行:_Cilk_offload
7.5.5 共享变量和函数:_Cilk_shared
7.5.6 _Cilk_shared和Cilk_offload的使用规则
7.5.7 处理器与目标之间的内存同步
7.5.8 使用_Cilk_offload写入具体目标代码
7.5.9 使用虚拟内存分载代码的限制因素
7.5.10 使用共享虚拟内存时定义持久性数据
7.5.11 使用共享虚拟内存持久性数据的C++声明
7.6 关于异步计算
7.7 关于异步数据转移
7.8 应用目标属性至多个声明
7.8.1 分载使用的vec-report可选项
7.8.2 测量分载区域的时间与数据
7.8.3 _Offload_report
7.8.4 在分载代码中使用库
7.8.5 关于使用xiar和xild创建分载程序库
7.9 在协处理器上执行I/O文件
7.10 从分载代码中记录stdout和stderr
7.11 总结
7.12 更多信息
第8章 协处理器架构
8.1 Intel Xeon Phi协处理器产品家族
8.2 协处理器卡的设计
8.3 Intel Xeon Phi协处理器芯片概述
8.4 协处理器核架构
8.5 指令集和多线程处理
8.6 缓存组织和内存访问
8.7 预取
8.8 向量处理单元架构
8.9 协处理器PCI-E系统接口和DMA
8.10 协处理器电源管理
8.11 可靠性、可用性和可维护性(RAS)
8.12 协处理器系统管理控制器(SMC)
8.12.1 传感器
8.12.2 散热设计监控和控制
8.12.3 风扇控制
8.12.4 潜在应用影响
8.13 基准测试
8.14 总结
8.15 更多信息
第9章 协处理器系统软件
9.1 协处理器软件体系架构概述
9.1.1 对称性
9.1.2 Ring级别:用户态和内核态
9.2 协处理器编程模型和选项
9.2.1 宽度与深度
9.2.2 MPI编程模型
9.3 协处理器软件体系架构组件
9.4 英特尔众核平台软件栈
9.4.1 MYO: Mine Yours Ours
9.4.2 COI:Coprocessor Offload Infrastructure
9.4.3 SCIF:Symmetric Communications Interface
9.4.4 Virtual networking(NetDev)、TCP/IP及sockets
9.4.5 协处理器系统管理
9.4.6 面向MPI应用程序的协处理器组件
9.5 Linux对Intel Xeon Phi协处理器的支持
9.6 优化内存分配的性能
9.6.1 控制2MB内存页的数量
9.6.2 监控协处理器上2MB内存页的数量
9.6.3 分配2MB内存页的方法示例
9.7 总结
9.8 更多信息
……
第10章 协处理器的Linux系统
第11章 数学库
第12章 MPI
第13章 采样和计时
第14章 总结
术语表
Intel Xeon Phi协处理器高性能编程指南 下载 mobi pdf epub txt 电子书 格式 2024
Intel Xeon Phi协处理器高性能编程指南 下载 mobi epub pdf 电子书内容编写上总得来说比较通俗。
评分不错,不错,不错,不错
评分书很不错,值得学习,好好研究
评分书挺好,内容丰富,优化部分讲的好
评分 评分好
评分虽然说看不太懂吧,但是很充面
评分书今天刚到,准备这两天看看
评分学习中
Intel Xeon Phi协处理器高性能编程指南 mobi epub pdf txt 电子书 格式下载 2024