ESXi6.7 centos6 直通英睿达GPU,并编译ffmpeg

直接安装ffmpeg,是不能用显加速的

CentOS 7

sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro

sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm

CentOS 6

sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro

sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el6/x86_64/nux-dextop-release-0-2.el6.nux.noarch.rpm

直接装FFmpeg 和 FFmpeg开发包

sudo yum install ffmpeg ffmpeg-devel -y<br />

 
 安装yasm
# wget http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz
# tar zxvf yasm-1.3.0.tar.gz
# cd yasm-1.3.0
# ./configure
# make && make install
 
 
 
对于驱动去要更新的,可以这样操作
sudo rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
sudo rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm
安装显卡检查程序:
 
sudo yum install nvidia-detect
检测显卡型号,并选择对应的驱动:
 
$ nvidia-detect -v
Probing for supported NVIDIA devices...
[10de:06dd] NVIDIA Corporation GF100GL [Quadro 4000]
This device requires the current 346.47 NVIDIA driver kmod-nvidia
根据 nvidia-detect 的输出信息,可以知道显卡的型号,以及要使用的驱动版本 346.47 。
 
安装显卡驱动
若驱动版本为 304.xx,则安装 304xx 版本:
 
sudo yum install nvidia-x11-drv-304xx nvidia-x11-drv-304xx-32bit
若驱动版本为 340.xx,则安装 340xx 版本:
 
sudo yum install nvidia-x11-drv-340xx nvidia-x11-drv-340xx-32bit
对于大多数比较新的显卡来说,直接安装最新版的驱动即可:
 
sudo yum install nvidia-x11-drv nvidia-x11-drv-32bit
安装过程中可能会给出软件冲突的警告,需要卸载以下软件包及其依赖:
 
sudo yum remove xorg-x11-glamor
重启
 
如果是7,有可能会提示缺少openal
可以先安装第三方源
yum install -y epel-release rpm
下面进入正题

ESXi 准备工作,我是一张1080显卡和一个核显。核显被我从bios直接关闭

1.在VM的配置文件增加

hypervisor.cpuid.v0 = "FALSE"

基础依赖包

yum install -y git yasm gcc perl freetype-devel kernel-devel-$(uname -r) kernel-headers-$(uname -r)

安装CUDA

我安装的是10.1

https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&target_distro=CentOS&target_version=6&target_type=rpmlocal

  1. rpm -i cuda-repo-rhel6-10-1-local-10.1.168-418.67-1.0-1.x86_64.rpm
  2. yum clean all
  3. yum install cuda

执行第三步时,提示缺少libvdpau和dkms,谷歌,装之

yum install epel-release

yum install -y dkms libvdpau

重新执行

yum install cuda

进过漫长的等待,cuda安装结束。

验证安装结果,运行nvcc -V,结果提示没命令不存在,原因是没有加到path,加之(官方的程序也不靠谱啊,哭死)

echo 'export PATH=/usr/local/cuda-10.1/bin:$PATH' >> ~/.bashrc

echo 'export LD_LIBRARY_PATH=/usr/local/cuda-10.1/lib64:$LD_LIBRARY_PATH' >> ~/.bashrc

source ~/.bashrc

继续验证,通过

继续输入命令

nvidia-smi

应该会显示一个表

如果结合watch命令,可以拿来监控显卡工作情况

watch -n 1 nvidia-smi

试一下官方的例子

进入目录

cd /usr/local/cuda-10.1/samples

输入命令 make,要等好久,虚拟机,有点慢......

编译完成后测试 
进入/usr/local/cuda-10.1/samples/bin/x86_64/linux/release
运行deviceQuery程序,./deviceQuery 
查看输出结果,重点关注最后一行,Pass表示通过测试。

开始编译ffmpeg

参考官方文档https://developer.nvidia.com/ffmpeg

我创建了目录/data, 先clone 2个仓库到本地

cd /data

git clone https://github.com/libav/libav

编译,没什么问题

git clone https://git.ffmpeg.org/ffmpeg.git

又是漫长的等待,还重试了好几次,天朝的开发者真是痛苦,编译之

提示ERROR: cuda requested, but not all dependencies are satisfied: ffnvcodec

在官方路径探找到答案

git clone https://git.videolan.org/git/ffmpeg/nv-codec-headers.git

cd nv-codec-headers

make

make install

export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig" 

再重新编译ffmpeg

./configure --enable-cuda --enable-cuvid --enable-nvenc --enable-nonfree --enable-libnpp --enable-libfreetype --extra-cflags=-I/usr/local/cuda/include --extra-ldflags=-L/usr/local/cuda/lib64

make -j4

make install

原因是官方好像由于某种原因移除了一些文件,不重要啦!

 最后,测试一下啦

ffmpeg -y -hwaccel cuvid -c:v h264_cuvid -vsync 0 -i <input.mp4> -vf scale_npp=1920:1072 -vcodec h264_nvenc <output0.264> -vf scale_npp=1280:720 -vcodec h264_nvenc <output1.264>

试了一下,ffmpeg硬件编码,最终speed=23.5x

若提示共享库找不到,可以自己添加

在/etc/profile中添加共享库的路径:

export LD_LIBRARY_PATH=/usr/local/cuda/lib64

生效source ~/.bashrc

相关推荐