NVIDIA Tesla P4亲测:货真价实的高科技与狠活儿(2)

2022-10-09 10:40:29 浏览数 (1)

接上一篇:NVIDIA Tesla P4亲测:货真价实的高科技与狠活儿(1)

下面开始实验部分:

PART

01

DeviceQuery测试

DeviceQuery Test

PART

02

显存带宽测试

BandwidthTest

在虚拟机里实测显存读写143.8GB/s,跨PCIE为10.6GB/s,这个结果还可以。

PART

03

深度学习模型训练

环境介绍:

框架:pytorch

模型:yolov5s

数据集:coco128

BatchSize:16

ImageSize:640

Epochs:300

加8cm风扇侧吹,训练耗时0.7个小时,温度稳定88度,核心频率800~900MHz,基本稳定,可以看出散热压力还是大。

我手头没有性能相近的其他显卡,也没T4,但是有2080,同参数下,2080跑完训练耗时为0.155小时,但是此成绩不能代表T4成绩,因为T4也有功耗75W和被动散热的限制。不过我觉得0.7个小时其实还好。

同参数下,3080的耗时为0.11个小时,3090的耗时为0.1个小时。

未对其他模型进行进行测试,不过在其他卡上我有不同模型的详细测试数据,需要注意的是,模型训练过程中,会卡7611显存容量大小,比如将bs设置成32的话,或者模型yolov5l,imagesize设置成1024 都会吃掉7.9GB左右的容量,这个时候,开启ECC无法训练,但是关闭ECC却可以。

PART

04

深度学习模型推理

我们直接采用yolov5s模型,trtexec 转onnx模型,得到的测试结果作为推理耗时:

FP32推理:

Yolo V5s Inference Performance -FP32

单帧推理约8ms,按40ms的时间检测,约能支持5路视频实时推理。

如果换成INT8,结果如下:

Yolo V5s Inference Performance -INT8

约4.1ms,差不多快了一倍,约能支持10路视频实时推理。

由于手头的其他显卡成绩都比这个性能强很多,不拿其他显卡做对比测试,而选用Jetson系列的产品作为对比测试:同模型Jetson Nano的推理时间为96ms左右,Jetson Xavier NX推理时间为15ms。这个推理成绩其实还不错。

PART

05

视频编码性能测试

使用ffmpeg进行编码性能测试,编码参数:

ffmpeg -vsync 0 -hwaccel cuvid -c:v h264_cuvid -i test.mp4 -c:v h264_nvenc -preset slow -profile main -qp 20 output.mp4

frame=14427 fps=344 q=19.0 size= 231168kB time=00:16:49.66 bitrate=1875.6kbits/s speed= 24.1x

nvidia-smi dmon results for single video encoding

可以看到编码速度344fps,encoder芯片利用率约为50%,同时再跑一路:

frame= 8914 fps=238 q=19.0 size= 142848kB time=00:10:23.74 bitrate=1876.1kbits/s speed=16.6x

nvidia-smi dmon results for two videos encoding

功耗略微增加,视频编码硬核编码速度为332 238约570fps,编码硬核只有70%利用率,解码硬核已经100%了,将第二路的视频解码换成CPU继续测试。

ffmpeg -vsync 0 -i testencoder.mp4 -c:v h264_nvenc -preset slow -profile main -qp 20 output22.mp4

frame=10883 fps=339 q=19.0 size= 174336kB time=00:12:41.72 bitrate=1874.9kbits/s speed=23.8x

frame= 9504 fps=266 q=19.0 size= 152320kB time=00:11:05.47 bitrate=1875.1kbits/s speed=18.7x

总共约339 266 = 605fps的编码速率,编码硬核利用率约90%,功耗约为30W。

nvidia-smi dmon results for two videos encoding with CPU decoding

ffmpeg -vsync 0 -hwaccel cuvid -c:v h264_cuvid -i testencoder.mp4 -c:v h264_nvenc -preset faster -profile main -qp 20 output.mp4

frame= 8932 fps=427 q=19.0 size= 150784kB time=00:10:25.02 bitrate=1976.3kbits/s speed=29.9x

frame=10908 fps=322 q=19.0 size= 184064kB time=00:12:43.77 bitrate=1974.2kbits/s speed=22.5x

nvidia-smi dmon results for two videos encoding with CPU decoding

改用preset fast 可以达到427 322 = 749fps的速度,利用率依然不到100%,功耗总共30W。

还可以改变参数继续测试,但是我认为已经没什么必要了,可以看出编码速度非常非常快,甚至解码速度都赶不上编码速度(只有一个解码硬核,而有两个编码硬核)。不过我们需要注意的是,这时的功耗,单路视频编解码时,功耗为28W,我个人认为这个是启动功耗,也即基础开销,这28W是显存、GPU核心等单元共同使用的,再增加一路视频编码,功耗为30W,说明增加的那一路视频编码功耗只高了2W,这样两颗编码硬核功耗就约为4W,能提供约800fps的编码速度,这个能效比还是很好的,同时需要注意,编码时sm一样有利用率,说明利用GPU编解码视频时,执行推理时就无法利用全部的CUDA Core理论性能。开nvidia-cuda-mps-control -d后,能普通CUDA计算,和转码几乎同时压满(需要一点点小技巧,CUDA计算创建流的时候用cudaStreamCreateWithPriority(), 选低优先级计算即可(传输参数0)。

PART

06

B帧对HEVC编码成品体积影响

最后我们来简单测试下B帧对HEVC编码体积的影响,由于P4不支持HEVC B Frame,因此这个测试是在3090上做的,做这个测试的目的是为了探讨不支持HEVC B Frame是否非常影响最终编码体积。

测试环境为监控摄像头,其他参数一致的情况下,我们记录180秒监控视频,来对比两者体积变化。视频动态非常小,几乎为静止画面。

关闭B帧:

ffmpeg -vsync 0 -i testencoder.mp4 -c:v hevc_nvenc -preset fast -b_ref_mode 0-t 180 output33.mp4fps = 826

编码视频体积 46.4MB

指定b_ref_mode为2:

ffmpeg -vsync 0 -i testencoder.mp4 -c:v h264_nvenc -preset fast -b_ref_mode 2 -t 180 output22.mp4

fps = 868

编码视频体积46.4MB

同参数下选用h.264编码:

ffmpeg -vsync 0 -i testencoder.mp4 -c:v h264_nvenc -preset fast -t 180 output33.mp4

fps = 816

编码视频体积 45.5MB

可以看出,这个B Frame的支持,对成品体积控制而言,几乎没什么效果。但是根据另一位工程师反映,同样的参数,使用B帧能在30系上能小10-20%体积。

总结

这张卡早已经退市,目前二手市场价格为500元左右,甚至批量买500张,可以低到300/张,性能测试下来,其实也不错,一些特性直至今天用依然非常够用,包括性能。尤其是考虑到半高单槽,这个价格应该没有性价比更高的,包括A卡在内。问题也有两点,一是散热很不好做,容易碰到过热降频;二是没有显示输出,显卡3060矿卡价格大概是800元左右了,性能要比这个好很多,除非是限制了只能半高单槽。3060是有显示输出的,不需要再外接亮机卡。可能也有人担心3060是矿卡,寿命应该不长,但是挖矿消耗的是显存、供电等周边设备,这种数据中心的卡,不仅7x24小时耗显存、供电,同时还耗核心,核心也都是一直满载的,当然机房的环境肯定是比矿场好很多的,所以也难说这种卡和矿卡谁先挂。

0 人点赞