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 ...
随机推荐
- 大家一起做训练 第一场 E Number With The Given Amount Of Divisors
题目来源:CodeForce #27 E 题目意思和题目标题一样,给一个n,求约数的个数恰好为n个的最小的数.保证答案在1018内. Orz,这题训练的时候没写出来. 这道题目分析一下,1018的不大 ...
- MySQL--linux IO调度算法
==================================================================== Linux IO调度算法Linux下目前有4中IO调度算法: ...
- [连载]Java程序设计(03)---任务驱动方式:寻找高富帅和屌丝
版权声明:本文为博主原创文章,请在转载时说明出处. https://blog.csdn.net/jackfrued/article/details/26163877 任务:相同在上一家公司.公司还须要 ...
- 横竖两个数字塔的效果BAT批处理怎么写?
横竖两个数字塔的效果BAT批处理怎么写?@echo offfor /l %%a in (0,1,1) do ( for /l %%i in (0,1,9) do ( for ...
- pycharm -- 导入主题(theme) and 修改背景颜色(护眼色)
前情提要 众所周知,随着python语言的不断流行,越来越多的程序员开始用python来开发自己的项目以及产品. pycharm作为一款流行的IDE,被越来越多的程序员所接受和使用. 尽管pychar ...
- ThinkPHP 5 中的 composer.json
本篇并不是揭 ThinkPHP 5 的问题. 只是通过 composer.json 来学习 compoer.json 元旦那天, ThinkPHP 5.1 正式发布,值得庆祝. 之后的第二天有人反馈 ...
- hadoop之 心跳时间与冗余快清除
1.Hadoop datanode节点超时时间设置 datanode进程死亡或者网络故障造成datanode无法与namenode通信,namenode不会立即把该节点判定为死亡,要经过一段时间,这段 ...
- java 报错及解决
java文件编译报错:error: unmappable character for encoding ASCII 解决: 编译时:javac -encoding utf-8 TestJava.jav ...
- 使用fiddler进行genymotion安卓虚拟机手机抓包
1.首先先下载fiddler,这个直接百度就有啦. 2.打开fiddler ,可以看到这个界面还是挺帅的: 3.选择Tools - Fiddler Options -Https选项卡将配置设置为如下: ...
- MySQL: ON DUPLICATE KEY UPDATE 用法
使用该语法可在插入记录的时候先判断记录是否存在,如果不存在则插入,否则更新,很方便,无需执行两条SQL INSERT INTO osc_visit_stats(stat_date,type,id,vi ...