并行程序的设计Chapter6.ppt

  1. 1、本文档共29页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章 异构加速部件的并行编程 刘 轶 北京航空航天大学 计算机学院 6.1 Intel MIC协处理器编程简介 MIC--Many Integrated Core 商品名:Intel Xeon Phi 6.1 Intel MIC协处理器编程简介 一、Intel MIC硬件架构 第一代MIC: Knights Corner 60核,支持240个并行线程 共享内存,核间cache一致性 单处理器性能达1TeraFlops双精度浮点 第一代MIC核的特性 基于Pentium架构,做了改进(64位,SIMD支持) 32KB L1 cache, 512KB L2 cache(核内) 支持512bit向量,传统的SSE 128bit,AVX 256bit 支持4个超线程,普通Xeon处理器是2个超线程 主频1.053GHz 为Host system + Coprocessor卡形式 8GB内存,320GB/s访存带宽 Linux系统,IP addressable 功耗225W Host上运行完整的Linux系统 Xeon Phi上运行一个嵌入式Linux,以及与host通信的驱动 新一代MIC: Knights Landing 72核 单精度浮点性能:6TeraFlops,双精度浮点性能:3TeraFlops 可独立工作 二、软件及编程语言 可为其配置IP地址 在host系统上可ssh到其上 编程语言与接口基本与 Intel Xeon处理器一致 编程语言 C/C++、Fortran等 编程接口 OpenMP Cilk TBB pthreads … 在ssh窗口中,显示/proc/cpuinfo文件 三、Intel MIC的几种计算模型 最常用 Offload模式 Symmetric模式 Native模式 6.1 Intel MIC协处理器编程简介 四、基本语法 最基本的关键字:offload #pragma offload 紧跟该命令之后的代码块(单条语句或{…})将在MIC上执行 offload只起到将代码移至MIC执行的作用,要使用多核并行执行,需配合使用OpenMP等并行编程接口/语言 main() { int i; float arr[LEN]; #pragma offload target(mic) for ( i = 0; i LEN; i++ ) arr[i] = i * 3.0f / 2.0f; } main() { int i; float arr[LEN]; #pragma offload target(mic) #pragma omp parallel for for ( i = 0; i LEN; i++ ) arr[i] = i * 3.0f / 2.0f; } 在MIC的一个核上执行for循环 使用OpenMP生成多线程,在MIC的多个核上并行执行for循环 6.1 Intel MIC协处理器编程简介 四、基本语法 数据传输关键字 in: 在设备端开辟空间,将主机端数据复制到设备端 out: 在设备端开辟空间,设备端代码执行结束后,将数据复制到主机端 inout: 在设备端开辟空间,执行设备端代码时,将数据复制到设备端,设备端代码执行完毕后,将数据复制到主机端 nocopy: 仅建立空间,不复制数据 main() { int i; float arr[LEN]; #pragma offload target(mic) for ( i = 0; i LEN; i++ ) arr[i] = i * 3.0f / 2.0f; } main() { int i; float arr[LEN]; #pragma offload target(mic) out(attr) for ( i = 0; i LEN; i++ ) arr[i] = i * 3.0f / 2.0f; } 在MIC计算出数组attr,需要将结果输出到主机端 MIC协处理卡上有独立内存,不与主机端共享内存,因此需进行[主机?MIC]和[MIC?主机]间的数据传输 注:非数组变量可不显式地传输,自动被认为是inout 6.1 Intel MIC协处理器编程简介 四、基本语法 数据传输关键字:语法规则 传输关键字后跟( ),括号内为一个或多个变量名,之间逗号隔开 变量名应为数组、指针或普通变量 变量为数组或指向数组的指针时,可指定起始下标和长度 变量为指针时,只能指向非指针变量,且

您可能关注的文档

文档评论(0)

189****6140 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档