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 ...
随机推荐
- MySQL Transaction--快照读和当前读
在MySQL读取数据时可以按照是否使用一致性非锁定读来分为快照读和当前读:1.快照读:MySQL使用MVCC (Multiversion Concurrency Control)机制来保证被读取到数据 ...
- hbase基于solr配置二级索引
一.概述 Hbase适用于大表的存储,通过单一的RowKey查询虽然能快速查询,但是对于复杂查询,尤其分页.查询总数等,实现方案浪费计算资源,所以可以针对hbase数据创建二级索引(Hbase Sec ...
- LOADRUNNER之汉字编码转换及\X00问题
我们在使用loadrunner做性能测试的时候经常会出现一些URL编码问题,如当参数中存在中文的时候 "Name=user", "Value=孟林", ENDI ...
- 【转】每天一个linux命令(59):rcp命令
原文网址:http://www.cnblogs.com/peida/archive/2013/03/14/2958685.html rcp代表“remote file copy”(远程文件拷贝).该命 ...
- centos 下nginx源码编译安装
1.下载nginx 进入nginx官网下载nginx的稳定版本,我下载的是1.10.3. 下载:wget http://nginx.org/download/nginx-1.10.3.tar.gz 解 ...
- SQL 计算某月有多少天
今天用SQL Server 2005写查询语句,要求计算一个月平均每天发生的金额.以前往往喜欢查询相关的所有列,在代码中进行计算,还没有在SQL中写过. 第一印象就是:要考虑到润年还是平年,再判断是大 ...
- redis在PHP中的基本使用案例(觉得比较实用)
源地址 http://www.t086.com/article/4901
- 关于Jquery 插件开发,写的很清楚了。。。
转自:http://blog.jobbole.com/30550/ 本文由 伯乐在线 - 戴嘉华 翻译.未经许可,禁止转载!英文出处:Extraordinarythoughts.欢迎加入翻译小组. 如 ...
- Number常用方法函数
Number类型应该是ECMAScript中最令人关注的数据类型了,这种类型使用IEEE754来表示整数和浮点数,并针对Number相关特点定义了一系列相关的方法函数. isFinite() 在Jav ...
- 关于 appium get_attribute --获取对应属性值 API说明
1.获取 content-desc 的方法为 get_attribute("name") ,而且还不能保证返回的一定是 content-desc (content-desc 为空时 ...