Intel IPP for Linux

本文讲述在Linux系统上运行依赖于IPP库的C项目过程

参考文档:

一、环境版本说明

测试环境:

  • Unbuntu 11.2.0-19ubuntu1
  • gcc 11.2.0
  • cmake 3.22.1
  • make 4.3-4.lbuild1
  • ipp库 2021.7.0 Release Linux离线版
  • apt 2.4.5(amd64)
  • wget 1.21.2

二、配置操作系统环境

为了能够在LInux运行依赖了ipp库的程序,需要确保操作系统中安装有make(用于解释makefile中的指令)、gcc(C编译器)、cmake(帮助生成makefile文件)工具和wget(一款强大的下载文件工具) 这几个工具已经成为了各大Linux发行版本提供的工具,一般情况下无需手动安装。可以通过在命令行中输入以下命令查看工具的安装地址:

$which cmake make gcc wget# 查找组件安装地址

如果操作系统中没有cmake或者包含的版本过低,可以通过apt(Linux软件包管理工具)下载,在命令行中输入以下命令:

$sudo apt-get install cmake make gcc wget

三、下载Linux版本的IPP库

IPP库的下载可以通过下面两种方式

3.1 通过官方官网下载

IPP库可以直接去官网下载Linux离线版本,下载链接

https://www.intel.cn/content/www/cn/zh/developer/articles/tool/oneapi-standalone-components.html

在这里插入图片描述

3.2 通过wget下载

wget同样是Linux系统中的一个下载文件的工具,支持HTTP、HTTPS和FTP协议,常用于下载大型文件。

通过wget能够及其方便地帮助我们下载ipp离线库,输入以下命令,其中wget后面的参数是下载文件的网址,等待下载完成。

$wget https://registrationcenter-download.intel.com/akdlm/irc_nas/19126/l_ipp_oneapi_p_2021.7.0.25396_offline.sh
3.3 安装ipp库

下载完成后,就能得到一个.sh后缀的安装文件,其中wget默认将下载文件放在wget的当前执行目录里面,所以我们通过下面命令来运行sh脚本安装文件,假设文件名为l_ipp_oneapi_p_2021.7.0.25396_offline.sh:

sudo sh ./l_ipp_oneapi_p_2021.7.0.25396_offline.sh

./代表当前目录下,输入命令后就能开始安装ipp库了,选择默认的安装选项就行。

如果是选择的默认安装选项,下载完成后,应给能在目录**/opt/intel/oneapi/ipp**中找到ipp库的相关文件,这个地址很重要,后续链接ipp库的时候需要。

四、运行含有IPP库项目

4.1 创建工程目录

首先需要在/home/{用户名}/目录下创建一个文件夹用于存储我们的项目相关文件,创建的具体过程如下

$cd /home/{user}/ # 其中的{user}是用户名,应该换成操作系统中实际的用户名
$mkdir ippProject # 创建的存放项目的文件夹
$cd ippProject/ # 进入到创建的项目文件夹中
$mkdir build src # 再在项目文件中创建两个文件夹
$touch CMakeLists.txt # 在工程主目录中创建CMakeLists.txt文件
$touch ./src/CMakeLists.txt # 在src文件夹中也创建一个CMakeLists.txt文件

创建完成后,工程目录应该如下图所示,其中粗体代表文件夹,非粗体代表文件:

  • ippProjet
    • build
    • CMakeLists.txt
    • src
      • CMakeLists.txt

这里简单说明以下各个文件:

  • ippProjet:工程目录
  • build:存储CMake运行时产生的MakeFile等文件
  • CMakeLists.txt: 被CMake处理后生成相应的MakeFile文件,在工程主目录和src目录中都需要有
  • src:用与存储源代码的文件(包括了.c,.h文件)

接下来,需要在src目录中放入源文件,即.c文件和.h头文件,其中一般包含有main.c文件作为主文件。

4.2 编写CMakeLists文件

首先进入到工程主目录中,即/home/{user}/ippProject/中,利用vim(Linux中自带的一个文件编辑器)来编写主工程目录中的CMakeLists.txt文件,输入以下命令:

