导读:
本文教大家如何安装oneAPI,推荐大家使用linux系统,因此windows/mac也可以使用VM虚拟机搭建linux环境。
虚拟机的配置是根据oneAPI和oneDNN动态实验调整出来的,不要只按照网上独立的虚拟机安装教程
本文包括:
- linux(ubuntu18)安装oneAPI
- 安装oneDNN,使用最新的icx/icpx(DPC++编译器)
- 安装opencv4.6.0
最终离不开linux系统,所以入门linux不会错~
PS:虚拟机方式不能使用GPU加速
如果你选择使用虚拟机,请看接下来的教程,否则可以直接跳过!
VM和Ubuntu的安装
安装VMware虚拟机
- 下载安装包
- 更改默认安装位置
- 按默认配置
- 输入密钥
下载Ubuntu镜像
如果网速慢,建议寻找国内镜像,各大高校的下载速度挺快的,选择离你最近的高校镜像加速速度更佳哟~
另外,我下载的是桌面版,讲解也以图像界面为主。
安装Ubuntu18
- 创建虚拟机
- 向导界面选择“自定义高级”
- 兼容性选择当前vmware版本
- 在安装程序光盘影像文件选择下载的镜像(iso)路径
- 输入全名(就是用户名),用户名(这里我写的始终没有发现在哪体现)和密码 (这里写不好,后期都能改,不要慌)
- 虚拟机名称可以随便取;“位置”就是将来虚拟机文件所在的目录,因为虚拟机文件比较大,要选择一个磁盘空间比较大的目录。
- 下一步,设置要分配给虚拟机的CPU,电脑配置高的可以往上调,这样在后面使用
make -jx 带劲(4核以上)。 - 内存推荐8G以上
- 默认
- I/O控制器类型默认推荐
- 虚拟磁盘类型默认推荐
- 创建新虚拟磁盘
- 磁盘空间,因为后面要安装oneapi,建议60GB以上
- 磁盘文件名,没有什么影响
- 完成之后会自动安装
- 登录进去之后一般就会问你要不要升级到新版本,点取消,否则系统就白装了
更改国内源
- 备份文件
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak - 更改文件权限使其可编辑
sudo chmod 777 /etc/apt/sources.list sudo gedit /etc/apt/sources.list
我使用的Ubuntu18,因此使用
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
-
更新软件列表,换源完成 sudo apt-get update
sudo apt-get upgrade
接下来是重点了!
oneapi的安装
在虚拟机打开浏览器下载Intel oneAPI Base Toolkit 和Intel? oneAPI HPC Toolkit
https://www.intel.com/content/www/us/en/developer/tools/oneapi/toolkits.html?wapkw=toolkit#base-kit
安装包方式:
- 打开下载目录,右键点击Properties复制目录
- 打开终端,输入
pwd 查找当前目录地址,以便更好的使用相对路径 - 输入
sudo sh Downloads/l_BaseKit_p_2022.3.0.8767.sh (注意自己的目录)
- 输入
sudo 意思为所有用户安装,也可以不放
命令行方式:
-
在下载界面往下滑有个Command Line Download,复制这里的命令使用wget下载 -
例如 wget https://registrationcenter-download.intel.com/akdlm/irc_nas/18852/l_BaseKit_p_2022.3.0.8767.sh
sudo sh ./l_BaseKit_p_2022.3.0.8767.sh
下一步: -
输入之后会弹出图形界面,看到很多前辈说选择自定义,把组件中的intel Distribution for python 取消了,说会造成不必要的影响,接下来按照图形界面的指示进行安装即可**(虚拟机没有GPU,使用CPU就行,因此无视GPU错误)**,默认安装路径是/opt/intel/oneapi/ -
如果已经安装全部组件了,没有关系,(重新启动一下sh),就能够卸载组件
- 打开了控制台找到Modify
- Add/Remove components
- 找到这个python编辑器,取消会出现will be uninstalled
- 点击->下一步
-
Intel? oneAPI HPC Toolkit 同操作 -
很多人说要设置环境变量,就看自己需不需要了
- 如果不需要,每次使用icx/icpx等时候,或者发现命令找不到时候,要使用
source /opt/intel/oneapi/setvars.sh 激活(新建一个新的terminal都要运行一次),而环境变量就是节省你输入的次数,但是会每次打开terminal运行 - 接下来开始设置环境变量,如果不需要可以跳过
sudo gedit ~/.bashrc - 将
source /opt/intel/oneapi/setvars.sh > /dev/nulll 写入最后一行
oneDNN的部署-icx/icpx编译
-
这里我不建议直接git clone,因为clone下来的是开发版不稳定,直接下载已经Releases的正式版!并且自己本地下载直接移动到虚拟机界面,速度更快!附Github地址 -
如果没有设置前面的环境变量,记得source /opt/intel/oneapi/setvars.sh -
mkdir -p build
cd build
export CC=icx
export CXX=icpx
cmake .. \
-DDNNL_CPU_RUNTIME=SYCL \
-DDNNL_GPU_RUNTIME=SYCL
-
构建库,make -j
-
这里有个知识点,一般只有j效率太低了,就像这里的构建,很多次会使用系统奔溃重启!而make可以根据cpu总数进行合理利用 -
使用make -j 后面跟一个数字,比如make -j4 make -j6 make -j14 等。 含义是 让make最多允许n个编译命令同时执行,这样可以更有效的利用CPU资源。 -
并行的任务不宜太多,一般是以CPU的核心数目的两倍为宜 -
cpu_num=`cat /proc/stat | grep cpu[0-9] -c`
echo "make -j${cpu_num}"
make -j${cpu_num} //或者make -j${cpu_num}*2
-
因此建议make -j数字 -
使用ctest 命令,如果检验是0%说明你没有启动source /opt/intel/oneapi/setvars.sh ,因为我们使用虚拟机,它是没有CPU的,因此他是不可能100%,一般80%就是正确的 -
文档中说要构建文档,经过测试无法成功,并且自带的doc文件已经有了,感觉是官方的bug,再次可以直接跳过 -
sudo cmake --build . --target install -
icpx getting_started.cpp -ldnnl 测试
我的自定义
opencv4.6.0安装教程
依赖环境
sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
sudo apt-get install libgtk2.0-dev
sudo apt-get install pkg-config
下载压缩包
opencv官网
进入到解压后的文件夹下
mkdir build cd build cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_GTK=ON -D OPENCV_GENERATE_PKGCONFIG=YES .. sudo make -j4 根据cpu数进行编译sudo make install 安装
配置环境
-
sudo gedit /etc/ld.so.conf
- 输入
include /usr/local/lib 保存 - 运行
sudo ldconfig 更新 -
sudo gedit /etc/bash.bashrc
- 在文件末尾加入:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig export PKG_CONFIG_PATH source /etc/bash.bashrc -
pkg-config opencv4 --modversion 检验环境 -
编译指令 clang++ `pkg-config opencv4 --cflags` demo.cpp -o demo `pkg-config opencv4 --libs`
example_utils.hpp
如果使用的项目需要使用,需要将oneDNN目录里的example文件夹里的example_utils.hpp 移动与项目文件同目录,例如这里取AlexNet.cpp 为主文件
-
编译指令 icpx AlexNet.cpp -ldnnl
我的博客同步地址
|