Xeon Phi 编程备忘
▶ 闲鱼的 Xeon Phi 3120A 配办公室的新 Xeon 服务器,记录一下环境安装过程。


● 原本尝试搭 Ubuntu 服务器,参考【https://software.intel.com/en-us/forums/intel-many-integrated-core/topic/532329】以及其中引用的一篇重要的日志【http://www.arrayfire.com/getting-started-with-the-intel-xeon-phi-on-ubuntu-14-04linux-kernel-3-13-0/】。但是这些文章只能使用 Ubuntu 14.04 或 Ubuntu 12.04,以及较老版本的 MPSS 驱动,他提供的修改后的源码文件在 Ubuntu 16.04 上无法编译通过,我记得报错至少有【https://blog.csdn.net/hn2zzzz1996/article/details/79496282】和【https://blog.csdn.net/hjs1122/article/details/6163629】,这都是函数版本的问题。最后只能回归 Red Hat 。
● 改用 RedHat 7.2,安装环境较为简单。基本环境弄好后,首先下载安装包【https://software.intel.com/en-us/articles/intel-manycore-platform-software-stack-mpss#lx34rel】,选了当时最新的 MPSS 3.8.4 release for Linux,最主要的是 mpss-3.8.4-linux.tar,其他的软件、源码都暂时没用到。就可以按照安装包链接下方的 readme.txt 进行安装了,总体思路是重建了 src 目录里的一个 rpm 包,然后把所有的包放到一起全部安装,然后调整网络、服务等。有一篇中文的介绍可供参考【https://blog.csdn.net/mrhiuser/article/details/51481713】
● 教科书《Intel Xeon Phi协处理器高性能编程指南》(J. Jeffers & J. Reinders )
● 安装 Intel Parallel Studio 全家桶,主要使用到 icc 编译器和几个性能分析器,用学校邮箱申请了一年免费使用(听说以前有永久免费版版?)
● 无密码登录计算卡的方法,参考【https://blog.csdn.net/linweieran/article/details/80333239】
[root@mic01]# ssh-keygen // 创建 root 秘钥
[root@mic01]# service mpss stop // 暂停 mpss
[root@mic01]# micctrl --sshkeys=root mic0 // 添加 root 秘钥
[root@mic01]# service mpss start // 重启 mpss
● Xeon Phi 的精简 Linux 默认没有 su,dir,vim 等命令,没有 /opt 目录,/etc 中 没有 /etc/ld.so.conf.d 目录
● 用 icc 编译在计算卡上运行的程序,需要用到 OpenMP 和 Offload 等扩展时需要添加动态库。用到的库在 /usr/local/intel/composer_xe_2015.0.090/compiler/lib/mic 和 /usr/local/intel/composer_xe_2015.0.090/compiler/lib/intel64 下,两个目录下的库文件分别对应计算卡和主机,很多库文件的名字相同但大小不同,且不相互兼容,需要不同文件时要注意对应。
● 动态库问题的最终解决方法如下,参考【https://software.intel.com/zh-cn/forums/intel-visual-fortran-compiler-for-windows/topic/518187】。另外一种方法,向 /etc/ld.so.conf 中添加库文件目录(或者在 /etc.ld.so.conf.d 中新建一个文件 echo "/usr/local/intel/composer_xe_2015.0.090/compiler/lib/mic" >> xeonphi.conf),然后 ldconfig。但是用这种方法只解决了初级库文件 libiomp5.so 和 liboffload.so 的问题,他们再引用的次级库文件还是找不到,不懂。
[cuan@host ~]$ vim .bashrc # 添加下列内容,有什么用后面说 # for icc & mic
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/intel/composer_xe_2015..0.090/compiler/lib/mic:/usr/local/intel/composer_xe_2015..0.090/compiler/lib/intel64
export MIC_LD_LIBRARY_PATH=$MIC_LD_LIBRARY_PATH:/usr/local/intel/composer_xe_2015..0.090/compiler/lib/mic [cuan@host ~]$ source .bashrc
■ 编译时
[cuan@host code]$ icc -std=c99 -openmp -O3 test_omp.c -o test_omp.exe -liomp5
# OpenMP 用到了 libiomp5.so,但是好像可以不加 -liomp5 [cuan@host code]$ icc -std=c99 -openmp -O3 test_offload.c -o test_offload.exe -limf -lirng -lintlc -lsvml
# offload 模式用到了以 liboffload.so. 为首的一系列库文件,-loffload 本身可以不加,但剩下几个一定要加
■ 不加的报错:
# 没有加 LD_LIBRARY_PATH
[cuan@host code]$ icc -std=c99 -openmp -O3 test_offload.c -o test_offload.exe # 报 warning,运行时找不到库文件
x86_64-k1om-linux-ld: warning: libimf.so, needed by /usr/local/intel/composer_xe_2015.0.090/compiler/lib/mic/liboffload.so., not found (try using -rpath or -rpath-link)
x86_64-k1om-linux-ld: warning: libsvml.so, needed by /usr/local/intel/composer_xe_2015.0.090/compiler/lib/mic/liboffload.so., not found (try using -rpath or -rpath-link)
x86_64-k1om-linux-ld: warning: libirng.so, needed by /usr/local/intel/composer_xe_2015.0.090/compiler/lib/mic/liboffload.so., not found (try using -rpath or -rpath-link)
x86_64-k1om-linux-ld: warning: libintlc.so., needed by /usr/local/intel/composer_xe_2015.0.090/compiler/lib/mic/liboffload.so., not found (try using -rpath or -rpath-link)
ld: warning: libimf.so, needed by /usr/local/intel/composer_xe_2015.0.090/compiler/lib/intel64/liboffload.so., not found (try using -rpath or -rpath-link)
ld: warning: libsvml.so, needed by /usr/local/intel/composer_xe_2015.0.090/compiler/lib/intel64/liboffload.so., not found (try using -rpath or -rpath-link)
ld: warning: libirng.so, needed by /usr/local/intel/composer_xe_2015.0.090/compiler/lib/intel64/liboffload.so., not found (try using -rpath or -rpath-link)
ld: warning: libintlc.so., needed by /usr/local/intel/composer_xe_2015.0.090/compiler/lib/intel64/liboffload.so., not found (try using -rpath or -rpath-link)
[cuan@host code]$ ./test_offload.exe
./test_offload.exe: error while loading shared libraries: liboffload.so: cannot open shared object file: No such file or directory [cuan@host code]$ icc -std=c99 -openmp -O3 base.c -o test_offload.exe -limf -lsvml -lirng -lintlc # 无 warning,运行时找不到次级库文件
[cuan@host code]$ ./test_offload.exe
./test_offload.exe: error while loading shared libraries: libimf.so: cannot open shared object file: No such file or directory # 加了 LD_LIBRARY_PATH 但没加 MIC_LD_LIBRARY_PATH:
[cuan@host code]$ icc -std=c99 -openmp -O3 test_offload.c -o test_offload.exe # 报 warning,运行时找不到库文件
x86_64-k1om-linux-ld: warning: libimf.so, needed by /usr/local/intel/composer_xe_2015.0.090/compiler/lib/mic/liboffload.so., not found (try using -rpath or -rpath-link)
x86_64-k1om-linux-ld: warning: libsvml.so, needed by /usr/local/intel/composer_xe_2015.0.090/compiler/lib/mic/liboffload.so., not found (try using -rpath or -rpath-link)
x86_64-k1om-linux-ld: warning: libirng.so, needed by /usr/local/intel/composer_xe_2015.0.090/compiler/lib/mic/liboffload.so., not found (try using -rpath or -rpath-link)
x86_64-k1om-linux-ld: warning: libintlc.so., needed by /usr/local/intel/composer_xe_2015.0.090/compiler/lib/mic/liboffload.so., not found (try using -rpath or -rpath-link)
[cuan@host code]$ ./test_offload.exe
The remote process indicated that the following libraries could not be loaded: liboffload.so. libcilkrts.so.
offload error: cannot start process on the device (error code ) [cuan@host code]$ icc -std=c99 -openmp -O3 test_offload.c -o test_offload.exe -limf -lsvml -lirng -lintlc # 无 warning,运行时找不到次级库文件
[cuan@host code]$ ./test_offload.exe
The remote process indicated that the following libraries could not be loaded: libimf.so libsvml.so libirng.so libintlc.so. liboffload.so. libcilkrts.so.
offload error: cannot start process on the device (error code )
Xeon Phi 编程备忘的更多相关文章
- ubuntu下串口编程备忘
弄了一下串口,一个小问题多折腾了下,备忘.软件环境:zl@zhanglong:~$ cat /etc/lsb-release DISTRIB_ID=UbuntuDISTRIB_RELEASE=12.0 ...
- shell编程备忘
1.脚本存放目录 workspace="$(cd "$(dirname "$0")"; pwd)" 2.输出 其中 command 代表指 ...
- android 蓝牙通讯编程 备忘
1.启动App后: 判断->蓝牙是否打开(所有功能必须在打牙打开的情况下才能用) 已打开: 启动代码中的蓝牙通讯Service 未打开: 发布 打开蓝牙意图(系统),根据Activity返回进场 ...
- Shell 编程备忘
变量使用 1. 定义变量: a=1 变量名=值 等号两端不能有空格 2. 变量值为数字或字符串,字符串 "this is adeom" 'this is a demo',双引号中可 ...
- Xeon Phi 《协处理器高性能编程指南》随书代码整理 part 1
▶ 第三章,逐步优化了一个二维卷积计算的过程 ● 基准代码 #include <stdio.h> #include <stdlib.h> #include <string ...
- Sublime Text 备忘
Sublime Text已经被传成编程利器,那当然也是我们前端的利器了,刚开始用的时候,很多小问题,所以做个备忘,忘记的时候也可以翻出来看看,下次重装的时候可以用到. 1.设置自动换行 菜单栏 Vie ...
- Linq to XML 读取XML 备忘笔记
本文转载:http://www.cnblogs.com/infozero/archive/2010/07/13/1776383.html Linq to XML 读取XML 备忘笔记 最近一个项目中有 ...
- Python中利用函数装饰器实现备忘功能
Python中利用函数装饰器实现备忘功能 这篇文章主要介绍了Python中利用函数装饰器实现备忘功能,同时还降到了利用装饰器来检查函数的递归.确保参数传递的正确,需要的朋友可以参考下 " ...
- Objective-C教程备忘单
终极版本的Objective-C教程备忘单帮助你进行iOS开发. 想开始创建你的第一个iOS应用程序么?那么看一下这篇很棒的教程吧:Create your first iOS 7 Hello Worl ...
随机推荐
- 51Nod 1072:威佐夫游戏 (威佐夫博奕)
1072 威佐夫游戏 基准时间限制:1 秒 空间限制:131072 KB 分值: 0 难度:基础题 收藏 关注 有2堆石子.A B两个人轮流拿,A先拿.每次可以从一堆中取任意个或从2堆中取相同数 ...
- python open和file的区别
opne和file都是用来对文件的操作 open:内置函数,使用方式是open('file_name', mode, buffering),返回值是一个file对象,以写模式打开文件如果不存在会被创建 ...
- 【HAOI2013】花卉节
HA果然是弱省中的弱省…… 原题: ZZ市准备在绿博园举办一次花卉节.Dr.Kong接受到一个任务,要买一批花卉进行布置园林.能投入买花卉的资金只有B元 (1 <= B <= 10^18) ...
- 关于springmvc 返回json数据null字段的显示问题-转https://blog.csdn.net/qq_23911069/article/details/62063450
最近做项目(ssm框架)的时候,发现从后台返回的json(fastjson)数据对应不上实体类,从数据库查询的数据,如果对应的实体类的字段没有信息的话,json数据里面就不显示,这不是我想要的结果,准 ...
- hasura graphql-engine v1.0.0-alpha26 版本新功能
hasura 发布了graphql-engine v1.0.0-alpha26 版本,有一些破坏的变动,以及方便的新特性 破坏性变动 order_by 从 order_by: id_asc 为 ord ...
- ThinkPHP 一直坚挺着
ThinkPHP 一直坚挺着 从最初的 0.6 到现在的 5.2 ThinkPHP 走过了 12 年. 从 PHP 4 迭代到 PHP 7.3,每一次更新都给开源社区注入了活力. 这次国内开源软件的投 ...
- window下安装两个mysql服务
产生这个想法主要是因为win系统之前装了mysql,服务名为mysql.又重新安装xampp,导致mysql冲突,xampp中的mysql始终启动不起来. 解决方法如下: 1.修改xampp中my ...
- 共享设置及ftp设置
第一部分 共享设置 一.添加编译选项 network---file transfer---aria2 ...
- 【python】网络编程-SocketServer 实现客户端与服务器间非阻塞通信
利用SocketServer模块来实现网络客户端与服务器并发连接非阻塞通信.首先,先了解下SocketServer模块中可供使用的类:BaseServer:包含服务器的核心功能与混合(mix-in)类 ...
- 【appium】根据UIAutomator定位元素
text属性的方法 driver.find_element_by_android_uiautomator('new UiSelector().text("Custom View") ...