说明:由于年代久远,写这篇文章时用到的知识和软件都是那个时间节点上所找到的最优方案,但是却可能已经不适合于当前。虽然基本东西都在,但是细节已然不同,能够帮到大家最好,如若未够还请各位看官谅解。
2017-11-13 16:45:01
1 使用说明
- 系统环境:Ubuntu 14.04 LTS
- Intel版本:Intel® Parallel Studio XE Professional Edition for C++ Linux* 2016
- JDK 版本:Java SE Development Kit 7u79
- Eclipse版本:Eclipse IDE for C/C++ Developers
2 安装流程
2.1 安装g++
如果没有安装g++的话,在后续安装程序时会卡住,并被提示需要安装该程序。
网上有许多关于解决此问题的介绍,需要注意的一点是,由于我们的系统时14.04,版本号较高,里面涉及到的一些预装软件需要降级才能安装g++,需要注意。
2.2 Intel Parallel Studio 安装
根据User Guide来进行安装,大致过程如下,
- 找到下载的安装文件并解压
- 采用比较常规的GUI安装方式,
$ sh install_GUI.sh
- 一步一步安装,同win下安装一样。只注意在要求序列号(VLNH-ZGFRJ53D)的地方,输入自己免费试用或购买的序列号即可。
2.3 配置环境变量
与win下设置环境变量相同,需要有这个环境变量来让程序可以运行。
当上面的程序安装完成后,如果此时在终端输入"icpc -v"或"icc -v"是提示找不到命令的。
需要以如下方式解决:进入计算机/etc/profile 文件,在末尾加入:
source /opt/intel/bin/compilervars.sh intel64
之后遇到的问题就是如何在命令行中使用intel c++编译器,并使用openmp和mkl来编译自己的程序,并运算。
为了正常使用mkl,同样需要在环境变量中加入内容,与前述相同,所加内容如下:
source /opt/intel/compilers_and_libraries_2016.0.109/linux/mkl/bin/mklvars.sh intel64 ilp64
2.4 命令行运行程序
$ icpc main.cpp -mkl=parallel -qopenmp(还有问题)
但是就目前而言,好像并没有什么用,这样运行出来的结果时生成了以个名为 a.dat 的可执行文件,但是并没有调动起所有的线程,并且也没有正常运行,知道了一半。也是醉了。现在打算把 JDK 和 Eclipse 装上,在上面配置intel c++。
3 安装JDK
3.1 下载JDK
3.2 解压JDK
可以参照该网页文档
我自己整理的步骤如下:
- 对应JDK文件解压后的文件夹名称为“jdk1.7.0_79”
- 在 /usr/ 文件夹下建立 jdk 文件夹
$ sudo mkdir -p /usr/jdk
- 将第1步解压后的文件夹“jdk1.7.0_79”复制或移动到第2步建立的jdk文件夹目录下
$ sudo cp -r jdk1.7.0_79/ /usr/jdk/
- 配置环境变量,打开 /etc/profile 文件
$ sudo subl /etc/profile
在profile文件最后加入如下语句:
export JAVA_HOME=/usr/jdk/jdk1.7.0_79
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$JAVA_HOME/lib:$CLASSPATH:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin
- 确认是否安装成功。第一句时由于一般需要注销重新登录才能生效,但这句话可以起到相同效果。
$ source /etc/profile
$ java -version
4 安装Eclipse
4.1 下载Eclipse C++
4.2 解压文件到 /opt/
$ cd /opt/ && tar zxvf (文件路径)
4.3 在 /opt/eclipse 运行 eclipse
此时不经任何操作的话,双击 eclipse 是不能直接运行的。因为提示的错误里面说 jre目录 搜索不到需要用到的java。我们也注意到在 eclipse 目录下是不存在 jre 文件夹的。因此通过下面的方式解决:
- 在 eclipse 文件夹下 新建 jre 文件夹
$ mkdir jre
- 进入 jre 文件夹,链接 jdk 的绝对目录 /bin bin 到jre,这样就可以在jre搜索到java啦
$ sudo ln -s /usr/jdk/jdk1.7.0_79/bin bin
- 将eclipse加入到环境变量中使其可以在终端通过 eclipse 命令打开
$ sudo subl /etc/profile
在profile 末尾加入 export PATH=$PATH:/opt/eclipse,并通过注销重新登录或以下命令结束:
$ source /etc/profile
5 Eclipse 中设置 intel c++
下面的工作主要都是在 Eclipse 软件界面下进行。
5.1 安装 C/C++ Development Tooling(CDT)
- Help -> Install new software
- Work with -> CDT
- 不选中(Deselect) -> Group items by category
- next 知道安装完成
5.2 安装 intel c++ 编译器
该部分具有重要参考意义的链接,这个比Parallel studio的帮助文档有用多了,因为后者给的是错误的帮助。
- Help -> Install new software
- Work with -> Add -> Local -> 选择intel安装目录下的如下文件夹/opt/intel/ide_support_2016/eclipse/compiler_xe
- 勾选 与intel相关的编译器,并同样不勾选 Group items by category
- next 知道安装完成
5.3 可能需要的命令行
一般情况下就可以使用集成在 eclipse 下的 intel c++ 编译器了。
但是可能存在些许小问题,可以通过如下命令试着解决。
$ source <istall-dir>/compilers_and_libraries/linux/bin/compilervars.sh intel64
$ LANG=en_US eclipse
5.4 使用 mkl 以及 openmp 的程序设置
- 新建以 Toolchains 为 Intel(R) C++ Compiler XE 的C++工程文件
- 将相关程序文件(包括 源文件和头文件)放在目录 src 文件夹,所需要读取的文件放置在程序根目录
- 查看工程文件的属性,修改相关部分,在此只列打开mkl和openmp的相关设置,其他优化待后续尝试及添加
- 打开 mkl
C++ Build -> Settings -> Performance Library Build Components -> Use Intel(R) Math Kernel Library -> -mkl=parallel
- 打开 openmp
C++ Build -> Settings -> Language -> Process OpenMP Directives -> Generate Parallel Code(-qopenmp)
说明:在centos上属性栏设置选项中就没有关于openmp的设置项,但是目前主流编译器中都集成了openmp,因此针对这种情况在 设置选项的 C++附加项中手动加上 -qopenmp 就行
- 然后正常运行,Build -> Compile -> Run,查看结果