Ubuntu20.4.5+Clion+Falshlight+ArrayFire+Intel-MKL 人工智能深度机器学习C++开发环境搭建
操作系统环境:
Ubuntu 20.04.5 LTS cpu:6核 内存:8G swap:16G 硬盘 128G
分区: LVM 或 ext4
系统内核:Linux ubuntu 5.15.0-46
C++ 集成IDE:Clion 2022.2
##开始配置操作系统环境
第一步安装操作系统
安装版本:Ubuntu 20.04.4 LTS 安装完毕后升级成 Uubuntu Ubuntu 20.04.5 LTS /Linux ubuntu 5.15.0-46。
第二步开启root账号登录
先安装一下文本编辑软件 vim 这是可选 您也用gedit来编辑
sudo apt-get install vim
1.以普通用户登录系统,创建root用户的密码
sudo passwd root
2.修改50-ubuntu.conf文件
sudo vim /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
在文件末尾增加如下两行并保存:
greeter-show-manual-login=true #手工输入登陆系统的用户名和密码
allow-guest=false #不允许guest登录(可选)
3.修改gdm-autologin文件
sudo vim /etc/pam.d/gdm-autologin
在第三行前面加#以注释掉
auth required pam_succeed_if.so user != root quiet_success ,
随后保存并退出
4.修改gdm-password文件
sudo vim /etc/pam.d/gdm-password
在第三行前面加#以注释掉
auth required pam_succeed_if.so user != root quiet_success ,
随后保存并退出
5.修改 /root/.profile 文件
在终端输入命令:
sudo vim /root/.profile 打开文件
将文件末尾的 mesg n 2> /dev/null || true 这一行修改成
tty -s&&mesg n || true
6.最后一步,测试一下root账号登录
赶紧注销重新登录试一下吧,在登录页面选择 未列出?
然后输入root以及你之前设置的密码,即可成功登录。
####第三部扩大swap缓存值=16G
查看 swap分区或swap 文件大小:
cat /proc/swaps
free mem
sudo swapon --show
首先输入以下命令停用 SWAP 空间:
sudo swapoff -v /swapfile
如果有必要把swap文件方式改成swap分区 可以使用这个,不然可以忽略此步骤
在 /etc/fstab 文件中删除有效 swap 的行。
最后执行以下命令删除 swapfile 文件:
sudo rm /swapfile
创建一个 Swap 文件
sudo fallocate -l 16G /swapfile
执行以下命令为 swapfile 文件设置正确的权限:
sudo chmod 600 /swapfile
>载入 Swap 文件
```shell
sudo mkswap /swapfile
激活 Swap 文件
sudo swapon /swapfile
可以用以下命令查看 当前swap情况
sudo swapon --show
第四步骤-安装flashlight(原WAV2LETTER++)ubuntu20.4.4 操作系统依赖环境软件包
本配置我选用基于CPU的机器学习,ubuntu:20.04 as cpu_base_builder
本步骤我全程在root账号下面执行的所以没加sudo命令
首先更新apt-get 软件包列表
apt-get update
1.先安装基础开发包(build-essential ca-certificates wget git g++ cmake tar curl zip unzip)
apt-get install -y --no-install-recommends build-essential
apt-get install -y --no-install-recommends ca-certificates \
wget git g++ cmake tar curl zip unzip pkg-config
2.为后面要安装的intel-MKL,安装相关依赖
apt-get install -y --no-install-recommends apt-transport-https gpg-agent gnupg2
3.为后面要安装的kenml,安装相关依赖
apt-get install -y --no-install-recommends libboost-thread-dev \
libboost-test-dev libboost-system-dev libboost-program-options-dev
4.为后面要安装的arrayfire CPU backend,安装相关依赖
apt-get install -y --no-install-recommends libboost-stacktrace-dev
5.为后面要安装的OpenBLAS,安装相关依赖
apt-get install -y --no-install-recommends libopenblas-dev liblapacke-dev
6.为后面要安装的 ATLAS,安装相关依赖
apt-get install -y --no-install-recommends libatlas3-base \
libatlas-base-dev liblapacke-dev
7.为后面要安装的 FFTW3,安装相关依赖
apt-get install -y --no-install-recommends libfftw3-dev
8.为后面要安装的ssh for OpenMPI #1,安装相关依赖
apt-get install -y --no-install-recommends openssh-server openssh-client
9.为后面要安装的OpenMPI #2,安装相关依赖
apt-get install -y --no-install-recommends libopenmpi-dev openmpi-bin
10.为后面要安装的kenlm #2,安装相关依赖
apt-get install -y --no-install-recommends zlib1g-dev libbz2-dev liblzma-dev
11.为后面要安装的flashlight,安装相关依赖
apt-get update
apt-get install -y --no-install-recommends vim emacs nano htop
# libsndfile 依赖
apt-get install -y --no-install-recommends libsndfile1-dev
# gflags 依赖
apt-get install -y --no-install-recommends libgflags-dev libgflags2.2
# glog 依赖
apt-get install -y --no-install-recommends libgoogle-glog-dev libgoogle-glog0v5
# python sox 依赖
apt-get install -y --no-install-recommends sox libsox-dev python3-dev python3-pip python3-distutils
# python (for bindings and preprocessing)
python3 -m pip --no-cache-dir install launchpadlib
python3 -m pip --no-cache-dir install --upgrade setuptools numpy sox tqdm
#安装doxygen 依赖
sudo apt-get install doxygen-latex doxygen-doc doxygen-gui graphviz
#安装 sphinx 依赖
sudo apt-get install sphinxsearch
12.清除安装产生的临时文件
apt-get clean
apt-get -y autoremove
rm -rf /var/lib/apt/lists/*
第五步骤-安装Git下载指定版本的ArrayFire(v3.7.3),编译源文件的CPU版本并安装
arrayfire 的 CPU backend 在 https://github.com/arrayfire/arrayfire/wiki/
具体下载、编译、安装方法如下:
cd /mytools
git clone --branch v3.7.3 --depth 1 --recursive --shallow-submodules \
https://github.com/arrayfire/arrayfire.git
mkdir -p arrayfire/build
cd arrayfire/build
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/arrayfire \
-DAF_BUILD_CPU=ON -DAF_BUILD_CUDA=OFF -DAF_BUILD_OPENCL=OFF \
-DAF_BUILD_EXAMPLES=OFF -DAF_WITH_IMAGEIO=OFF -DBUILD_TESTING=OFF \
-DAF_BUILD_DOCS=OFF
make install -j$(nproc)
第六步骤-安装Git下载指定版本的cpu_onednn(vv2.5.2),编译源文件的CPU版本并安装
oneDNN 的 CPU backend 在 oneDNN https://github.com/oneapi-src/oneDNN
具体下载、编译、安装方法如下:
cd /root/mytools
git clone --branch v2.5.2 --depth 1 https://github.com/oneapi-src/onednn.git
mkdir -p onednn/build
cd onednn/build
cmake .. -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/opt/onednn -DDNNL_BUILD_EXAMPLES=OFF
make install -j$(nproc)
第七步骤-安装Git下载指定版本的cpu Gloo(Tag:1da2117),编译源文件的CPU版本并安装
cpu Gloo在 https://github.com/facebookincubator/gloo.git
具体下载、编译、安装方法如下:
cd /root/mytools
git clone https://github.com/facebookincubator/gloo.git
cd gloo
git checkout 1da2117
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/gloo -DUSE_MPI=ON
make install -j$(nproc)
第八步骤-安装Git下载指定版本的cpu KenLM (Tag:0c4dd4e),编译源文件的CPU版本并安装
cpu KenLM在 https://github.com/kpu/kenlm
具体下载、编译、安装方法如下:
cd /root/mytools
git clone https://github.com/kpu/kenlm.git
cd kenlm
git checkout 0c4dd4e
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/opt/kenlm \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
make install -j$(nproc)
第九步骤-安装wget生成apt下载列表中指定版本的intel-MKL(2020.4-912)并安装
1.intel-MKL下载链接在 https://apt.repos.intel.com/mk
具体下载、安装方法如下:
cd /root/mytools
wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB
apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB
sh -c 'echo deb https://apt.repos.intel.com/mkl all main > /etc/apt/sources.list.d/intel-mkl.list'
apt-get update
apt-get install -y --no-install-recommends intel-mkl-64bit-2020.4-912
2.清除安装产生的临时文件
apt-get clean
apt-get -y autoremove
rm -rf /var/lib/apt/lists/*
第十步骤-在root/.bashrc 添加环境路经
通过vim root/.bashrc 打开 root用户根目录下的.bashrc文件具体下载、安装方法如下:
#进入文件
vim root/.bashrc
#在文件最末尾添加以下两行内容,然后用 wq! 保存退出
export MKLROOT=/opt/intel/mkl
export KENLM_ROOT=/opt/kenlm
第十一步骤-安装Git下载指定版本的flashlight(v:0.3.2 Tag:e16682f),编译源文件的CPU版本并安装
flashlight在 https://github.com/flashlight/flashlight.git
具体下载、编译、安装方法如下:
cd /root/mytools
git clone https://github.com/flashlight/flashlight.git
cd flashlight
git checkout e16682f
mkdir -p build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/opt/flashlight \
-DFL_BUILD_ALL_APPS=ON -DFL_BUILD_ALL_LIBS=ON \
-DFL_BUILD_ALL_PKGS=ON -DFL_BUILD_PKG_RUNTIME=ON \
-DFL_BACKEND=CPU -DGloo_DIR=/opt/gloo/share/cmake \
-DDNNL_DIR=/opt/onednn/lib/cmake/dnnl
make install -j$(nproc)
第十二步骤- 在Clion 上配置 flashlight函数调用的cmake配置
在File->New->project->选择c++ 控制台程序,程序版本选择c++17,项目名称 起个myProject内容如下:
具体下载、编译、安装方法如下:
项目中main.cpp 文件名改为 project.cpp,用以下代码覆盖project.cpp内容:
#include <iostream>
#include <arrayfire.h>
#include <flashlight/fl/flashlight.h>
int main() {
fl::Variable v(af::constant(1, 1), true);
auto result = v + 10;
std::cout << "Hello World!" << std::endl;
af::print("Array value is ", result.array()); // 11.000
return 0;
}
项目中CMakeLists.txt 文件内容,用以下代码覆盖:
cmake_minimum_required(VERSION 3.16)
project(myproject)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
add_executable(myproject project.cpp)
find_package(flashlight CONFIG REQUIRED)
target_link_libraries(myproject PRIVATE flashlight::flashlight)
第十三步骤- 在Clion 上配置 flashlight函数调用的cmake配置
在File->settings->build,execution,Deployment->cmake->cmake options 栏里面添加cmake编译参数,内容如下:
具体下载、编译、安装方法如下:
-DKENLM_INCLUDE_DIRS=/opt/kenlm -DFL_BACKEND=CPU \
-DGloo_DIR=/opt/gloo/share/cmake \
-DDNNL_DIR=/opt/onednn/lib/cmake/dnnl \
-Dflashlight_DIR=/opt/flashlight/share/flashlight/cmake
第十四步骤- 在Clion 上配置 flashlight函数调用的cmake配置
在Clion中您直接运行项目,等待编译运行…,最后输出结果如下:
具体方法如下:
/root/CLionProjects/myproject/cmake-build-debug/myproject
Hello World!
Array value is
[1 1 1 1]
11.0000
Process finished with exit code 0
如果出现以上内容恭喜您!,您已经成功搭建Clion+flashlight深度机器学习C++开发环境部署!