Installazione_N100 - finzic/n100-ffmpeg-onevpl GitHub Wiki
Installazione N100
- xubuntu-desktop
3 sudo apt install net-tools
4 sudo apt install htop
8 sudo apt install avahi-daemon
15 sudo apt install zfsutils-linux
25 sudo apt install powertop
apt install autoconf libtool libdrm-dev xorg xorg-dev openbox libx11-dev
libgl1-mesa-glx - nota questa qui non sembra piu' disponibile. - pv
- parallel
- samba
- gitk
- sudo apt-get install git cmake pkg-config meson automake
- git-lfs
- git lfs install
- gcc build-essential cmake
- intel-gpu-tools
Adding oneVPL stuff
-
- INTEL INSTALLATIONS
- https://www.intel.com/content/www/us/en/developer/articles/guide/onevpl-installation-guide.html#developer
- sudo apt-get install -y gpg-agent wget
192 wget -qO - https://repositories.intel.com/graphics/intel-graphics.key | sudo apt-key add -
193 sudo apt-add-repository 'deb [arch=amd64] https://repositories.intel.com/graphics/ubuntu focal main'
194 sudo apt-get update
195 sudo apt-get install intel-opencl-icd intel-level-zero-gpu level-zero libmfx1 - sudo apt install libigc-dev intel-igc-cm libigdfcl-dev libigfxcmrt-dev level-zero-dev
- sudo apt install libmfxgen1 vainfo
- At this point, set the LIBVA_DRIVER_PATH=/usr/lib/x86_64-linux-gnu/dri and LIBVA_DRIVER_NAME=iHD in /etc/environment and reload it and vainfo shall work!
- sudo apt-get install -y gpg-agent wget
- At this point, an instalaltion with all pre-compiled elements is done and working.
We want to build the oneVPL implementation for our N100 completely and efficiently with compiler options. Here we go.
Environment file
finzic@conan:~$ cat /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
XDG_RUNTIME_DIR=/run/user/
LIBVA_DRIVER_NAME=iHD
LIBVA_DRIVER_PATH=/usr/lib/x86_64-linux-gnu/dri
CFLAGS="-march=native -mtune=native"
CXXFLAGS="-march=native -mtune=native"
CMAKE_C_FLAGS_RELEASE="-march=native -mtune=native -O3 -DNDEBUG"
CMAKE_CXX_FLAGS_RELEASE="-march=native -mtune=native -O3 -DNDEBUG"
ONEVPL_SEARCH_PATH=/opt/intel/mediasdk/lib/
VPL_INSTALL_DIR=/home/finzic/src/libvpl-tools/../_vplinstall
This is how the file should look at the end of the work.
Groups added to the user
stat -c “%G” /dev/dri/render*
groups ${USER}
sudo gpasswd -a ${USER} render
newgrp render
sudo gpasswd -a ${USER} video
newgrp video
-
- LIBVPL
-
The following commands will build the project and install it locally in
_vplinstall
. Note that the bootstrap script will install dependencies needed to build the project. -
git clone https://github.com/intel/libvpl
-
export CMAKE_BUILD_PARALLEL_LEVEL=$(nproc) # cosi' si builda con N core
cd libvpl
export VPL_INSTALL_DIR=`pwd`/../_vplinstall
sudo script/bootstrap
cmake -B _build -DCMAKE_C_FLAGS_RELEASE="-march=native -mtune=native -O3 -DNDEBUG" -DCMAKE_CXX_FLAGS_RELEASE="-march=native -mtune=native -O3 -DNDEBUG" -DCMAKE_INSTALL_PREFIX=$VPL_INSTALL_DIR
cmake --build _build
cmake --install _build
-
- LIBVPL-TOOLS
- git clone https://github.com/intel/libvpl-tools.git
- cd libvpl-tools
pushd libvpl-tools
export VPL_INSTALL_DIR=`pwd`/../_vplinstall
sudo script/bootstrap
cmake -B _build -DCMAKE_C_FLAGS_RELEASE="-march=native -mtune=native -O3 -DNDEBUG" -DCMAKE_CXX_FLAGS_RELEASE="-march=native -mtune=native -O3 -DNDEBUG" -DCMAKE_PREFIX_PATH=$VPL_INSTALL_DIR
cmake --build _build
cmake --install _build --prefix $VPL_INSTALL_DIR
- Ora: VPL-GPU-RT : Intel® VPL GPU Runtime depends on LibVA. This version of Intel® VPL GPU Runtime is compatible with the open source Intel Media Driver for VAAPI. Dispatcher and Samples code hosted in Intel® VPL repository.
- Now I gotta build LibVA
-
- Here is a wiki that contains also how to use hwacceleration with applications :
https://github.com/intel/media-driver/wiki/Install-from-OSV-package - cd libva
- ./autogen.sh --prefix=/usr --libdir=/usr/lib/x86_64-linux-gnu
- make -j"$(nproc)"
- sudo make install
- Here is a wiki that contains also how to use hwacceleration with applications :
-
- gmmlib
- git clone https://github.com/intel/gmmlib.git
- cd gmmlib
- mkdir build && cd build
- cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_FLAGS_RELEASE="-march=native -mtune=native -O3 -DNDEBUG" -DCMAKE_CXX_FLAGS_RELEASE="-march=native -mtune=native -O3 -DNDEBUG" ..
- make -j"$(nproc)"
- sudo make install
-
- media driver
- mkdir media-driver-wks
- cd media-driver-wks
- mkdir build_media
- git clone https://github.com/intel/media-driver.git
- cd build_media
- cmake -DCMAKE_C_FLAGS_RELEASE="-march=native -mtune=native -O3 -DNDEBUG" -DCMAKE_CXX_FLAGS_RELEASE="-march=native -mtune=native -O3 -DNDEBUG" ../media-driver
- make -j"$(nproc)"
- sudo make install
- export LIBVA_DRIVERS_PATH=/usr/lib/x86_64-linux-gnu/dri
- export LIBVA_DRIVER_NAME=iHD
- VPL GPU Runtime
- git clone https://github.com/intel/vpl-gpu-rt vpl-gpu-rt
- cd vpl-gpu-rt
- mkdir build && cd build
- cmake -DCMAKE_C_FLAGS_RELEASE="-march=native -mtune=native -O3 -DNDEBUG" -DCMAKE_CXX_FLAGS_RELEASE="-march=native -mtune=native -O3 -DNDEBUG" ..
- make -j"$(nproc)" -> this shall make the mfx component.
- sudo make install
- add this : ONEVPL_SEARCH_PATH=/opt/intel/mediasdk/lib/ to /etc/environment
- this will add a second implementation #0 to vpl-inspect. it "should" now be the default one.
- And it fucking WORKS!
Building FFMPEG
https://trac.ffmpeg.org/wiki/CompilationGuide/Ubuntu
LIbraries
sudo apt-get install libva-dev libmfx-dev nasm
334 sudo apt-get install libva-dev libmfx-dev
336 sudo apt install nasm
400 sudo apt install libmp3lame-dev
404 sudo apt install libvorbis-dev
408 sudo apt install libx264-dev libx265-dev
411 sudo apt install libopencl-dev
Source code and configuration
git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg
Add to the environment the following variable;
PKG_CONFIG_PATH=/home/finzic/src/_vplinstall/lib/pkgconfig:/opt/intel/mediasdk/lib/pkgconfig
./configure --enable-libvpl
-> this will work with no errors. Now we refine the configure command to enable x86_64 Alder Lake architecture and all possible coders/encoders
Compilation Options
/usr/libexec/gcc/x86_64-linux-gnu/13/cc1 -quiet -imultiarch x86_64-linux-gnu /usr/include/stdlib.h "-march=alderlake" -mmmx -mpopcnt -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mavx2 -mno-sse4a -mno-fma4 -mno-xop -mfma -mno-avx512f -mbmi -mbmi2 -maes -mpclmul -mno-avx512vl -mno-avx512bw -mno-avx512dq -mno-avx512cd -mno-avx512er -mno-avx512pf -mno-avx512vbmi -mno-avx512ifma -mno-avx5124vnniw -mno-avx5124fmaps -mno-avx512vpopcntdq -mno-avx512vbmi2 -mgfni -mvpclmulqdq -mno-avx512vnni -mno-avx512bitalg -mno-avx512bf16 -mno-avx512vp2intersect -mno-3dnow -madx -mabm -mno-cldemote -mclflushopt -mclwb -mno-clzero -mcx16 -mno-enqcmd -mf16c -mfsgsbase -mfxsr -mno-hle -msahf -mno-lwp -mlzcnt -mmovbe -mmovdir64b -mmovdiri -mno-mwaitx -mno-pconfig -mpku -mno-prefetchwt1 -mprfchw -mptwrite -mrdpid -mrdrnd -mrdseed -mno-rtm -mserialize -mno-sgx -msha -mshstk -mno-tbm -mno-tsxldtrk -mvaes -mwaitpkg -mno-wbnoinvd -mxsave -mxsavec -mxsaveopt -mxsaves -mno-amx-tile -mno-amx-int8 -mno-amx-bf16 -mno-uintr -mno-hreset -mno-kl -mno-widekl -mavxvnni -mno-avx512fp16 -mno-avxifma -mno-avxvnniint8 -mno-avxneconvert -mno-cmpccxadd -mno-amx-fp16 -mno-prefetchi -mno-raoint -mno-amx-complex --param "l1-cache-size=32" --param "l1-cache-line-size=64" --param "l2-cache-size=6144" "-mtune=alderlake" -quiet -dumpdir a- -dumpbase stdlib.h -dumpbase-ext .h -fasynchronous-unwind-tables -fstack-protector-strong -Wformat -Wformat-security -fstack-clash-protection -fcf-protection -o /tmp/ccZBeuGC.s --output-pch /usr/include/stdlib.h.gch
This was taken out of the Gentoo guide, https://wiki.gentoo.org/wiki/GCC_optimization#-march
FFmpeg final compilation options
./configure --enable-libvpl --enable-vaapi --enable-libvorbis --enable-libdrm --enable-gpl --enable-libx264 --enable-libx265 --enable-nonfree --enable-libmp3lame --arch=x86_64 --cpu=alderlake
Compiling and installing
make -j4
sudo make install
Updated /etc/environment:
finzic@conan:~/src/ffmpeg$ cat /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
XDG_RUNTIME_DIR=/run/user/
LIBVA_DRIVER_NAME=iHD
LIBVA_DRIVER_PATH=/usr/lib/x86_64-linux-gnu/dri
CFLAGS="-march=native -mtune=native --param \"l1-cache-size=32\" --param \"l1-cache-line-size=64\" --param \"l2-cache-size=6144\""
CXXFLAGS="-march=native -mtune=native --param \"l1-cache-size=32\" --param \"l1-cache-line-size=64\" --param \"l2-cache-size=6144\""
CMAKE_C_FLAGS_RELEASE="-march=native -mtune=native -O3 -DNDEBUG --param \"l1-cache-size=32\" --param \"l1-cache-line-size=64\" --param \"l2-cache-size=6144\" "
CMAKE_CXX_FLAGS_RELEASE="-march=native -mtune=native -O3 -DNDEBUG --param \"l1-cache-size=32\" --param \"l1-cache-line-size=64\" --param \"l2-cache-size=6144\" "
ONEVPL_SEARCH_PATH=/opt/intel/mediasdk/lib/
VPL_INSTALL_DIR=$HOME/src/libvpl-tools/../_vplinstall
PKG_CONFIG_PATH=$HOME/src/_vplinstall/lib/pkgconfig:/opt/intel/mediasdk/lib/pkgconfig
New /etc/environment:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
XDG_RUNTIME_DIR=/run/user/
LIBVA_DRIVER_NAME=iHD
LIBVA_DRIVER_PATH=/usr/lib/x86_64-linux-gnu/dri
#CFLAGS="-march=native -mtune=native --param \"l1-cache-size=32\" --param \"l1-cache-line-size=64\" --param \"l2-cache-size=6144\""
#CXXFLAGS="-march=native -mtune=native --param \"l1-cache-size=32\" --param \"l1-cache-line-size=64\" --param \"l2-cache-size=6144\""
#CMAKE_C_FLAGS_RELEASE="-march=native -mtune=native -O3 -DNDEBUG --param \"l1-cache-size=32\" --param \"l1-cache-line-size=64\" --param \"l2-cache-size=6144\" "
#CMAKE_CXX_FLAGS_RELEASE="-march=native -mtune=native -O3 -DNDEBUG --param \"l1-cache-size=32\" --param \"l1-cache-line-size=64\" --param \"l2-cache-size=6144\" "
#CFLAGS="-march=native -mtune=native"
#CXXFLAGS="-march=native -mtune=native"
#CMAKE_C_FLAGS_RELEASE="-march=native -mtune=native -O3 -DNDEBUG"
#CMAKE_CXX_FLAGS_RELEASE="-march=native -mtune=native -O3 -DNDEBUG"
CFLAGS="-march=alderlake -mtune=alderlake -mmmx -mpopcnt -msse -msse2 -msse3 -mssse3 -msse4.1 -msse4.2 -mavx -mavx2 -mno-sse4a -mno-fma4 -mno-xop -mfma -mno-avx512f -mbmi -mbmi2 -maes -mpclmul -mno-avx512vl -mno-avx512bw -mno-avx512dq -mno-avx512cd -mno-avx512er -mno-avx512pf -mno-avx512vbmi -mno-avx512ifma -mno-avx5124vnniw -mno-avx5124fmaps -mno-avx512vpopcntdq -mno-avx512vbmi2 -mgfni -mvpclmulqdq -mno-avx512vnni -mno-avx512bitalg -mno-avx512bf16 -mno-avx512vp2intersect -mno-3dnow -madx -mabm -mno-cldemote -mclflushopt -mclwb -mno-clzero -mcx16 -mno-enqcmd -mf16c -mfsgsbase -mfxsr -mno-hle -msahf -mno-lwp -mlzcnt -mmovbe -mmovdir64b -mmovdiri -mno-mwaitx -mno-pconfig -mpku -mno-prefetchwt1 -mprfchw -mptwrite -mrdpid -mrdrnd -mrdseed -mno-rtm -mserialize -mno-sgx -msha -mshstk -mno-tbm -mno-tsxldtrk -mvaes -mwaitpkg -mno-wbnoinvd -mxsave -mxsavec -mxsaveopt -mxsaves -mno-amx-tile -mno-amx-int8 -mno-amx-bf16 -mno-uintr -mno-hreset -mno-kl -mno-widekl -mavxvnni -mno-avx512fp16 -mno-avxifma -mno-avxvnniint8 -mno-avxneconvert -mno-cmpccxadd -mno-amx-fp16 -mno-prefetchi -mno-raoint -mno-amx-complex --param l1-cache-size=32 --param l1-cache-line-size=64 --param l2-cache-size=6144"
CXXFLAGS=${CFLAGS}
CMAKE_C_FLAGS_RELEASE="${CFLAGS} -O3 -DNDEBUG"
CMAKE_CXX_FLAGS_RELEASE="${CFLAGS} -O3 -DNDEBUG"
ONEVPL_SEARCH_PATH=/opt/intel/mediasdk/lib/
VPL_INSTALL_DIR=$HOME/src/libvpl-tools/../_vplinstall
PKG_CONFIG_PATH=$HOME/src/_vplinstall/lib/pkgconfig:/opt/intel/mediasdk/lib/pkgconfig
-
- INTEL INSTRALLATIONS
- https://www.intel.com/content/www/us/en/developer/articles/guide/onevpl-installation-guide.html#developer
- sudo apt-get install -y gpg-agent wget
192 wget -qO - https://repositories.intel.com/graphics/intel-graphics.key | sudo apt-key add -
193 sudo apt-add-repository 'deb [arch=amd64] https://repositories.intel.com/graphics/ubuntu focal main'
194 sudo apt-get update
195 sudo apt-get install intel-opencl-icd intel-level-zero-gpu level-zero libmfx1 - sudo apt install libigc-dev intel-igc-cm libigdfcl-dev libigfxcmrt-dev level-zero-dev
- sudo apt install libmfxgen1
- At this point, set the LIBVA_DRIVER_PATH=/usr/lib/x86_64-linux-gnu/dri and LIBVA_DRIVER_NAME=iHD in /etc/environment and reload it and vainfo shall work!
- sudo apt-get install -y gpg-agent wget
Last Run
sudo apt install net-tools xubuntu-desktop htop -y
6 sudo apt install net-tools htop avahi-daemon zfsutils-linux powertop pv parallel samba git gitk cmake pkg-config meson automake git-lfs build-essential intel-gpu-tools libtool -y
14 sudo apt-get install -y gpg-agent wget
18 sudo apt-get install intel-opencl-icd intel-level-zero-gpu level-zero intel-media-va-driver-non-free libmfx1
20 sudo apt install vainfo
38 sudo apt-get install libmfxgen1
39 sudo apt-get install libigc-dev intel-igc-cm libigdfcl-dev libigfxcmrt-dev level-zero-dev
- https://www.intel.com/content/www/us/en/developer/articles/guide/onevpl-installation-guide.html
https://www.intel.com/content/www/us/en/developer/articles/guide/onevpl-installation-guide.html#install-cpu-with-base-toolkit
https://github.com/intel/libva
https://github.com/intel/vpl-gpu-rt?tab=readme-ov-file#how-to-build
https://github.com/intel/libva
https://github.com/intel/media-driver?tab=readme-ov-file
https://github.com/intel/gmmlib
https://git-lfs.com/
https://github.com/git-lfs/git-lfs/blob/main/INSTALLING.md
https://github.com/intel/libvpl/blob/main/INSTALL.md
https://github.com/intel/vpl-gpu-rT
Wrong tentative
- https://github.com/intel/gmmlib
- cd gmmlib/
- mkdir build && cd build
- cmake -DCMAKE_BUILD_TYPE=Release ..
- make -j"$(nproc)"
- sudo make install
- Questo installa /usr/local/lib/libigdgmm.so.12.6.0
- LIBVA:
- conan@lana:~/src/libva$ cat /etc/environment
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"
CFLAGS="-march=native -mtune=native"
CXXFLAGS="-march=native -mtune=native"
LD_LIBRARY_PATH=/usr/local/lib:${LD_LIBRARY_PATH} - git clone https://github.com/intel/libva.git
- cd libva
- ./autogen.sh --libdir=/usr/lib/x86_64-linux-gnu
- make -j$(nproc)
- sudo make install
- conan@lana:~/src/libva$ cat /etc/environment
- Intel Media Driver for VAAPI
- in ~/src perform mkdir media-driver-wks
- cd media-driver-wks
- git clone https://github.com/intel/media-driver.git
- mkdir build-media
- cd build-media/
- old driver: -rw-r--r-- 1 root root 13589472 Dec 29 2023 /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
- cmake ../media-driver
- make -j"$(nproc)"
- sudo make install
- new driver: -rwxr-xr-x 1 root root 482637000 Dec 27 11:16 /usr/lib/x86_64-linux-gnu/dri/iHD_drv_video.so
- git clone https://github.com/intel/vpl-gpu-rt vpl-gpu-rt
- cd vpl-gpu-rt
- mkdir build && cd build
- cmake -DCMAKE_C_FLAGS_RELEASE="-march=native -mtune=native -O3 -DNDEBUG" -DCMAKE_CXX_FLAGS_RELEASE="-march=native -mtune=native -O3 -DNDEBUG" ..
- make -j"$(nproc)"
- sudo make install