NVIDIA 3090 利用HSOpticalFlow代码测试docker GPU性能损失
docker介绍图如下:
形象生动展示了他们之间的关系
今天要测试docker容器运行HSOpticalFlow算法的性能损失,包括CPU和GPU
上一篇博客
http://t.csdnimg.cn/YW5kE
我已经介绍了使用docker和nvidia containers toolkit使用容器复现的过程,加入计算时间的代码页贴出来了:
http://t.csdnimg.cn/InxW0
这篇文章与docker中的运行速度做比较
docker里运行速度:
root@04feecd3dc8a:/workspace/cuda-samples-master/Samples/5_Domain_Specific/HSOpticalFlow# ./HSOpticalFlow
HSOpticalFlow Starting...
GPU Device 0: "Ampere" with compute capability 8.6
Loading "frame10.ppm" ...
Loading "frame11.ppm" ...
Computing optical flow on GPU...
GPU Processing time: 36.567680 ms
Computing optical flow on CPU...
CPU Processing time: 10927 ms
L1 error : 0.044308
docker外运行速度:
yhp1szh@SZH-C-006RW:/mnt/workspace/xiebell/pytorch2404/cuda-samples-master/Samples/5_Domain_Specific/HSOpticalFlow$ ./HSOpticalFlow
HSOpticalFlow Starting...
GPU Device 0: "Ampere" with compute capability 8.6
Loading "frame10.ppm" ...
Loading "frame11.ppm" ...
Computing optical flow on GPU...
GPU Processing time: 35.669601 ms
Computing optical flow on CPU...
CPU Processing time: 9411 ms
L1 error : 0.044308
性能损失计算方法
性能损失可以通过以下公式计算:
具体计算
对于 GPU:
- Docker 内时间:36.567680 ms
- Docker 外时间:35.669601 ms
对于 CPU:
- Docker 内时间:10927 ms
- Docker 外时间:9411 ms
结论
从您提供的数据来看,使用 Docker 导致的性能损失在 GPU 上相对较小,约为 2.52%,而在 CPU 上则较为显著,约为 16.07%。这种差异可能由多种因素导致,包括但不限于:
- 资源隔离和限制:Docker 容器通常在 CPU 资源使用上有一定的限制,尤其是在默认配置下。
- 虚拟化开销:虽然 Docker 使用的是操作系统级虚拟化,开销较传统虚拟机小,但在大量计算密集型任务中仍可能存在性能影响。
- 系统调度和资源竞争:容器内的应用与宿主机上的其他进程共享 CPU、内存等资源,可能会因为资源竞争而导致性能下降。
这些结果有助于理解在实际部署和开发中使用 Docker 容器可能带来的性能考量,尤其是在进行大规模计算时。针对具体应用,可能需要进一步调整 Docker 的资源配置或优化应用的性能,以减少这种性能损失。