$cd /home/boldfruit/ippProject/ # 进入工程主目录
$vim CMakeLists.txt # 编写CMakeLists.txt文件

输入vim的命令打开文件后,会进入到编辑界面,按“i”键进入插入模式,输入以下内容:

# CMake最低版本号要求
cmake_minimum_required(VERSION 3.10)

# 设置项目工程名和版本号
project(InterferenceSignal VERSION 1.0)

# 添加src子目录
add_subdirectory(src)

# 打印信息
message(STATUS "root This is BINARY dir" ${PROJECT_BINARY_DIR})
message(STATUS "root This is SOURCE dir" ${PROJECT_SOURCE_DIR})
message(STATUS "cmake source dir" ${CMAKE_SOURCE_DIR})

# 设置编译器版本
set(CMAKE_CXX_STANDARD 11)
set(CMAKE_CXX_STANDARD_REQUIRED True)

编辑完成后,按下ESC进入设置模式,然后输入“:wq”保存并退回到终端。

之后我们还需要编辑src目录中的CMakeLists文件,输入

$vim /home/{user}/ippProject/src/CMakeLists.txt # 编辑src目录中的CMakeLists文件

CMakeLists文件中的内容如下:

# 指明ipp.h等头文件搜索路径,位置一般位于/opt/intel/oneapi/ipp/latest/include/中,需要根据具体情况而定
include_directories("/opt/intel/oneapi/ipp/latest/include" "/opt/intel/oneapi/ipp/latest/include/iw" "/opt/intel/oneapi/ipp/latest/include/iw++")

# 指定ipp相关静态库和动态库的搜索路径,位置一般位于/opt/intel/oneapi/ipp/latest/lib/intel64/中,需要根据具体情况而定
# 其中"/lib/x86_64-linux-gnu"为了解决ubuntu操作系统中math.h链接不到的问题
link_directories("/opt/intel/oneapi/ipp/latest/lib/intel64" "/opt/intel/oneapi/ipp/latest/lib/intel64/tl/openmp" "/opt/intel/oneapi/ipp/latest/lib/intel64/tl/tbb" "/opt/intel/oneapi/ipp/latest/lib/intel64/nonpic" "/lib/x86_64-linux-gnu")

# 指定用于生成可执行程序main的相关源文件(包含了.c和.h文件)
set(SRC_LIST main.c file1.c file1.h file2.c file2.h)
# 利用源文件(包括.c和.h文件)生成一个名为main的可执行文件 
ADD_EXECUTABLE(main ${SRC_LIST})

# 指定生成可执行文件main所需要链接的库名,
TARGET_LINK_LIBRARIES(main -Wl,--start-group
"ippcore" "ippch" "ippcc" "ippcv" "ippdc" "ippe" "ippi" "ipp_iw" "ipps" "ippvm" "ippcc_tl_omp" "ippcore_tl_omp" "ippcv_tl_omp" "ippi_tl_omp" "ippcc_tl_tbb" "ippcore_tl_tbb"  "ippcv_tl_tbb" "ippi_tl_tbb" "m"
-Wl,--end-group)
4.3 运行程序

进入到build目录中,这个目录用于存放CMake生成的Makefile等文件

$cd /home/{user}/ippProject/build/ # 进入到build文件夹中
$cmake ../ # ../代表上一级目录,即/ippProject/。cmake会运行/ippProject/CMakeLists.txt文件,生成相应的文件

执行完cmake命令之后,在build目录中应该会出现CMakeFiles、src、CMakeCache.txt、cmake_install.cmake、Makefile这五个文件,运行Makefile文件中的内容,接着进入到src目录中,就会发现一个名称为main的可执行程序,具体过程如下面代码所示:

$make # 执行build目录中的MakeFile文件的内容
$cd /home/{user}/ippProject/build/src/ # 进入到build/src目录中,此时会发现目录中已经生成了main的可执行文件
$./main # 执行main程序
  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值