一、异构计算简介
1、集成显卡
众所周知,intel很多CPU包含有GPU,GPU和CPU将图像处理单元集成在同一芯片上,CPU通常包含多个内核,并且GPU也会集成在相同的芯片中,如果在同一个芯片上,CPU和GPU可以实现更快地进行相互间通信。如果使用CPU和GPU的异构代码,那将会同时运行CPU和GPU。
2、独立GPU
独立GPU可以通过PCIe与CPU进行通信,GPU的可用内存量、CPU和GPU的内存带宽和速度都会影响数据通信的效率。
3、异构计算
3.1 异构计算目标
发挥系统最大性能,包括最高的FPS和最快的响应速度,或压缩尽可能多的待处理视频。
3.2 需考虑因素
(1)了解哪个设备可以更好地快速地和更高效地运行工作负载的哪个部分,根据需求来设计一款最高效的异构计算系统。
举例:以CPU进行推理,将VPU工作负载的部分在CPU上运行,确保CPU的加速器之间的数据传输不会成为性能瓶颈。
(2)考虑如何最大程度地减少数据的传输。
- 第一种方式:CPU将压缩后的视频流发送到GPU,然后取回压缩好的RAW视频,再将这些视频数据交给VPU进行推理;
- 第二种方式(此方式更高效):将压缩后的数据传输给GPU,GPU将生成的原始视频直接发送到VPU进行处理。
这样做的话,则需要CPU、GPU、VPU保持同步。
(3)所有设备保持同步。
二、其他说明
1)对于不同版本的集成显卡,各自都有不同的特性和性能。
2)对于Intel独立GPU,其将提供给游戏、视频流处理、AI等更强大的性能,并拥有用于加速视频处理的固定功能。
使用Media SDK可以帮助intel GPU 最高效地进行视频处理,对于硬件特例和操作系统特定选项,如Libva、DXVA等视频加速提供最底层的控制,但也要能影响底层系统间可一致性的底层应用程序。