▶ 闲鱼的 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 编程备忘的更多相关文章

  1. ubuntu下串口编程备忘

    弄了一下串口,一个小问题多折腾了下,备忘.软件环境:zl@zhanglong:~$ cat /etc/lsb-release DISTRIB_ID=UbuntuDISTRIB_RELEASE=12.0 ...

  2. shell编程备忘

    1.脚本存放目录 workspace="$(cd "$(dirname "$0")"; pwd)" 2.输出  其中 command 代表指 ...

  3. android 蓝牙通讯编程 备忘

    1.启动App后: 判断->蓝牙是否打开(所有功能必须在打牙打开的情况下才能用) 已打开: 启动代码中的蓝牙通讯Service 未打开: 发布 打开蓝牙意图(系统),根据Activity返回进场 ...

  4. Shell 编程备忘

    变量使用 1. 定义变量: a=1 变量名=值 等号两端不能有空格 2. 变量值为数字或字符串,字符串 "this is adeom" 'this is a demo',双引号中可 ...

  5. Xeon Phi 《协处理器高性能编程指南》随书代码整理 part 1

    ▶ 第三章,逐步优化了一个二维卷积计算的过程 ● 基准代码 #include <stdio.h> #include <stdlib.h> #include <string ...

  6. Sublime Text 备忘

    Sublime Text已经被传成编程利器,那当然也是我们前端的利器了,刚开始用的时候,很多小问题,所以做个备忘,忘记的时候也可以翻出来看看,下次重装的时候可以用到. 1.设置自动换行 菜单栏 Vie ...

  7. Linq to XML 读取XML 备忘笔记

    本文转载:http://www.cnblogs.com/infozero/archive/2010/07/13/1776383.html Linq to XML 读取XML 备忘笔记 最近一个项目中有 ...

  8. Python中利用函数装饰器实现备忘功能

    Python中利用函数装饰器实现备忘功能 这篇文章主要介绍了Python中利用函数装饰器实现备忘功能,同时还降到了利用装饰器来检查函数的递归.确保参数传递的正确,需要的朋友可以参考下   " ...

  9. Objective-C教程备忘单

    终极版本的Objective-C教程备忘单帮助你进行iOS开发. 想开始创建你的第一个iOS应用程序么?那么看一下这篇很棒的教程吧:Create your first iOS 7 Hello Worl ...

随机推荐

  1. su:鉴定故障

    deepin中从普通用户切换到管理员时出现su:鉴定故障 使用命令:su root [mylinux@localhost ~]$ su root 密码: su: 鉴定故障 解决方法: 使用命令:sud ...

  2. 利用Fierce2查询子域名

    http://pnig0s1992.blog.51cto.com/393390/368428 安装方法引用Mickey的: 1.Mickey@pentestbox:/pentest/enumerati ...

  3. BZOJ4899: 记忆的轮廓【概率期望DP】【决策单调性优化DP】

    Description 通往贤者之塔的路上,有许多的危机. 我们可以把这个地形看做是一颗树,根节点编号为1,目标节点编号为n,其中1-n的简单路径上,编号依次递增, 在[1,n]中,一共有n个节点.我 ...

  4. POJ3276(遍历+区间修改)

    http://poj.org/problem?id=3276 题意:n(n<=5000)头牛站成线,有朝前有朝后的的,然后每次可以选择大小为k的区间里的牛全部转向,会有一个最小操作m次使得它们全 ...

  5. 【问题】PPS、PPSX自动放映格式打开直接进入编辑模式

    在做自动放映格式的PPT的时候,发现另存为PPS或PPSX格式后,自动放映无法实现,而是直接进入了PPT编辑模式,于是开始寻找原因.发现是文件关联有问题,这与安装多个版本的ppt有关系. 解决办法: ...

  6. Vue中的“混合”——mixins使用方法

    混合是一种灵活的分布式复用 Vue 组件的方式.混合对象可以包含任意组件选项.以组件使用混合对象时,所有混合对象的选项将被混入该组件本身的选项.当组件和混合对象含有同名选项时,这些选项将以恰当的方式混 ...

  7. MVC思想-程序的控制流程-Struts2和SpringMVC黑马流程图

    1.初探 javaEE就是搞清前后台是怎么交互的,而控制那个交互的就被称为是:C:控制器 C负责协调调度程序如何执行的,M负责读数据的处理,比如说:验证输入的密码是否正确,是否 有这个权限.V就简单了 ...

  8. 微软通过.NET Native为Windows Store应用提速

    .NET Native是微软的一次尝试,旨在降低Windows Store应用的启动时间和内存占用. 自从去年11月份,有人发现Windows Store应用的启动速度有了大幅提高后,对该项目的猜测就 ...

  9. cmd下查看当前登陆用户

    cmd下查看当前登陆用户 终端下,自然可以用quser这个命令了.但是在其它如专业版2k下如何查看在线用户呢? C:\Documents and Settings\Administrator>n ...

  10. nnlog模块使用

    安利一个好用的写日志模块,python自带的logging模块理解起来比较费劲,直接pip install nnlog即可 使用例子如下代码:   1 2 3 4 5 6 7 8 9 10 11 12 ...