DPDK QAT example 빌드하기

Page content

Download dpdk-2.2.0.tar.gz

Refer http://dpdk.org/download

wget http://dpdk.org/browse/dpdk/snapshot/dpdk-2.2.0.tar.gz

Download qat_mux

Refer https://01.org/packet-processing/intel®-quickassist-technology-drivers-and-patches

wget https://01.org/sites/default/files/page/qatmux.l.2.5.0-80.tgz  

Getting Started Guide 문서도 받아 둔다.

wget https://01.org/sites/default/files/page/330750-004_qat_gsg.pdf  

Configure DPDK

export RTE_SDK=/home/cychong/work/dpdk-2.2.0  
export RTE_TARGET=x86_64-native-linuxapp-gcc
make config T=$RTE_TARGET O=$RTE_TARGET
make  

Configure QAT

Ubuntu (14.04) 기준으로 몇 개 패키지를 설치해야 QAT를 빌드할 수 있는데 나름 기본적인 패키지들이라 그냥 설치해 놓으면 좋을 듯.

sudo apt-get install zlib1g-dev
sudo apt-get install libssl-dev

적당한 위치에 풀면 되는데 ~/work/qat에 압축을 푼 경우를 기준으로 정리

cychong@ubuntu:~/work/qat$ ls
LICENSE.GPL  QAT1.5  QAT1.6  filelist  installer.sh  qatmux.l.2.5.0-80.tgz  versionfile

QAT HW에 따라사 1.5 혹은 1.6 버전을 사용해야 하는데 만일 이 두 개 버전을 모두 사용해야 하는 경우 qatmux.l.2.5.0-80.tgz도 빌드해야 한다고 한다.

QAT1.5, QAT1.6아래에는 각각 다음과 같은 압축 파일이 있으므로 필요한 QAT 버전 밑에 있는 압축 파일을 풀어준다.

cychong@ubuntu:~/tmp$ tree
.
|-- filelist
|-- installer.sh
|-- LICENSE.GPL
|-- QAT1.5
|   `-- QAT1.5.L.1.10.0-80.tar.gz
|-- QAT1.6
|   `-- QAT1.6.L.2.5.0-80.tar.gz
|-- qatmux.l.2.5.0-80.tgz
`-- versionfile

2 directories, 7 files

Build QAT

QAT Getting Started Guide를 보면 installer.sh을 이용해서 빌드할 수 있는데 이 스크립트는 빌드하는 머신에 QAT HW가 있는 경우에만 사용할 수 있다.

cychong@ubuntu:~/work/qat$ sudo ./installer.sh 
[sudo] password for cychong: 


    =========================================================
    Welcome to Intel(R) QuickAssist Interactive Installer -v2
    =========================================================


     Please Select Option :
     ----------------------
     1   Build
     2   Clean Build
     3   Install
     4   Uninstall
     5   Show Accel Info
     6   Change Configuration
     7   Dependency List
     0   Exit


     QAT Devices found: 0 QAT1.6 devices
                        0 QAT1.5 devices
     Configuration:     Build Acceleration and Sample Code
                        No Device detected 
                        And SR-IOV Disabled 
     Exit and re-enter to set defaults

1
     Driver mode auto selected. But no devices detected. Cannot build

QAT HW가 없는 경우 cross compile 방식을 사용해야 하는데 QAT Getting Started Guide 3.6절을 참고해서 수동(?)으로 빌드하면 된다.

export ICP_ROOT=/home/cychong/work/qat/QAT1.6   

cd quickassist
     

export ICP_ENV_DIR=$ICP_ROOT/quickassist/build_system/build_files/env_files   
export ICP_BUILDSYSTEM_PATH=$ICP_ROOT/quickassist/build_system  
export ICP_BUILD_OUTPUT=$ICP_ROOT/build  
export ICP_TOOLS_TARGET=accelcomp  
export LD_LIBRARY_PATH=$ICP_ROOT/build  

이제 빌드

$ make ICP_ARCH_USER=x86_64

…

Copying QAT-FW Binary

Copying MMP Binary

Copying Install Scripts
Build Done

빌드 결과물은 ../build에

cychong@ubuntu:~/work/qat/QAT1.6/build$ file *
adf_ctl:               ELF 64-bit LSB  executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=e1b508cd4404dbeaf268d92271ef2ea894a143e7, not stripped
dh895xcc_qa_dev0.conf: ASCII text
icp_qa_al.ko:          ELF 64-bit LSB  relocatable, x86-64, version 1 (SYSV), BuildID[sha1]=5dffbaaac6514d161835bf7c9a4b086ff6a42b6b, not stripped
libadf_proxy.a:        current ar archive
libicp_qa_al.a:        current ar archive
libicp_qa_al_s.so:     ELF 64-bit LSB  shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped
libosal.a:             current ar archive
mmp_firmware.bin:      data
mof_firmware.bin:      data
qat_service:           Bourne-Again shell script, ASCII text executable

Build DPDK_QAT example

이제 QAT 라이브러리가 준비되었으니 DPDK_QAT example 빌드

cychong@ubuntu:~/work/dpdk-2.2.0/examples/dpdk_qat$ make
  LD dpdk_qat
  INSTALL-APP dpdk_qat
  INSTALL-MAP dpdk_qat.map

QAT 라이브러리를 빌드하기 전에 example을 빌드하면 다음과 같이 에러 발생

cychong@ubuntu:~/work/dpdk-2.2.0/examples/dpdk_qat$ make
  LD dpdk_qat  
/usr/bin/ld: cannot find /home/cychong/work/qat/QAT1.6/build/libicp_qa_al.a: No such file or directory  
/usr/bin/ld: cannot find -losal   
/usr/bin/ld: cannot find -ladf_proxy  
collect2: error: ld returned 1 exit status  
make[1]: *** [dpdk_qat] Error 1  
make: *** [all] Error 2