MIC编程指南初级教程.doc_第1页
MIC编程指南初级教程.doc_第2页
MIC编程指南初级教程.doc_第3页
MIC编程指南初级教程.doc_第4页
MIC编程指南初级教程.doc_第5页
免费预览已结束,剩余8页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

MIC编程(1)MIC是什么?美国SC12大会上,英特尔正式发布了至强融核Xeon Phi,采用MIC(Intel Many Integerated Core)架构,用于高性能并行计算。MIC基于X86架构,支持多种并行模型,OpenMP、pThread、OpenCL、MPI等并行编程语言,采用C、C+和Fortran三种语言进行软件移植开发,特点以编程简单(引语方式)著称,工具链丰富。MIC基于X86架构,是众核协处理器,MIC为Xeon Phi产品的架构总称,Xeon Phi的第一代产品的架构代号为“Knights Corner”。Knights Corner采用Intel 2012开始使用的3D“三门”晶体管技术,使用22nm工艺制造,MIC卡含有50个以上的核,每个核可以支持4个线程,双精性能超过1TFlops,含有512bit的向量宽度,支持8个双通道GDDR内存控制器,内存大小为6GB或8GB。MIC卡图解MIC卡通过PCI-E连接到主板上,通过一个8PIN和一个6PIN电源线供电,功耗在225-300W。MIC编程(2)MIC主要参数MIC 卡上每个核可以执行不同的指令,每个核最多支持4个硬件线程,用来隐藏存储访问延迟。MIC卡与主机端通过PCI-E连接,支持PCI-E x8或x16线宽配置。每个MIC卡可以设置独立的IP,可以把每个MIC卡当作独立的节点。MIC卡拥有512bit的向量位宽,可以同时处理16个32-bit浮点/整形元素或8个64-bit浮点/整形元素的计算。MIC卡包含32KB L1指令cache和32KB L1数据cache,同时,每个核拥有全局可见的L2 cache,大小为512KB。MIC的另一个重要的特点是卡上有一个微操作系统(uos),uos使得MIC卡具有下面的两个功能:1)MIC卡可以完整的之行程序,而不需要CPU发起主函数,即只需要把程序传递到MIC卡上,uos可以使程序完整运行。2)MIC卡包括众多的核,程序运行时可能有些核没有被用到,这时uos就可以通过关闭空闲的核减少功耗。MIC编程(3)MIC峰值性能计算方法SE10P:1. 单精度峰值性能: 32 SP FLOPs/clock/core * 61 cores * 1.1GHz =2147.2 GFLOP/s2.双精度峰值性能: 16 DPFLOPs/clock/core * 61 cores * 1.1GHz = 1073.6 GFLOP/s3. 内存带宽: 4 Bytes/channel * 16 mem. channels * 5.5GT/s= 352GB/s5110P:1. 单精度峰值性能: 32 SP FLOPs/clock/core * 60 cores * 1.053GHz =2021.76 GFLOP/s2.双精度峰值性能: 16 DPFLOPs/clock/core * 60 cores * 1.053GHz = 1010.88 GFLOP/s3. 内存带宽: 4 Bytes/channel * 16 mem. channels * 5.0GT/s= 352GB/s注:32SP FLOPs/clock/core =512/32*2,是指512bits向量化和FMA指令,双精度类似。MIC编程(4)MIC灵活高效的编程方式MIC是基于X86架构的众核处理器,CPU多核上的并行编程模型在MIC上都支持,同时MIC卡上运行一个uos,因此,MIC与CPU多核之间的编程很灵活,既可以CPU端启动主函数,也可以MIC端启动主函数,甚至可以CPU和MIC端同时各自发起主函数。CPU多核和MIC协同编程模式如下图所示,CPU多核和MIC协同计算有以下几种模式:1)Multi-Core Hosted:程序并行度较低,只在CPU多核上运行;2)Offload:加载模式,CPU端发起主函数,通过offload模式调用kernel到MIC上执行(类似于GPU的kernel执行模型);3)Symmetric:对等模式,即CPU多核和MIC各自发起主函数,采用-mmic编译选项区别MIC端可执行程序和CPU端可执行程序;4)Reverse Offload:逆转加载模式,与offload模式相反,由MIC端发起主函数;5)Many-Core Hosted:native模式,利用-mmic编译选项编译成MIC端可执行程序,程序只在MIC上执行。MIC编程(5 )MIC驱动MPSS安装1 MIC对硬件的要求1)主板目前,并不是所有的主板都支持MIC环境,有些主板升级BOIS后可以支持MIC环境。MIC需要在主板BOIS中启用大型基本地址寄存器 (BAR) 支持,MMIO大于4GB的寻址。默认情况下,大多数平台BIOS实施将其设为禁用,因此必须在平台 BIOS 设置中将其手动启用。有些系统默认的散热速度并未设置成全速,当使用被动散热的MIC卡时,需要改动系统的散热速度,设置其为全速散热才能保证MIC卡的正常运行。MIC需要安装在专业的服务器上运行,还没有看到PC机器上成功安装的情况。2)电源目前,MIC卡的功率为225W或300W,因此,系统中配置的电源需要足够才可。3)PCI-E接口MIC卡需要通过PCI-E 2.0 x16以上的接口与主板连接。2 目前MIC开发环境支持的操作系统Red Hat* Enterprise Linux* 64 位 6.0 内核 2.6.32-71Red Hat* Enterprise Linux* 64 位 6.1 内核 2.6.32-131Red Hat* Enterprise Linux* 64 位 6.2 内核 2.6.32-220Red Hat* Enterprise Linux* 64 位 6.3 内核 2.6.32-279对应Red Hat同一版本的CentOS也支持SUSE* Linux* Enterprise Server SLES 11 SP1 内核2-0.7-defaultSUSE* Linux* Enterprise Server SLES 11 SP2 内核3.0.13-0.27-defaultwindows版本也已提供支持:Microsoft* Windows 7 Enterprise SP1 (64-bit), Windows 8 Enterprise (64-bit), Windows Server 2008 R2 SP1 (64-bit) Windows Server 2012 (64-bit)3 目前支持MIC开发的软件环境Intel编译器对MIC提供了完全的支持,同时针对IntelMIC架构进行了特定的优化,使用Intel编译器可以获得较好的性能。开源编译器gcc支持native模式的开发。目前支持MIC的第三方工具包括编译器,各种编程规范,常用的应用库等,具体可参见:/en-us/articles/intel-and-third-party-tools-and-libraries-available-with-support-for-intelr-xeon-phitm4 MIC开发环境下载地址请根据操作系统选择合适的开发环境下载,下面的网站也提供了MIC环境安装步骤。/en-us/articles/intel-manycore-platform-software-stack-mpss可以购买或者下载试用版本的Intel开发工具/en-us/intel-sdp-home5 MPSS安装步骤(linux)1) 在安装英特尔(R) MPSS 软件之前禁用 SELinux,以避免 SELinux 覆盖标准 Linux*权限设置。2)检查先前已安装版本的英特尔(R) MPSS 程序包。 如果存在,则停止服务并卸载程序包。 user_prompt sudo rpm -qa | grep intel-mic user_prompt sudo service mpss stop3)卸载先前版本的英特尔(R) MPSS 驱动程序(如果存在)。 Red Hat* Enterprise Linux* user_prompt sudo yum remove -noplugins -disablerepo=* intel-mic* SUSE* Linux* Enterprise Server user_prompt sudo zypper remove intel-mic*4)解压缩并安装英特尔(R) MPSS 程序包(以mpss_gold_update_3-2.1.6720-13-rhel-6.0为例) user_prompt tar xvf mpss_gold_update_3-2.1.6720-13-rhel-6.0.tar user_prompt cd mpss_gold_update_3 Red Hat* Enterprise Linux* user_prompt sudo yum install -nogpgcheck -noplugins -disablerepo=* *.rpm SUSE* Linux* Enterprise Server user_prompt sudo zypper -no-gpg-checks install *.rpm5) 英特尔(R) 至强融核(TM) 协处理器 SMC Bootloader 更新(1) 将协处理器设为“就绪”状态 user_prompt sudo micctrl -r user_prompt sudo micctrl -w user_prompt mic0: ready(2) 仅对英特尔(R) 至强融核(TM) 硬件已安装的 B0 或 B1 卡更新 SMC 固件,如果系统为C0卡,不需要刷flash。user_promptsudo /opt/intel/mic/bin/micflash-Update /opt/intel/mic/flash/ -device all其中, 代表一个再此发行版中名为EXT_HP2_SMC_Bootloader_1_8_4326.css_ab 的 SMC 固件文件。6)启动英特尔(R) MPSS 服务 若是新安装,使用 user_prompt sudo micctrl -initdefaults 若要保留现有配置,使用 user_prompt sudo micctrl -resetdefaults 启动mpss服务 user_prompt sudo service mpss start 配置英特尔(R) MPSS 服务在主机 OS 启动时启动 user_prompt sudochkconfig mpss on 禁止英特尔(R) MPSS 服务在主机 OS 启动时启动 user_prompt sudochkconfig mpss off6 MIC安装中遇到的问题1)MIC卡插到主板上,但6PIN和8PIN接口没有接入电源,导致系统找不到MIC卡。2)MIC 驱动(MPSS)版本和操作系统版本不一致,导致运行MIC程序时提示找不到MIC设备。3)MIC运行作业时会因为温度过高导致MIC停止工作。当MIC温度过高停止工作时,需要系统断电后重启机器才可以恢复MIC正常工作,若不断电,系统重启后MIC仍不能使用。导致该问题的是散热方案,有些系统默认的散热速度并未设置成全速,当使用被动散热的MIC卡时,需要改动系统的散热速度,设置其为全速散热才能保证MIC卡的正常运行。MIC编程(6 )MIC对等模式配置方法基于InfiniBand网络的对等模式还没有配置成功过,下面以以太网的配置方法为例说明其过程。首先安装MIC驱动-MPSS包,详细安装过程见“MIC编程(5 )MIC驱动MPSS安装”通过service mpss status命令查看mpss的运行状态,若返回mpss is running,则先关闭mpss服务:service mpss stop下面以host端IP为:00,MIC0:01,MIC1:02为例新建 /etc/sysconfig/network-scripts/ifcfg-br0,内容:DEVICE=br0TYPE=BridgeONBOOT=yesDELAY=0NM_CONTROLLED=noMTU=9000BOOTPROTO=staticNOZEROCONF=yesIPADDR=00NETMASK=修改/etc/sysconfig/network-scripts/ifcfg-eth0为:DEVICE=eth0ONBOOT=yesBRIDGE=br0MTU=9000micctrl -addbridge=br0 -type=External -ip=00 mic0 mic1micctrl -network=static -bridge=br0 -ip=01:02 mic0 mic1echo MTU=9000 /opt/intel/mic/filesystem/mic0/etc/sysconfig/network/ifcfg-mic0echo MTU=9000 /opt/intel/mic/filesystem/mic1/etc/sysconfig/network/ifcfg-mic0service network restartservice mpss start成功配置后,就把MIC0的IP改为01,MIC1的IP改为:02多节点可以采用类似的配置方法,配置成功后,不同节点主机与主机,主机与MIC,MIC与MIC可以互相访问。MIC编程(7 )offload语法MIC编程中最基本的语法就是offload语句,offload语句的作用为将程序和数据由CPU端传递到MIC端,并在MIC上执行,offload语法为:C/C+:#pragma offload target(mic: id) in(.) out(.)Fortran:!dec$ OFFLOAD target(mic: id)in(.) out(.)或:!DIR$ OFFLOAD BEGIN target(mic: id)in(.) out(.).!DIR$ END OFFLOADtarget指定在哪块卡上运行,id代表设备编号,如果id等于-1,系统将自动选择一块计算设备(现在来说只有MIC卡),如果没有符合要求的设备(如只有CPU),程序将退出并报错;如果id大于等于0,程序将offload到相应的id号mic上。target(mic)不指定运行在哪块MIC卡上,这时程序会轮回的执行在不同的MIC卡上,如系统有两块MIC卡,第1次offload到mic0上执行,第2次offload到mic1上执行,第3次offload到mic0上执行,第4次offload到mic1上执行,.in() out()代表数据传递方向,in为数据从CPU内存传递到MIC内存上,out为数据从MIC内存上回传到CPU内存中。具体语法后面再详细介绍。下面以向量加为例说明:1. #include 2. #include 3. #include 4.5. #define N 2000006.7. _attribute_(target(mic)8. void VecAdd_mic(float* A, float* B, float* C, int size)9. 10. #pragma omp parallel for11. for(int i=0;isize;i+)12. Ci = Ai + Bi;13. 14.15. int main( int argc, char* argv)16. 17. int i;18. int size = N * sizeof(float);19.20. float *A,*B,*C;21. A = (float*)malloc(size);22. B = (float*)malloc(size);23. C = (float*)malloc(size

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论