Installation Intel oneAPI base toolkit on Ubuntu 20.04 LTS and Build with CMake
Ubuntu 20.04에 Intel oneAPI base toolkit 설치 방법과 CMakeLists 와 cmake를 이용한 OpenCV 와의 컴파일 방법
Note : This Site was referred.
## oneAPI 설치
1. 필요한 드라이버 설치
# Add package repository
sudo apt-get install -y gpg-agent wget wget -qO https://repositories.intel.com/graphics/intel-graphics.key | sudo apt-key add -
sudo apt-add-repository 'deb [arch=amd64] https://repositories.intel.com/graphics/ubuntu focal main'
# Install run-time packages
sudo apt-get update sudo apt-get install intel-opencl-icd intel-level-zero-gpu level-zero intel-media-va-driver-non-free libmfx1
# OPTIONAL: Install developer packages sudo apt-get install libigc-dev intel-igc-cm libigdfcl-dev libigfxcmrt-dev level-zero-dev
# if have GPU
stat -c "%G" /dev/dri/render*
2. Intel oneAPI 설치
cd /tmp
wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
rm GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
echo "deb https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list
sudo apt update
base toolkit을 위한 package 다운 받기
sudo apt install intel-basekit
3. Configuration
source /opt/intel/oneapi/setvars.sh
Check
ifort --version
icc --version
icpc --version
## Building IPP and OpenCV with CMake
### 1. CMakeLists.txt 작성 It’s really simple.
cmake_minimum_required(VERSION 3.16)
project( ex )
find_package( OpenCV REQUIRED )
find_package(IPP REQUIRED)
include_directories( ${OpenCV_INCLUDE_DIRS} )
set(IPP_LIBRARIES IPP::ippcore IPP::ippcc IPP::ipp_iw IPP::ippcv IPP::ippe IPP::ippi IPP::ipps IPP::ippvm )
add_executable( ex ex.cpp )
target_link_libraries( ex PUBLIC ${IPP_LIBRARIES} ${OpenCV_LIBS})
2. Sample Code
//ex.cpp
#include <iostream>
#include "opencv2/opencv.hpp"
#include <ipp.h>
using namespace cv;
using namespace std;
int main()
{
Mat image = imread("../image/Grab_Image.bmp", 0);
resize(image, image, image.size() / 6);
IppiSize size, tsize;
size.width = image.cols;
size.height = image.rows;
Ipp8u *S_img = (Ipp8u *)ippsMalloc_8u(size.width * size.height);
Ipp8u *T_img = (Ipp8u *)ippsMalloc_8u(size.width * size.height);
Ipp16s *T = (Ipp16s *)ippsMalloc_16s(size.width * size.height);
ippiCopy_8u_C1R((const Ipp8u *)image.data, size.width, S_img, size.width, size);
tsize.width = image.cols;
tsize.height = image.rows;
ippiFilterSobelHorizBorder_8u16s_C1R(S_img, size.width, T, size.width * 2, tsize, ippMskSize5x5, ippBorderConst, 255, T_img);
Size s;
s.width = image.cols;
s.height = image.rows;
cv::Mat dst(s, CV_16S, T);
imshow("Image", image);
imshow("DST", dst);
waitKey(0);
destroyAllWindows();
return 0;
}
Build
mkdir build
cd build
cmake ..
make
./ex
Result

이상 입니닷
학교 수업중에 병렬영상처리 과목에서 IPP 설치해서 OpenCV 랑 시간 비교하는 과제가 있는데, 윈도우에서 비쥬얼스튜디오깔아서 하는방법을 위주로 한다. 비쥬얼스튜디오 안쓴지 거의 오년 다되가서 어떻게 쓰는지 다까먹어서 쓰기싫음 ㅠ 그리고 너무 복잡해 어려웍 그래서 암튼 리눅스에서 설치해서 하려는데 cmake로 빌드하고싶은데 cmakelist 작성하는데 애를 좀 먹었지만,,, 우야됐든 성공!